为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

PWM电流有效值的检测

2019-01-14 50页 doc 188KB 122阅读

用户头像

is_963767

暂无简介

举报
PWM电流有效值的检测大连海事大学 ┊┊┊┊┊┊┊装┊┊┊┊┊┊┊订┊┊┊┊┊┊┊线┊┊┊┊┊┊┊ 毕 业 论 文 二 ○ ○ 七  年  六  月 PWM逆变器电流有效值的检测 专业班级: 电气工程及其自动化一班          姓    名:  xxxx          指导教师:  xxxxxx        自动化与电气工程学院 摘要 随着社会生产力的迅猛发展,先进电子技术的不断出现,电子设备的应用领域变的越来越广泛,用电设备的种类也越来越多,对电的需求越来越多,对控制技术的要求也越来越高,而要实现精确的控制,对电流的检测就...
PWM电流有效值的检测
大连海事大学 ┊┊┊┊┊┊┊装┊┊┊┊┊┊┊订┊┊┊┊┊┊┊线┊┊┊┊┊┊┊ 毕 业 论 文 二 ○ ○ 七  年  六  月 PWM逆变器电流有效值的检测 专业班级: 电气工程及其自动化一班          姓    名:  xxxx          指导教师:  xxxxxx        自动化与电气工程学院 摘要 随着社会生产力的迅猛发展,先进电子技术的不断出现,电子设备的应用领域变的越来越广泛,用电设备的种类也越来越多,对电的需求越来越多,对控制技术的要求也越来越高,而要实现精确的控制,对电流的检测就是其中重要的一部分。目前,社会上逆变器的产品以SPWM控制式为主,本文就是检测PWM逆变器电流的有效值,第一部分介绍了逆变器的发展史,逆变器的分类以及PWM逆变器的工作原理,第二部分介绍了本论文的原理,接着简单介绍了各个主要电路的原理,第三部分介绍了电流检测的分类,以及电流检测元件的分类,本文检测电路的原理,本文研究的检测电路采用了精密互感器检测电流,并将电流信号转换成电压信号,用精密整流电路将交流电压的负半周翻转到坐标轴以上,送到单片机的C0通道进行模数转换。第四部分首先简单介绍了AVR单片机的结构特点,其次介绍了本文主程序的,然后分模块介绍了模数转换、发SPWM波和显示程序的流程图。本文利用了AVR自带的模数转换功能,将送到单片机的电压值模数转换,并根据电流有效值定义计算出有效值,在LED中显示出来。利用定时器的PWM 功能,发出两路SPWM波.第五部分对本论文进行。 关键词: PWM逆变器 电流有效值 AVR单片机 ABSTRACT Along with the rapid social development of the productivity, advanced electronic technologies continue to emerge. Application of electronic equipment field becomes increasingly wide, and the variety of electrical equipment have had more and more demands because of electricity growing, control technologies are increasingly high requirements, and to achieve the precise control, the current detection is an important part. At present, there are inverter products to SPWM controlled mainly, This paper is the detection of PWM inverter current RMS, the first part on the inverter's history of development, the classification of inverter, and the principle of PWM inverter, the second part is the principle of the system, then a brief introduction of each of the major circuit theory, the third part is the current detection classification, Current detection and classification of components, the current detection circuit theory, The detection circuit employs sophisticated current transformer and current signal is converted into voltage signals Precision rectifier circuits reversed over AC voltage to the negative half-cycle of the axes , and the C0 channel for analog-to-digital conversion . Part IV the first simply introducing the structure of AVR, followed by the introduction of this process flowchart, then sub-module on the analog-to-digital conversion, the SPWM and display process flowchart , the value of the voltage which is sent to AVR would Convert into a digital , and under the current RMS definition calculate RMS . Make use of the timer the PWM function of the AVR, send out two SPWM waves. The last part carries on summary to this paper. Keywords : PWM inverter  current RMS  AVR  目录 第一章 前言    1 1.1 逆变器发展史    1 1.2 逆变器的分类.    1 1.3、PWM控制技术    2 1.3.1.PWM控制的基本原理    2 1.3.2  SPWM控制的基本原理    3 第二章 系统原理及组成    6 2.1 系统硬件框图    6 2.2 主要组成电路    6 2.2.1 滤波整流电路    6 2.2.2 逆变电路    7 2.2.3 驱动电路    9 第三章 电流有效值的检测    11 3.1 检测的分类    11 3.1.1 电阻检测和磁检测    11 3.1.2 电流检测元件    13 3.2 电流有效值的检测    14 3.2.1 有效值    14 3.2.2 检测电路    15 第四章 基于单片机的软件设计    18 4.1  AVR系列单片机简介    18 4.1.1 ATmega8特点    18 4.1.2  ATmega8单片机的指令系统    21 4.2基于AVR单片机PWM逆变器电流有效值的检测软件设计    21 4.2.1主程序流程图    21 4.2.2 AD转换    22 4.2.3 显示    23 4.2.4  SPWM波产生    24 第五章 实验与总结    30 5.1 单片机发出两路SPWM波形    30 5.2检测的电流数据    30 5.3 总结    30 参考文献    31 致谢    32 附录A    33 第一章 前言 1.1 逆变器发展史 所谓逆变器,是指整流(又称顺变)器的逆向变换装置。其作用是通过半导体功率开关器件(例如SCR,GTO,GTR,IGBT和功率MOSFFET模块等)的开通和关断作用,把直流电能变换成交流电能,因此是一种电能变换装置。 逆变器的应用非常广泛。在已有的各种电源中,蓄电池、干电池、太阳能电池等都是直流电源,当需要向交流负载供电时,就需要逆变电路。另外交流电机调速用变频器、不间断电源、感应加热电源等电力电子使用非常广泛,其电路的核心都是逆变电路。 逆变器的原理早在1931年就在文献中提到过。1948年,美国西屋电器公司用汞弧整流器制成了3000Hz的感应加热用逆变器。 1947年,第一只晶体管诞生,固态电力电子学随之而诞生,1956年,第一只晶闸管问世,这标志着电力电子学的诞生,并开始进入传统发展时代。在这个时代,逆变器继整流器之后开始发展。首先出现的是SCR电压型逆变器。1961年,W.McMurray与B.DBedford提出了改进型SCR强迫换向逆变器,为SCR逆变器的发展奠定了基础。1960年以后,人们注意到改善逆变器波形的重要性,并开始了进行研究。1962年,A.Kernick提出了“谐波中和消除法”。1963年,F.G.Turnbull提出了“消除特定谐波法”,为后来的优化PWM法奠定了基础,以实现特定的优化目标,如谐波最小,效率最优,转矩脉动最小等。 20世纪70年代后期,可关断晶闸管GTO,电力晶体管GTR及其模块相继实用化,80年代以来,电力电子技术与微电子技术相结合,产生了各种高频化的全控器件,并得到了迅速发展,如功率场效应管Power MOSFET、绝缘门极晶体管 IGT或IGBT、静电感应晶体管SIT、静电感应晶闸管SITH、场控晶闸管MCT,以及MOS晶体管MGT等。这就是电力电子技术由传统发展时代进入到高频时代。在这个时代,具有小型化和高性能特点的新逆变器技术层出不穷,特别是脉宽调制波形改善技术得到了飞速的发展。 1964年,由A.Schonung和H。Stemmler提出的把通信系统调制技术应用到逆变技术中的正弦波脉宽调制技术(SPWM),由于当时开关器件的速度慢而未的到推广。直到1975年才有Bristol大学的S.R.Bowes等把spwm技术正式应用到逆变技术中,使逆变器的性能大大提高,并得到了广泛的应用和发展。此后,各种不同的pwm技术相继出现。 一般认为,逆变技术的发展可以分成如下两个阶段: 1956~1980年为传统发展阶段,这个阶段的特点是,开关器件以低速器件为主,逆变器的开关频率较低,波形改善以多重叠加法为主,体积重量较大,逆变效率低,正弦波逆变器开始出现。 1980年到现在为高频化新技术阶段,这个阶段的特点是,开关器件以高速器件为主,逆变器的开关频率较高,波形改善以pwm法为主,体积重量较小,逆变效率高,正弦波逆变技术发展日趋完善。 1.2 逆变器的分类. 目前,逆变器根据其结构形式和工作原理,大致可以分为以下五类: (1)多重化逆变器。最初的多重化逆变器是用来将几个方波逆变器的输出通过变压器按照一定的规律组合起来形成阶梯波输出,以削弱谐波含量,提高装置容量。这种逆变器主要用于三相系统,具有器件开关频率低、系统效率高、控制简单等优点。但其输出波形较其后来发展起来的SPWM逆变器差的多,且难以通过闭环调节予以校正。目前,在大容量的SPWM逆变器中,仍有采用多重化技术进一步提高容量、削弱谐波的例子。 (2)PWM逆变器。PWM逆变器通过控制开关器件产生一系列等幅(可正可负—)、不等宽的恒频脉冲来逼近正弦波,再采用滤波网络滤除该脉冲列中的高频成分,获得正弦度较高的输出。PWM技术大多基于傅立叶周期信号分解理论,预见性好,且原理直观,便于实现。PWM逆变器具有系统简洁、技术成熟、动态响应快及适应性强等显著特点,因而应用极为广泛。随着数字技术的发展,PWM技术还有着广阔的发展空间。 (3)三电平逆变器。所谓三电平逆变器,是指其逆变桥中每一桥臂的中点均能输出三种电平的逆变器。若以逆变桥输入电压的一半E/2为基准电压,则这三种电平分别是+E/2、0、-E/2。对于单相逆变器,三电平逆变器与通常的二电平逆变器的主电路的结构上并没有什么区别,只是在控制上二电平逆变器采用双极性SPWM,而三电平逆变器采用的是单极性SPWM。对于三相逆变器,三电平逆变器则需要在普通的二电平逆变器的基础上添加若干辅助开关管,并采用独特的三电平PWM控制理论。此时,三电平逆变器可获得降低开关管耐压及开关频率等优点,因而适合于高电压、大容量的GTO逆变电源。 (4)谐振软开关逆变器。为了进一步改善PWM逆变器的动态响应性能,减小滤波器的尺寸,需要从根本上减小器件的开关损耗,提高开关频率。这样,就发展了各种类型的谐振软开关逆变器。其中,由结实型谐振直流环(RDCL)和零电压转换PWM逆变桥(ZVT-PWM)级连构成的组合式逆变器,器件的开关应力能得到有效的限制,而且接触了谐振直流环节和后续逆变桥控制上的耦合关系,能充分发挥高频PWM控制技术的有时。目前,该类逆变器在小容量、高性能逆变电源中已得到初步应用。其缺点主要在于,附加功率器件较多,循环能量大。 (5)高频链逆变器。在输入、输出需要进行电气隔离的逆变电源中,变压器的设置是必不可少的。SPWM逆变器中采用的以输出电压频率工作的工频或中频变压器,体积庞大,往往是阻碍其向小型化、轻量化方向发展的主要障碍。因变压器的体积同其工作频率成近似反比的关系,故若能采用高频变压器进行电气隔离,就能显著地减小装置的体积和重量。高频链逆变器的基本原理就是通过设置中间高频链逆变环节,采用高频变压器进行电气隔离,再将此高频交流电变换成所需频率的交流输出。目前已发展出多种拓扑结构的高频链逆变器 1.3、PWM控制技术 1.3.1.PWM控制的基本原理 在采样控制理论中有一个重要的结论:冲量相等而形状不同的窄脉冲加在具有惯性环节上时,其效果基本相同。冲量即指窄脉冲的面积。这里所说的效果基本相同,是指环节的输出响应波形基本相同。如果把各输出波形用傅立叶变换分析,则其低频段非常接近,仅在高频段略有差异。例如图1.1所示的三个窄脉冲形状不同,其中图1.1a为矩形脉冲,b为三角形脉冲,c为正弦半波脉冲,但他们的面积(即冲量)都等于1,那么当它们分别加在具有惯性的同一个环节上时,其输出响应基本相同。当窄脉冲变为图1.1d的单位脉冲函数 时,环节的响应即为该环节的脉冲过渡函数。 图1.1 形状不同而冲量相等的各种窄脉冲 把图1.2的正弦半波分成N等份,就可以把正弦半波看成是N个彼此相连的脉冲序列所组成的波形。这些脉冲宽度相等,都等于π/N,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序列利用相同数量的等幅而不等宽的矩形脉冲代替,是矩形脉冲的钟点和相应正弦波部分的中点重合,且使矩形脉冲和相应的正弦部分面积相等,就得到图1.2b所示的脉冲序列。这就是PWM波形。可以看出,各脉冲的幅值相等,而宽度是按正弦规律变化的。根据面积等效原理,PWM波形和正弦半波是等效的。对于正弦半波的负半周,也可以用同样的方法得到PWM波形。想这种脉冲的宽度按正弦规律变化而和正弦波等效的PWM波形,也称SPWM波形。 图1.2 用PWM波代替正弦半波 1.3.2  SPWM控制的基本原理 采用调制的方法,得到各脉冲的宽度和间隔。即把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形。 采用等腰三角波作为载波。因为等腰三角波上下宽度与高度成线性关系且左右对称,当它与任何一个平缓变化的调制信号相交时,如在交点时刻控制电路中开关器件的通断,就可得到宽度正比于信号波幅值的脉冲。 当调制信号为正弦波时,就可得到各宽度正比于相应时刻的正弦波幅值的脉冲。当调制信号不是正弦波时,也可得到与调制信号等效的PWM波形。 调制法可分为单极性PWM控制方式和双极性控制方式。 图1.3单相桥式PWM逆变电路 单极性控制方式:在信号波的半个周期内三角载波只在正极性或负极性一种范围内变化,得到的PWM波形也只在单极性范围内变化。如图1.3.是单相桥式逆变电路。负载为阻感负载,V1和V2工作的通断状态互补,V3和V4的通断状态也互补。控制V3和V4的通断状态的方法如图1.4所示。调制信号ur为正弦波,载波uc在ur的正半周为正极性的三角波,在ur的负半周为负极性的三角波。在ur和uc的交点时刻控制IGBT的通断,在ur的正半周,V1保持通态,V2保持断态,当ur>uc时使V4导通,V3关断,uo=Ud; 当uruc时使V3关断,V4导通,uo=0。这样就得到SPWM波形uo。 双极性控制方式:在信号波的半个周期内,三角载波不是单极性的,而是有正有负,所得到的PWM波也是有正有负。如图1.5所示。 图1.4单极性PWM控制方式 图1.5双极性PWM控制方式 第二章 系统原理及组成 2.1 系统硬件框图 图2.1 系统硬件框图 主电路 从交流侧电网输入、逆变的全过程,包括: 滤波整流电路:其作用是讲电网存在的杂波滤除,并将电网的交流电直接整流为所需要的直流电。 驱动电路:用于驱动MOSFET管,使逆变器工作  显示电路:显示通过单片机把采样AD转换后并计算出的电流的有效值 检测电路:检测逆变器的电流瞬时值,提供给单片机 微机机控制电路:通过单片机完成各个输入、输出数量之间的关系。将检测电路送来的模拟电压,进行模数转换,计算出有效值,送给显示电路。 2.2 主要组成电路 2.2.1 滤波整流电路 其电路图如下 图2.2整流电路图 整流、滤波环节所使用的器件为:整流桥模块B,型号为KBPC3510,其等为1000V/35A。电解电容 C1= C2,容量等级为470uf/500V。将220V交流电整流为直流电。 2.2.2 逆变电路 其电路图如下: 图2.3逆变电路 逆变主电路就是由逆变开关器件等组成的变换电路,主要有三种形式,即半桥式、全桥式、推挽式。下面对这三种形式的电路分别进行分析。 (1)半桥式逆变电路。原理如图2.4.所示。当两只开关管S1, S2都截止时,若两只电容相等,即C1= C2,则在两电容中点A的电压为输入电压的一半,即VC1= VC2= Vd/2。当S1导通时,电容C1将通过S1和负载放电,同时电源电压Vd通过S1和负载放电为电容C2充电,中点A的电位将有所上升;当S1导通结束时,两只开关管S1、 S2又都截止,它们的端电压又都回到输入电压的一半,即Vd/2。当S2导通时,S1截止,电容C1被充电,C2放电,A点的电位下降;S2导通结束后,又回到S1, S2都截止的状态。在半桥逆变电路中,当开关管由导通变为截止时,负载(感性)和引线电感上贮存的能量释放会使开关管两端除了承受电压Vd/2之外,还要承受较高的尖峰电压,但由于二极管的D1、D2的钳位作用,开关管的端电压最高为 Vd 图2.4 半桥逆变电路                          图2.5全桥逆变电路 (2)全桥逆变电路。原理如图2.5所示。全桥逆变电路与半桥逆变电路 的区别就是,用另外两只同样的开关管代替两只电容,全桥逆变电路的工作需要两组相位相反的驱动脉冲分别控制两对开关管,具体说就是S1和S4同时通断,S2和S3同时通断。当S1和S4同时导通时,S2 和S3截止,负载电压为下正上负的Vd;反之,当S2和S3同时导通时,S1 和S4截止,负载电压为上正下负的Vd。在4只开关管都截止的死区时间内,开关管端电压和电压尖峰和半桥逆变电路类似。开关管刚刚导通时的电流尖峰也和半桥逆变电路类似。 (3)推挽电路。原理如图2.6所示。推挽电路的工作是由两路相位相反的驱动脉冲分别加到逆变开关管S1、S2的基极,控制它们交替通断,输入直流电压被变换成高频的方波交流电压经变压器输出。当S1导通时,S2截止,输入电压Vd加在变压器T原边绕组N1上,由于变压器有两个N1绕组,且匝数相同,所以在S2上将施加两倍的电源电压,即2 Vd。当驱动脉冲结束后(死区时间),两只开关管都截止,端电压都为Vd。当S2导通时,同理,S1截止,在S1上将施加两倍的电源电压。不难看出,推挽变换器是两个正激变换器的组合,这两个正激变换器的开关管轮流导通,故变压器铁心是交变磁通。 图2.6推挽逆变电路 下面就以上三种逆变电路进行简单比较。 半桥逆变的主电路所用的开关器件少,开关管的端电压也不高,半桥式拓扑抗不平衡能力很强,但桥臂可能出现直通现象,功率管承受电源电压,流过两倍的输入电流,在中小功率的逆变器中可以得到广泛应用。    全桥式电路开关管电压不高,输出功率大,功率管承受电源电压,流过输入电流。但全桥变换器功率器件较多,控制及驱动较复杂,并且桥臂也可能出现直通现象。比较适合大功率场合。 推挽式电路用的开关器件少,驱动电路简单,变压器一次侧电流回路中只有一个开关通态损耗小。变压器铁芯双向磁化,相同铁芯尺寸下,推挽电路能够比正激式电路输出更大的功率。但是开关管要承受两倍输入电压,适用于原边电压比较低的功率变换器。且电路必须有良好的对称,否则容易引起直流偏磁导致铁芯饱和。另外,变压器绕组必须紧密耦合,减小漏感,从而降低功率管的关断电压尖峰,这提高了变压器绕制工艺的要求以及对所用功率器件电压定额的要求。 实验中可采用半桥式逆变电路。 2.2.3 驱动电路 驱动电路可选用IR公司IRG4PC50U型IGBT作为开关电路的开关管,该开关管属于电压控制型器件。目前,市场上所常用的集成驱动电路很多。根据实际设计要求,驱动SPWM脉冲频率为20KHz,并且要与单片机进行隔离,因此,可选用SHARP公司的PC923型高速光耦MOSFET/IGBT驱动芯片(High Speed Photocoupler For MOSFET/IGBT Drive)。该型号芯片外观及内部结构如图2.7所示,(单位:mm)。PC923具体参数为:(1)工作电压 :15V-30V;(2)输出电流 =0.4A;(3)最快响应时间为0.5us。 图2.7 PC923 其外部接线电路如图2.7所示。①脚与④脚悬空;②脚为输入信号正端,③脚为负端;⑤脚与⑧输入工作电压;⑥脚为输出端,输出信号经限流电阻后接到开关管的基极;⑦脚接地。同时,电容 、 的作用是将工作电压 进行分压,两电容中间端接到开关管的发射极,这样就可以在开关管关断过程中为其提供一个反向的电压,从而保证开关管的可靠关断。 图2.8 外部接线图 综上所述,PC923的主要作用就是为开关管提供可靠的驱动信号,并且实现了开关电路与控制电路的光电隔离,提高了系统的安全性。 第三章 电流有效值的检测 3.1 检测的分类 3.1.1 电阻检测和磁检测 随着科技及信息技术的发展,人们对控制的要求越来越高,越来越准确,而对控制有着重要作用的就是:电流的检测。通常电流检测分为两类:电阻检测和磁检测。 电阻检测 其检测原理如图3.1所示在理想状态下,被检测电流I 流过检测电阻RS时,由欧姆定律可得V = I ×Rs 。当电阻为固定值时,电压V 的变化就反映出电流的变化情况。 图3.1 电阻检测的电路原理图 但是由于各种寄生效应的影响,实际的检测电路可用图3.2表示。 图3.2  实际的检测电路原理图 图3.2 中, L 为寄生电感, C 为寄生电容, 寄生元件形成的二阶网络, 形成高频振荡, 其中, 寄生电感的影响尤为重要,在相同电流变化率的情况下,它直接决定振荡幅度的大小。图3 是理想检测波形与实际检测波形的比较。 图3 .3 理想检测波形与实际检测到的波形的比较 检测电阻的引入对整个电路的影响是造成电路额外的功率损耗,因此,由它引起的功耗应越小越好。电阻的功耗为P = I2R 。为了减小功耗,在保证控制的情况下,应尽量减小电阻的值。此外,为了减小检测电阻的寄生效应,在电阻选择时应注意选择寄生电感小的电阻;版图设计时,应尽量缩短导带的距离;导带的走线应该宽、直,并且最好用地线包围。 由欧姆定理可知,在电阻值一定时,电压V 反映了电流I ,如何选择合适的检测电阻十分重要。在选择电阻时一定要慎重,主要考虑以下几个方面:1) 在满足控制需要的前提下,尽量减小电阻值,以减小电路的功耗;2) 寄生电感要小,以减小电流变化率的影响;3) 容差要小,以保证产品的一致性;4) 温度系数要低,使电阻阻值随温度的变化尽可能小;5) 足够的功率容量,保证电阻可以承受大电流脉冲的冲击;6) 足够的温度余量,以提高电路的可靠性。 (2)磁检测 电阻检测的缺点是损耗大,适用的场合有限。在电流较大的场合,大多采用磁性器件检测,以避免电阻检测而造成的损耗。同时,磁性器件检测还可以方便地获得电气隔离。最常用的电流磁检测器件是电流互感器,它在开关电源的设计中得到广泛的应用。 它的典型电路如下图: 图3.4电流互感器的典型应用 图3.4 中,电阻为假负载,二极管的作用是将脉冲信号整流。整流后的信号根据不同的应用,可以同电阻检测电路设计一样,加入分压电路进行电平调整,加入低通滤波器滤除高频噪声,或者引入直流偏置电压改变起始电平,也可以用大电容将脉冲信号变为直流信号使用。 除了电流互感器外,磁检测方式还有采用霍尔效应制作的传感器。霍尔传感器与电流互感器相比,检测精度高,但却存在价格高、体积大的缺点。霍尔传感器主要应用在有特殊要求的场合。 3.1.2 电流检测元件 电流信号检测的关键是正确选择和使用检测元件。根据响应速度的快慢,电流检测元件可分为下列两种: 1)慢速型电流检测元件 电流互感器是利用电磁感应原理制作的,由于普通铁芯的磁滞现象,它是慢速型电流检测元件。常用的交流电流互感器的原理如图3.5所示,它的一次绕组串联在电路中,并且匝数N1很少(最少为1匝),电流互感器二次绕组匝数N2比较多,如果一次绕组中的电流是I1,根据磁势平衡原理,N1I1= N2 I2,绕组N2上得到的检测电压U2=I2R1=(N1/ N2) I1 R1。应该注意,电流互感器的采样电阻不能过大,否则绕组电压过高,导致铁芯的磁通饱和;特别注意的是,互感器的二次绕组不能开路 。 图3.5 交流互感器原理图 2)快速型电流检测元件 在短路保护环节中,要求迅速检测并判断电流的大小,因而要求用快速所型电流检测元件。霍尔电流传感器、脉冲电流互感器以及无感电阻均属这类电流检测元件。无感电阻直接串入主电路会产生附加的压降及功耗,检测电路与主电路间没有电的隔离,因此只有在要求不高的小功率系统中才采用这种检测方法。霍尔传感器应用比较广泛,下面介绍它的原理。 (1)霍尔元件 霍尔元件是霍尔电流传感器的核心,图3.6是它的示意图。霍尔元件得本体厚度为d的半导体基片,如果沿纵长方向通过引线1和2引入电流IC,同时垂至于基片的方向有磁感应强度为B的磁场,那么在基片的两个长边之间会感应出电压,这就是霍尔效应。电流引线称为电流极,输出电压引线3和4称为霍尔输出极。霍尔电压UH大小为UH=KHBIC,式中KH,是与半导体和基片尺寸有关的霍尔常数。当IC的方向是由1到2时,UH的极性是4为正,3为负,如果IC或磁场方向反向,则UH也反向 图3.6 霍尔元件示意图 (2)霍尔电流传感器模块 霍尔电流传感器模块,又称为LEM模块,它是利用磁场平衡式原理工作,工作原理如图3.7。被检测电流IP的磁场使得霍尔元件感应电压UH,通过PI放大器控制互补三极管电流Is, Is在副边线圈产生的磁场抵抗主电流所产生的磁场,直到Np*Ip=NsIs,霍尔器件处于零磁通,感应电压U    H为0,PI放大器输出不变。其中NP为被检测电流的导线匝数,NS为LEM内部线圈匝数。IS流过检测电阻Rm,在M点得到检测电压UM,它的值为 UM=IS Rm=NpIpRm/NS 图3.7  LEM的工作原理 UM能快速反映IP的变化,跟随时间一般在1μs以内,它能检测交、直流 和脉冲电流,具有与被测电流绝缘、相应快等优点。 3.2 电流有效值的检测 3.2.1 有效值 任何周期性电流的有效值等于流经一个电阻器R并提供与该周期性电流相等的功率的一个直流电流值。换句话说,一个给定的周期性电流流经同一电阻器,即有瞬时功率i2R;取一个周期的平均值即得出平均功率。再让一个直流流经同一个电阻器,调节电流的大小,以得到与前述相等的平均功率值,那么这个直流值就等于该周期性电流的有效值。 现在可以得到i(t)的有效值的表达式。周期性电流i(t)对电阻器提供的平均功率是 式中T是i(t)的周期。一个直流电流提供的功率 令这两个功率表达式相等,解出I 注意到求这个有效值时,首先是将函数平方,然后取一个周期的平均值,最后取这个平方函数平均值的平方根,用简略的语言说,这个步骤意味着所求的有效值为电流的平方、平均再开平方根,故此,通常把有效值称为方均根值。 这也是本次实验的理论依据,即首先检测出电流瞬时值,然后用单片机计算出有效值。 3.2.2 检测电路 其电路图如下: 图3.8 电流检测电路 本次实验采用CT03—5/2.5型精密电流互感器,额定输入电流为5A,额定输出电流为2.5mA,当要其输出为电压信号时,其典型电路如图3.9(1)和(2)。调整图1中反馈电阻R和r的值可得到所需要的电压输出。电容C1及可调电阻r'是用来补偿相移的。电容C2和C3是400至1000pF的小电容,用来去耦和滤波。两个反接的二极管是起保护运算放大器作用的。图中反馈电阻R要求精度优于1%, 温度系数优于50PPM。 图3.9(2)为其另一种方法。次级不加运算放大器而直接并联一个电阻使输出变换成电压信号也是可以的,使用电路如图2所示。前提是电阻要小于800Ω,输出电压最大2伏,这时仍能得到非线性度优于0.1%的输出电压信号。与电路1比较,其影响如下:1.缩小了互感器的动态范围,2.使相移增大,电阻要求精度优于1%, 温度系数优于50PPM。 图3.9精密互感器典型电路 本次实验中采用了图3.9(1),运算放大器采用LM324,由于检测的电流值要送往单片机,而互感器输出的电压为交流电,所以在此后我们加上了精密整流电路,将正弦波的下半波翻上去。其中R1=R2 图3.10精密整流电路 其原理为: 当输入Vi>0时,二极管D1、D2、D3、D4导通,VO=Vi,当Vi<0时,二极管D1、D2、D3、D4截至,VO=-ViR2/R1,因为R1=R2,所以VO=-Vi。 当输入如图3.11所示的正弦波Vi时,其输出波形如图3.12所示 图3.11 输入正弦波 图3.12输出波形 第四章 基于单片机的软件设计 4.1  AVR系列单片机简介 4.1.1 ATmega8特点 ATMEL公司于2002年第一季度推出了一款新型AVR高档单片机,在AVR家族中,ATmega8是一个非常特殊的单片机,它的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具有AVR高档单片机MEGA系列的全部性能和特点,但由于采用了小引脚封装(为DIP28和TQEP/MLF32),所以其价格仅与低档单片机相当,成为具有极高性价比、深受广大用户喜爱的单片机,被广泛应用于电器、仪表、电源等行业。 ATmega8是一款基于AVRRISC、低功耗CMOS的8位单片机,由于在一个时钟周期内执行一条指令,ATmega8可以达到接近1MIPS/MHz。ATmega8具有以下特点:8K字节的在线编程/应用编程(ISP/IAP)Flash程序存储器,512字节E PROM,1K字节SRAM,32个通用工作寄存器,23个通用I/O口,3个带有比较模式灵活的定时器/计数器,18+2个内外中断源,1个可编程的SUART接口,1个8位I C总线接口,4(6)通道的10位ADC,2通道8位ADC,可编程的看门狗定时器,1个SPI接口和5种可通过软件选择的节电模式。 当单片机处于空闲模式时,CPU将停止运行,而SRAM、定时器/计数器、SPI口和中断系统则继续工作;处于掉电模式时,振荡器停止工作,所有其他功能都被禁止,但寄存器内容得到保留,只有在外部中断或硬件复位时才退出此状态;处于省电模式时,芯片的所有功能被禁止(处于休眠),只有异步时钟正常工作,以维持时间基准。当单片机处于ADC噪声抑制模式时,CPU和其他的I/O模块都停止运行,只有ADC和异步时钟正常工作,以减少ADC转换过程中的开关噪声;在待命模式时,CPU和其他的I/O模块都停止运行,但系统振荡器仍在运行,使得系统在低功耗时可以很快地启动。 ATmega8单片机采用ATMEL的高密度非易失性内存技术,片内Flash可以通过SPI接口、通用编程器及自引导BOOT程序进行编程和自编程。利用自引导BOOT程序,可以使用任一硬件接口下载应用程序,并写入到Flash的应用程序区中。在更新Flash的应用程序区数据时,处在Flash的BOOT区中的自引导程序继续执行,实现了同时读写的功能。由于将增强RISC8位CPU与在系统编程和在应用编程的Flash存储器集成在一个芯片内,ATmega8成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。 ATmega8的主要功能如下: 高性能,低功耗的8位AVR微控制器; 先进的RISC精简指令集结构; a.130条功能强大的指令,大多数为单时钟周期指令 b.32个8为通用工作寄存器 c.工作在16MHz时具有16MIPS的性能 (3) 片内集成了较大容量的非易失性程序和数据存储器以及工作存储器; a.8K字节的在Flash程序存储器,擦写次数:>10000次 b.支持在线编程(ISP)、在应用自编程(IAP) c.带有独立加密位的可选BOOT区,可通过BOOT区内的引导程序区(用户自己写入)来实现IAP编程 d.512个字节的E PROM,擦写次数:100000次 e.1K字节内部SRAM f.可编程的程序加密位 (4) 外部性能; a.2个具有比较模式的带预分频器的8为定时/计数器 b.1个带预分频器,具有比较和捕获模式的16位定时/计数器 c.1个具有独立振荡器的异步实时时钟(RTC) d.3个PWM通道,可实现任意<16位、相位和频率可调的PWM脉宽调制输出 e.6通道A/D转换(PDIP封装),4路10位A/D+2路8位A/D f.1个I C的串行接口,支持主/从、收/发四种工作方式,支持自动 总线仲裁 g.1个可编程的串行USART接口,支持同步、异步及多机通信自动地址识别ATmega8单片机易失性E PROM预分频器定时/计数器 h.1个主/从、收/发的SPI同步串行接口 i.带片内RC振荡器的可编程看门狗定时器 j.片内模拟比较器 (5)特殊的微控制器性能; a.上电复位和可编程的欠电压检测电路 b.内部集成了可选择频率(1/2/4/8/MHz)、可校准的RC振荡器 c.外部和内部的中断源18个 d.五中休眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、待命模式 (6)I/O口和封装; a.最多23个可编程I/O口,可任意定义I/O的输入/输出方向;输出时为推挽输出,驱动能力强,可直接驱动LED等大电流负载;输入口可定义为三态输入,可以设定带内部上拉电阻,省去外接上拉电阻 b.28脚PDIP封装,32脚TQFP封装合32脚MLF封装 (7)工作电压; a.2.7V-5.5V(ATmega8L) b.4.5V-5.5V(ATmega8) (8)运行速度; a.0-8MHz(ATmega8L) b.0-16MHz(ATmega8) (9)功耗(4MHz,3V,25℃)。 a.正常模式(Active):2.6mA b.空闲模式(Idle Mode):1.0mA c.掉电模式(Power-down Mode):0.5uA 本系统使用PDIP封装的ATmega8型单片机,其管脚图如图4.1所示: 图4.1 Mega8型单片机管脚图(PDIP) ATmega8的外部引脚定义如下: (1)VCC 电源正(数字) (2)GND 电源地 (3)PortB(PB7-PB0)/XTAL1/XTAL2/TOSC1/TOSC2 PortB口是一个8为双向I/O口,每个管脚都带有独立可控制的内部上拉电阻。B口的输出缓冲器具有双向(输出和吸收)大电流的驱动能力。当B口为输入方式,且内部上拉电阻有效时,如果外部引脚被拉低,B口将输出电流。在复位过程中,即使是在系统时钟还未起振的情况下,B口仍呈现为三态。 通过对系统时钟选择位的设定,PB6和PB7还可以作为振荡放大器的输入/输出口(使用外部晶体)和外部时钟脉冲信号输入口(PB6)。 当系统使用内部的RC振荡器时,通过设置ASSR寄存器的AS2位,可以将PB6、PB7作为异步实时时钟/计数器2的输入口TOSC1、TOSC2使用。 (4)PortC(PC5-PC0) PortC口是一个7位双向I/O口,每个管脚都带有独立可控制的内部 上拉电阻。C口的输出缓冲器具有双向(输出和吸收)大电流的驱动能力。当C口为输入方式,且内部上拉电阻有效时,如果外部引脚被拉低,C口将输出电流。在复位过程中,即使是在系统时钟还未起振的情况下,C口仍呈现为三态。 (5)PC6/RESET 当RSTDISBL位被编程时,可将PC6作为一个I/O口使用,因此,PC6引脚与PortC口其他引脚的电特性是有区别的。 当RSTDISBL位未被编程时,PC6将作为复位属于引脚RESET。在该引脚上,一个超过两个时钟周期的低电平将产生复位信号,是系统复位。 (6)PortD(PD7-PD0) PortD口是一个8位双向I/O口,每个管脚都带有独立可控制的内部上拉电阻。D口的输出缓冲器具有双向(输出和吸收)大电流的驱动能力。当D口为输入方式,且内部上拉电阻有效时,如果外部引脚被拉低,D口将输出电流。在复位过程中,即使是在系统时钟还未起振的情况下,D口仍呈现为三态。 PortD口是一个复用端口,还提供ATmega8单片机的许多特殊接口功能。 (7)RESET复位输入引脚 在该引脚上的一个超过两个时钟周期的低电平将产生复位信号,是系统复位。 (8)XTAL1 内部振荡放大器的输入端 (9)XTAL2 内部振荡放大器的输出端 (10)AVCC A/D转换器的电源。当引脚PortC(0-3)和PortC(6-7)用于ADC时,AVCC应通过一个低通滤波器与VCC连接。在不使用ADC时,该引脚应直接与VCC连接。而PortC(4-5)的电源则是有VCC提供的。 (11)AREF A/D转换器的参考电源输入端 4.1.2  ATmega8单片机的指令系统 指令是指计算机所能执行的命令,它是由生产厂商定义的。一台计算机所能执行的指令集合就是它的指令集。由于指令系统并没有通用性,不同类型的计算机都有不同类型的指令集,因此采用低级语言开发的程序也没有通用型,不能直接移植。 机器语言就是计算机指令的二进制代码,它可以直接在计算机中运行;而汇编语言则是机器语言的符合表示形式,它只是机器语言的助记符集合,因此由汇编语言编写的程序必须经专门的工具程序转化为相应的二进制代码后才能供计算机执行。 AVR单片机的指令系统属于RISC结构的精简指令系统。ATmega8的RISC指令集共有118条指令,分为以下4个大类: 算术运算和逻辑运算指令(25条) 转移指令(31条) 数据传送指令(31条) 位和位测试指令(31条) 寻址方式 AVR单片机有以下几种寻址方式: 直接单寄存器寻址 直接双寄存器寻址 I/O寄存器直接寻址 数据寄存器直接寻址 带偏移量的数据寄存器间接寻址 数据寄存器间接寻址 带后增量的数据寄存器间接寻址 带预减量的数据寄存器间接寻址 程序存储器常量寻址 程序存储器间接寻址 程序存储器相关寻址 4.2基于AVR单片机PWM逆变器电流有效值的检测软件设计 4.2.1主程序流程图 图4.2 主程序流程图 本系统主要由单片机发出SPWM波,并启动AD转换,将检测的瞬时值,进行模数转换,并计算出有效值,通过数码管显示出电流值。 4.2.2 AD转换 ATmega8有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能对来自端口C 的8 路单端输入电压进行采样。单端电压输入以0V (GND) 为基准。 ADC 包括一个采样保持电路,以确保在转换过程中输入到ADC 的电压保持恒定. ADC 由AVCC 引脚单独提供电源。AVCC 与VCC 之间的偏差不能超过± 0.3V。 标称值为2.56V 的基准电压,以及AVCC,都位于器件之内。基准电压可以通过在AREF 引脚上加一个电容进行解耦,以更好地抑制噪声。 ADC可以将输入的模拟电压信号转换成一个10位的数字量。输入模拟通道通过ADMUX寄存器选择。ADC模块由ADSCRA寄存器中的ADEN位使能。当ADEN为“1”时,ADC功能有效,并且输入通道同模拟电压的输入引脚相连。此时,若ADSC置“1”,则ADC启动一个模数转换。ADC有两种转换模式,即自由转换和单次转换模式,可以通过ADFR位选择。当ADC模块被启动后,若ADFR为“0”时,则ADC工作在单次转换模式,此时,每个转换过程都需要置位ADSC;若ADFR为“1”时,则ADC工作在自由转换模式,此时,ADC连续采样模拟输入端,并将转换得到的数据输出至ADC的数据寄存器。 ADC的转换结果存储在ADCH和ADCL两个寄存器中。为了确保数据读取的正确性,ADCL寄存器的内容应当首先被读取,一旦用户开始对ADCL读取,ADC对数据寄存器的写操作就被禁止,这就意味着,如果用户读取了ADCL,那么即便另一次ADC转换过程在读ADCH之前结束了,两个数据寄存器中的内容也不会被更新。当用户对ADCH的读操作完成后,ADC才可以更新ADCH和ADCL。 当一次转换过程结束后,ADIF位被置位“1”,此时,若ADIE和全局中断使能位都为“1”,则单片机产生一个ADC中断。 其流程图如下: 图4.3 AD转换子程序流程图 由于所采样的电压值是频率为50赫兹的正弦波,其周期为20ms,本系统采用连续转换模式,当产生捕获中断时,取模数转换值,然后求平方和,当取400次时,根据有效值定义求出有效值。 4.2.3 显示 LED数码管具有亮度高、寿命长,价格低廉等优点。LED数码管由8个发光二极管构成,它有两种接法:共阴极和共阳极。为了在LED显示数字或符号,必须使LED的各个二极管按给定的组合发光。若8段数码管与代码的对应关系如表1,则LED显示器显示0~9这10个数字的代码如 表1 LED显示器的代码段和显示段的关系 代码位 0 1 2 3 4 5 6 7 显示段 a b c d e f g dp                   表2显示器显示的字形代码 显示数码 0 1 2 3 4 5 6 7 8 9 共阴字型码 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f                       LED显示器具有两种显示方法,一种是静态显示,另一种是动态扫描显示。静态显示采用具有锁存器的I/O接口电路,单片机只在数据更新时,才发送新的字形代码,这种显示电路要求单片机的LED数码显示器的各个显示段分别控制,接口电路较为复杂,适用于显示位数较少的场合;动态扫描显示则是采用分时的方法,逐个循环地点亮各位显示器,在显示过程中,任一时刻只有一位显示器被点亮,但由于人眼的视觉暂留效应,在显示刷新很快时,可以认为全部显示。 本次设计流程图如下 图4.4 显示子程序流程图 本次实验采用四位共阴LED数码管显示,PC1,PC2,PC3,PC4为位控口。 4.2.4  SPWM波产生 根据ATmega8型单片机的结构,我们知道,它有三个定时/计数器:8位T/C0、16位T/C1和8位T/C2 。这些定时/计数器除了能够实现通常的定时和计数功能外,还具有捕捉、比较、脉宽调制(PWM)输出、实时时钟计数等更为强大的功能。其中16位T/C1就有二个PWM 产生通道,即OC1A,OC1B。它有以下几种工作模式: (1)普通模式 普通模式(WGM13:0=0)为最简单的工作模式。在此模式下计数器不停地累加。计到最大值(TOP=0xFFFF)后由于数值溢出计数器简单地返回到最小值0x0000 重新开始。在TCNT1为零的同一个定时器时钟里T/C1溢出标志TOV1置位。此时TOV1有点像第17位,只是只能置位,不会清零。但由于定时器中断服务程序能够自动清零TOV1,因此可以通过软件提高定时器的分辨率。在普通模式下没有什么需要特殊考虑的,用户可以随时写入新的计数器数值。在普通模式下输入捕捉单元很容易使用。要注意的是外部事件的最大时间间隔不能超过计数器的分辨率。如果事件间隔太长,必须使用定时器溢出中断或预分频器来扩展输入捕捉单元的分辨率输出比较单元可以用来产生中断。但是不推荐在普通模式下利用输出比较来产生波形,因为会占用太多的CPU 时间。 (2)快速PWM 模式 快速PWM 模式(WGM1[3:0]= 5、6、7、14或15)可用来产生高频的PWM 波形。快速PWM模式与其他PWM模式的不同之处是其单边斜坡工作方式。计数器从BOTTOM计到TOP,然后立即回到BOTTOM 重新开始。对于普通的比较输出模式,输出比较引脚OC1x在TCNT1 与OCR1x 匹配时置位,在TOP 时清零;对于反向比较输出模式,OCR1x 的动作正好相反。由于使用了单边斜坡模式,快速PWM 模式的工作频率比使用双斜坡的相位修正PWM 模式高一倍。此高频操作特性使得快速PWM 模式十分适合于功率调节,整流和DAC应用。高频可以减小外部元器件(电感,电容)的物理尺寸,从而降低系统成本。 工作在快速PWM 模式时,计数器的数值一直累加到固定数值0x00FF、0x01FF、0x03FF(WGM1[3:0] = 5、6或7)、ICR1(WGM13:0 = 14)或OCR1A(WGM13:0 = 15),然后在后面的一个时钟周期清零。具体的时序图见图4.5。图中给出了当使用OCR1A 或ICR1来定义TOP 值时的快速PWM 模式。图中柱状的TCNT1 表示这是单边斜坡操作。方框图同时包含了普通的PWM 输出以及反向PWM 输出。TCNT1 斜坡上的短水平线表示OCR1x 和TCNT1 的匹配比较。比较匹配后OC1x 中断标志置位。快速PWM 模式时序图4.5: 图4.5快速PWM模式时序图 计时器数值达到TOP时T/C1溢出标志TOV1 置位。另外若TOP 值是由OCR1A 或ICR1定义的,则OC1A 或ICF1 标志将与TOV1 在同一个时钟周期置位。如果中断使能,可以在中断服务程序里来更新TOP 以及比较数据。改变TOP值时必须保证新的TOP值不小于所有比较寄存器的数值。否则TCNT1与OCR1x不会出现比较匹配。使用固定的TOP 值时,向任意OCR1x 寄存器写入数据时未使用的位将屏蔽为“0”。定义TOP 值时更新ICR1 与OCR1A 的步骤时不同的。作于快速PWM模式时,比较单元可以在OC1x引脚上输出PWM波形。设置COM1x1:0为2 可以产生普通的PWM 信号;为3则可以产生反向PWM 波形。此外,要真正从物理引脚上输出信号还必须将OC1x 的数据方向DDR_OC1x 设置为输出。产生PWM 波形的机理是OC1x 寄存器在OCR1x 与TCNT1 匹配时置位( 或清零),以及在计数器清零(从TOP变为BOTTOM)的那一个定时器时钟周期清零(或置位)。 输出的PWM 频率可以通过如下公式计算得到: (1) 变量N 代表分频因子(1、8、64、256或1024)。 OCR1x 寄存器为极限值时说明了快速PWM 模式的一些特殊情况。若OCR1x 等于BOTTOM(0x0000),输出为出现在第TOP+1个定时器时钟周期的窄脉冲;OCR1x为TOP时,根据COM1x1:0 的设定,输出恒为高电平或低电平。通过设定OC1A 在比较匹配时进行逻辑电平取反(COM1A1:0=1),可以得到占空比为50%的周期信号。这只适用于OCR1A用来定义TOP值的情况(WGM13:0 = 15)。OCR1A为0(0x0000) 时信号有最高频率fOC1A = fclk_I/O/2。 (3)相位修正PWM 模式 相位修正PWM模式(WGM1[3:0] = 1、2、3、10或11)为用户提供了一个获得高精度的、相位准确的PWM 波形的方法。与相位和频率修正模式类似,此模式基于双斜坡操作。计时器重复地从BOTTOM计到TOP,然后又从TOP 倒退回到BOTTOM。在一般的比较输出模式下,当计时器往TOP 计数时若TCNT1与OCR1x匹配,OC1x将清零为低电平;而在计时器往BOTTOM 计数时若TCNT1与OCR1x 匹配, OC1x 将置位为高电平。工作于反向比较输出时则正好相反。与单斜坡操作相比,双斜坡操作可获得的最大频率要小。但其对称特性十分适合于电机控制。 工作于相位修正PWM 模式时,计数器的数值一直累加到固定值0x00FF、0x01FF、0x03FF(WGM1[3:0]=1、2或3)、ICR1(WGM1[3:0]=10)或OCR1A (WGM1[3:0]=11),然后改变计数方向。在一个定时器时钟里TCNT1 值等于TOP 值。具体的时序图见图4.6,图中给出了当使用OCR1A或ICR1来定义TOP值时的相位修正PWM模式。图中柱状的TCNT1 表示这是双边斜坡操作。方框图同时包含了普通的PWM 输出以及反向PWM输出。TCNT1 斜坡上的短水平线表示OCR1x 和TCNT1 的匹配比较。比较匹配后OC1x中断标志置位。计时器数值达到BOTTOM时T/C1溢出标志TOV1置位。若TOP由OCR1A或ICR1定义,在OCR1x 寄存器通过双缓冲方式得到更新的同一个时钟周期里OC1A 或ICF1 标志置位。标志置位后即可产生中断。改变TOP值时必须保证新的TOP值不小于所有比较寄存器的数值。否则TCNT1与OCR1x不会出现比较匹配。使用固定的TOP值时,向任意OCR1x 寄存器写入数据时未使用的位将屏蔽为“0”。在T/C1运行于相位修正模式时,改变TOP值导致了不对称输出。其原因在于OCR1x寄存器的更新时间。相位修正PWM 模式的时序图4.6: 图4.6 相位修正PWM模式时序图 由于OCR1x的更新时刻为定时器/计数器达到TOP 之时,因此PWM 的循环周期起始于此,也终止于此。就是说,下降斜坡的长度取决于上一个TOP 值,而上升斜坡的长度取决于新的TOP 值。若这两个值不同,一个周期内两个斜坡长度不同,输出也就不对称了。若要在T/C1运行时改变TOP 值,最好用相位与频率修正模式代替相位修正模式。若TOP保持不变,那么这两种工作模式实际没有区别。工作于相位修正PWM 模式时,比较单元可以在OC1x 引脚输出PWM 波形。设置COM1x1:0为2可以产生普通的PWM,设置COM1x1:0为3可以产生反向PWM。要真正从物理引脚上输出信号还必须将OC1x 的数据方向DDR_OC1x设置为输出。OCR1x 和 TCNT1 比较匹配发生时OC1x 寄存器将产生相应的清零或置位操作,从而产生PWM 波形。工作于相位修正模式时PWM 频率可由如下公式获得: (2) 变量N 表示预分频因子(1、8、64、256或1024)。 OCR1x寄存器处于极值时表明了相位修正PWM模式的一些特殊情况。在普通PWM模式下,若OCR1x 等于BOTTOM,输出一直保持为低电平;若OCR1x等于TOP,输出则保持为高电平。反向PWM 模式正好相反。如果OCR1A 用来定义TOP 值(WGM1[3:0]=11)且COM1A[1:0]=1,OCR1A输出占空比为50% 的周期信号。 (4)相位与频率修正PWM 模式 相位与频率修正PWM 模式(WGM1[3:0]=8或9)(以下简称相频修正PWM模式)可以产生高精度的、相位与频率都准确的PWM 波形。与相位修正模式类似,相频修正PWM 模式基于双斜坡操作。计时器重复地从BOTTOM计到TOP,然后又从TOP 倒退回到BOTTOM。在一般的比较输出模式下,当计时器往TOP 计数时若TCNT1 与OCR1x 匹配OC1x将清零为低电平;而在计时器往BOTTOM计数时TCNT1与OCR1x匹配,OC1x将置位为高电平。相频修正PWM模式与相位修正PWM 模式的主要区别在于OCR1x 寄存器的更新时间。 (5)波形产生模式的位描述见下表 表3 波形产生模式 模式 WGM1 [3:0] 计数器T/C1 工作模式 TOP值 OCR1A/B更新 TOV置位 0 0000 普通模式 0XFFFF 立即 MAX 1 0001 8位相位修正PWM 0X00FF TOP BOTTOM   0010 9位相位修正PWM 0X01FF TOP BOTTOM 3 0011 10位相位修正PWM 0X03FF TOP BOTTOM 4 0100 CTC(比较匹配清零) OCRIA 立即 MAX 5 0101 8位快速PWM 0X00FF TOP TOP 6 0110 9位快速PWM 0X01FF TOP TOP 7 0111 10位快速PWM 0X03FF TOP TOP 8 1000 相位与频率修正PWM ICR1 BOTTOM BOTTOM 9 1001 相位与频率修正PWM OCR1A BOTTOM BOTTOM 10 1010 相位修正PWM ICR1 TOP BOTTOM 11 1011 相位修正PWM OCRIA TOP BOTTOM 12 1100 CTC(比较匹配清零) ICR1 立即 MAX 13 1101 保留 — — — 14 1110 快速PWM ICR1 TOP TOP 15 1111 快速PWM OCR1A TOP TOP             本系统就是利用定时/计数器T/C1工作在相位修正PWM工作模式,无预分频,直接采用外部8M晶振,ICR1A/B中的TOP值设为200,升序计数时比较匹配将清零OC1A/OC1B,降序计数时比较匹配将置位OC1A/OC1B。由公式: (3) 得到采用这种工作方式PWM脉冲频率为20K,脉冲占空比与寄存器OC1A/B中的比较数成正比。列表参数根据规则采样法,即根据公式(2)计算得到。另外,要生成一定周期的SPWM脉冲就要求调制周期与列表长度相一致,即表长为200,这样查表完成一次需要0.01s为50Hz的半个周期。 SPWM波产生程序流程图如图4.7所示。具体程序见附录A。 图4.7 SPWM波发生程序流程图 首先进行初始化,对定时器1赋初值,对OCR1A、OCR1B赋初值,并选择相位修正PWM模式,开启捕获中断,当计数器计数到与OCR1A、OCR1B中的值相等时,在PORTB1、PORTB2产生低电平,并产生捕获中断,在捕获中断中对OCR1A、OCR1B重新赋值,执行完中断,后程序回到主程序,计数器计数,到与OCR1A、OCR1B中的值相等时,在PORTB1、PORTB2产生低电平,并产生捕获中断。如此往复。 第五章 实验与总结 5.1 单片机发出两路SPWM波形 ATmega8型单片机所发SPWM脉冲如图5.1所示。从图5.1中可以看到,两路脉冲相差180°,相互错开,所发脉冲时间为10ms,分别驱动两个开关管。 图5.1  SPWM波形 5.2检测的电流数据 给定值 1 1.5 2 3 实测值(即显示值) 0.957 1.478 1.978 2.986           5.3 总结 在本次实验过程中,碰到了许多问题,在焊接的过程中,由于马虎造成虚焊,导致在以后的程序验证时,实验错误,开始以为是程序错误,重新编写程序,后来才发现是虚焊,浪费大浪时间。在编程过程中,碰到了以前从未遇到过的问题,一个小小的马虎,可能会导致整个程序的运行错误,实验结果错误。通过解决其中的问题,也锻炼了自己分析问题解决问题的能力。这次毕设也给了我深刻的教训,使我明白,无论作何事,一定要采取科学严禁的态度。通过本次实验,学会了用AVR单片机编程,对其模数转换,以及用软件法发出SPWM波,其定时器有了一定的了解。 参考文献 [1] 杨荫福,段善旭,朝泽云. 电力电子装置及系统. 清华大学出版社. 2006,7 [2]  王兆安,黄俊. 电力电子技术. 第四版. 机械工业出版社. 2000 [3] 张克彦 AVR 单片机实用程序设计 北京航空航天大学出版社2004 [4] 李长林 AVR 单片机应用设计  电子工业出版社 2005.9 [5] 金春林 邱慧芳 张皆喜 AVR系列单片机C语言编程与应用实例 清华大学出版社 2003.11 [7] 刘风君. 正弦波逆变器. 科学出版社. 2002. [8] 康华光,陈大钦. 电子技术基础(模拟部分),第四版, 高等教育出版社. 1999. [9] 康华光,陈大钦. 电子技术基础(数字部分),第四版, 高等教育出版社. 1999. [10]楚斌.  IR2110 功率驱动集成芯片应用  电子工程师 2004.10 [11] 马潮 詹卫前 耿德根  Atmega8原理及应用手册 清华大学出版社 2003.3 [12] 沈文 Eagle lee 詹卫前 AVR单片机C语言开发入门指导 清华大学出版社 2003.5  [13] 何宏 龚威 田志宏 单片机原理与接口技术 国防工业出版社 2006.7 致谢 在本次设计及论文完成过程中,得到樊印海老师精心指导,同时也得到师兄:李维华、钟敬伟,师姐:熊倩、鲍秋雁的帮助。在此表示深深的谢意!祝他们:身体健康,工作顺利,学习更上一层楼。 附录A 系统程序 #include "iom8v.h" #include "math.h" #include "macros.h" #define Vref 5000 //void display(); unsigned  int data=200; unsigned  long int sum=0; int h=0; short list[]={7,10,13,16,19,22,25,28,31,34,36,39,42,45,48,51,54,56,59,62, 65,67,70,73,76,78,81,84,86,89,91,94,96,98,100,102,104,106,108,110, 112,114,116,118,120,123,125,127,129,131,133,135,137,139,141,143,145,147,149,150, 152,154,155,157,159,160,162,163,165,166,167,169,170,171,172,173,174,175,176,177, 178,179,180,181,181,182,183,183,184,184,185,185,186,186,186,187,187,187,187,187, 187,187,187,187,187,186,186,186,185,185,184,184,183,183,182,181,181,180,179,178, 177,176,175,174,173,172,171,170,169,167,166,165,163,162,160,159,157,155,154,152, 150,149,147,145,143,141,139,137,135,133,131,129,127,125,123,120,118,116,114,112, 110,108,106,104,102,100,98,96,94,91,89,86,84,81,78,76,73,70,67,65, 62,59,56,54,51,48,45,42,39,36,34,31,28,25,22,19,16,13,10,7},prea,preb; int count; //TIMER1 initialize - prescale:1 // WGM13:0=10) PWM phz correct, TOP= ICR1 // desired value: 10KHz // actual value: 10.000KHz (0.0%) void timer1_init(void)  //定时器1初始化 { TCCR1B=0x00; TCNT1H = 0x00; //setup TCNT1L = 0x38;//TCNT:FF38 OCR1AH = 0x00;// OCR1AL = 0xC8;//OCR1A:00C8 OCR1BH = 0x00; OCR1BL = 0xC8;//OCR1B:00C8  ICR1H  = 0x00; ICR1L  = 0xC8;//ICR1:00C8  pwm方式下的top值 TCCR1A = 0xA2; //10100010 top时更新OCR1A OCR1B,向上计数比较匹配清零,反之置位 TCCR1B = 0x11; //start Timer 00010001  clk无分频,相位修正PWM } #pragma interrupt_handler timer1_capt_isr:6  //捕获中断 void timer1_capt_isr(void) { //timer 1 input capture event, read (int)value in ICR1 using; //  value=ICR1L;            //Read low byte first (important) //value|=(int)ICR1H << 8; //Read high byte and shift into top byte OCR1A=prea; OCR1B=preb; prea=500; preb=500; data=ADC; data=data*data; sum+=data; h++; if(1) { if(count<200){prea=list[count++];} else if((count>=200)&&(count<400)){preb=list[count++-200];}    else {if(count>400) Count=0; } } else; } void port_init(void)  //端口初始化 {PORTD=0x00; DDRD=0xff; PORTC=0x40; DDRC=0xfe; PORTB=0x00; DDRB=0xff; } void adc_init (void)  //模数转换初始化 { ADCSRA=0xc6;//adc ennable  选择连续转换模式 ADMUX=0x00; //c0 ch SREG=0x80;//global int enable } void delay()//延时 {int i; for(i=0;i<500;i++) {;} } void display(void) {int t,t1,t2,t3,t4; t=(unsigned int )(((unsigned long )((unsigned long )sum*Vref))/0x3ff); t1=t/1000; t1=t/1000; switch(t1)  //显示第一位 {  case 0: PORTD=0xbf; PORTC=0xfc; delay();break; case 1: PORTD=0x86; PORTC=0xfc; delay();break; case 2: PORTD=0xdb; PORTC=0xfc; delay();break; case 3: PORTD=0xcf; PORTC=0xfc; delay();break; case 4: PORTD=0xe6; PORTC=0xfc; delay();break; case 5: PORTD=0xed; PORTC=0xfc; delay();break; case 6: PORTD=0xfd; PORTC=0xfc; delay();break; case 7: PORTD=0x87; PORTC=0xfc; delay();break; case 8: PORTD=0xff; PORTC=0xfc;; delay();break; case 9: PORTD=0xef; PORTC=0xfc; delay();break; } t2=t%1000/100;  //显示第二位 switch(t2) { case 0: PORTD=0x3f; PORTC=0xfa; delay();break; case 1: PORTD=0x06; PORTC=0xfa; delay();break; case 2: PORTD=0x5b; PORTC=0xfa; delay();break; case 3: PORTD=0x4f; PORTC=0xfa; delay();break; case 4: PORTD=0x66; PORTC=0xfa; delay();break; case 5: PORTD=0x6d; PORTC=0xfa; delay();break; case 6: PORTD=0x7d; PORTC=0xfa; delay();break; case 7: PORTD=0x07; PORTC=0xfa; delay();break; case 8: PORTD=0x7f; PORTC=0xfa; delay();break; case 9: PORTD=0x6f; PORTC=0xfa; delay();break; } t3=t%100/10; //显示第三位 switch(t3) { case 0: PORTD=0x3f; PORTC=0xf6; delay();break; case 1: PORTD=0x06; PORTC=0xf6; delay();break; case 2: PORTD=0x5b; PORTC=0xf6; delay();break; case 3: PORTD=0x4f; PORTC=0xf6; delay();break; case 4: PORTD=0x66; PORTC=0xf6; delay();break; case 5: PORTD=0x6d; PORTC=0xf6; delay();break; case 6: PORTD=0x7d; PORTC=0xf6; delay();break; case 7: PORTD=0x07; PORTC=0xf6; delay();break; case 8: PORTD=0x7f; PORTC=0xf6; delay();break; case 9: PORTD=0x6f; PORTC=0xf6; delay();break; }      t4=t%10; switch(t4)  //显示第四位 {case 0: PORTD=0x3f; PORTC=0xee; delay();break; case 1: PORTD=0x06; PORTC=0xee; delay();break; case 2: PORTD=0x5b; PORTC=0xee; delay();break; case 3: PORTD=0x4f; PORTC=0xee; delay();break; case 4: PORTD=0x66; PORTC=0xee; delay();break; case 5: PORTD=0x6d; PORTC=0xee; delay();break; case 6: PORTD=0x7d; PORTC=0xee; delay();break; case 7: PORTD=0x07; PORTC=0xee; delay();break; case 8: PORTD=0x7f; PORTC=0xee; delay();break; case 9: PORTD=0x6f; PORTC=0xee; delay();break; } } void main () { CLI(); port_init(); adc_init(); timer1_init(); TIMSK|=0x20;//使能捕获中断 ADCSRA|=BIT(ADFR); SEI(); while(1) { if(count==0) { sum=sqrt(sum/h); display(); h=0; sum=0; } } }
/
本文档为【PWM电流有效值的检测】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索