基于ARM的PWM波输出.docx
《基于ARM的PWM波输出.docx》由会员分享,可在线阅读,更多相关《基于ARM的PWM波输出.docx(28页珍藏版)》请在冰豆网上搜索。
基于ARM的PWM波输出
编号:
_
嵌入式系统
实训(论文)说明书
题目:
基于嵌入式ARM的PWM信号发生器
摘要
脉宽控制技术(PWM)简称脉宽调制,是非常重要的电力电子控制技术,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,对提高电力电子装置的性能,促进电力电子技术的发展有着巨大的推动作用。
本系统主要介绍了基于LPC2132的PWM信号发生器制作系统,主要功能是对PWM输出波形的频率、占空比的连续调节,并能对运行信号参数用示波器进行实时显示。
电路主要分为三个模块,核心模块采用LPC2138中央控制单元,通道选择模块,键盘控制模块采用了五个按键控制,分别调节PWM信号的占空比加和减、频率的加和减、输出PWM通道选择。
经测试验证,该信号发生器便于观察和调节,控制精确误差小。
关键词:
LPC2132;PWM;按键;占空比;频率
Abstract
Pulsewidthcontroltechnology(PWM)referredtopulsewidthmodulation,isveryimportantpowerelectroniccontroltechnology,theuseofthemicroprocessordigitaloutputtototheanalogcircuittocontrolaveryeffectivetechnology,toimprovetheperformanceofthepowerelectronicdevices,andpromotethedevelopmentofthepowerelectronictechnologyhasagreatpushforward.
ThissystemmainlyintroducestheLPC2132PWMsignalgeneratorbasedontheproductionsystem,themainfunctionistotheoutputwaveform,thefrequencyPWMoccupiesemptiescomparedtocontinuousadjustment,andcanrunwithanoscilloscopetosignalparameterreal-timedisplay.Circuitcanbedividedintothreemodules,thecoremoduleLPC2138centralcontrolunit,channelselectionmodule,thekeyboardcontrolmoduleadoptedfivekeycontrol,,regulatePWMsignaloccupiesemptiescomparedtoaddandsubtract,frequencyofadditionandsubtraction,outputPWMchannelselection.Theresultsofexperiment,thissignalgeneratorforobservationandregulation,controlprecisesmallerror.
Keywords:
LPC2132;PWM;Button;Occupiesemptiescompared;frequency
引言
脉冲宽度调制是现代控制技术常用的一种控制信息输出,可以有效地利用数字技术控制模拟信号的技术。
PWM(PulseWidthModulation)又称脉冲宽度调制,属于脉冲调制的一种,是应用于电子信息系统和通信领域的一种信号变换技术。
随着电力电子技术被引入到电力变换领域,PWM技术广泛运用于各种工业电力传动领域乃至家电产品中。
其突出特点是可以比较容易地选择最佳的脉冲调制频段,因此,被竞相开发,前景广阔。
PWM控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。
PWM控制技术一直是变频技术的核心技术之一,由于PWM可以同时实现变频变压反抑制谐波的特点,在交流传动及至其它能量变换系统中得到广泛应用。
目前实现方法为采用全数字化方案,完成优化的实时在线的PWM信号输出。
由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一。
脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。
本文主要介绍了PWM信号发生器的概念、作用及定义,分析了系统的工作原理和软硬件的设计。
主要是以LPC2132为核心控制单元,通过对外围电路芯片的设计实现PWM输出波形的频率、占空比的连续调节,达到产生PWM信号目的。
1系统设计
本系统主要是基于LPC2132的PWM信号发生器制作系统,该电路主要分为LPC2132中央控制模块、键盘控制模块、PWM通道选择三部分。
IPC2132是整个电路的核心部分,按键主要是控制界面达到友好的人机交流,最后提供三个PWM输出通道的选择。
1.1设计要求
(1)输出三路及以上PWM信号
(2)PWM信号频率(周期)可调。
(3)PWM信号相位差可调。
(4)PWM信号频率误差≤100HZ。
1.2方案的选择
方案一:
可采用传统的PWM控制电路专用集成芯片或中小规模的数字集成电路来做PWM信号发生器。
但是传统的集成电路频率低,可控性差,调试难度大。
方案二、随着微电子技术和大规模可编程器件的发展,PWM在电机调速中的应用越来越广泛。
ARM与传统PWM控制电路中使用的用集成芯片或中小规模的数字集成电路相比而言,具有体积更小、通用性更强、响应更快、可通过编程改良其功能等优点,能达到的频率范围指标更广。
所以,综合考虑后,本次设计选择LPC2132作为电路的核心部件,这样既达到题目的设计要求,也更方便检测调试。
1.3系统设计
本次设计——基于嵌入式ARM的PWM信号发生器。
电路用USB接口为电源,程序从下载口直接接入LPC2132嵌入式核心芯片,PWM输出可选用三路输出通道中的一个来显示波形,并用到PWM专用的标准定时器还有匹配器来锁存数据等,可以达到友好的人机交流界面。
总的系统设计原理方框图如图1.1所示。
图1.1总系统设计原理框图
1.4工作原理
脉宽调制(PWM)控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。
PWM信号发生器通过LPC2132对各模块和定时/计数器、锁存器的控制,其脉宽调制器建立在标准定时器之上,可在PWM和匹配功能当中进行选择。
本次采用软件编程控制的方法,通过改变给其内部计数器的写入值产生一系列幅值相等而宽度不等的脉冲,再通过一整形电路,产生规则的PWM脉冲波形,改变的计数器初值是通过程序的改变实现的,而PWM的输出通道选择,波形频率的改变以及其占空比的改变是通过按键程序实现,最后通过示波器显示相应的波形参数。
2硬件设计
本系统主要由嵌入式ARM芯片LPC2132构成,PWM信号由示波器显示。
2.1LPC2132芯片说明
LPC2132是PHILIPS公司生产的单片32位ARM微控制器,是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-SCPU,并带有256KB的嵌入的高速FLASH存储器。
128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。
2.1.1LPC2132主要特性
(1)16/32位ARM7TDMI-S核,超小LQFP64封装。
8/16/32kB的片内静态RAM和32/64/128/256/512kB的片内Flash程序存储器。
128位宽度接口/加速器可实现高达60MHz工作频率。
(2)通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。
单个Flash扇区或整片擦除时间为400ms。
256字节行编程时间为1ms。
(3)1个(LPC2131/32)或2个(LPC2134/36/38)8路10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44us。
(4)1个10位的D/A转换器,可产生不同的模拟输出。
(LPC2132/34/36/38)。
(5)2个32位定时器/外部事件计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。
(6)低功耗实时时钟具有独立的电源和特定的32kHz时钟输入。
(7)多个串行接口,包括2个16C550工业标准UART、2个高速I2C总线(400kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP。
(8)向量中断控制器。
可配置优先级和向量地址。
(9)低功耗模式:
空闲和掉电。
(10)可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。
(11)通过外部中断或BOD将处理器从掉电模式中唤醒。
(12)单电源,具有上电复位(POR)和掉电检测(BOD)电路:
CPU操作电压范围:
3.0V~3.6V(3.3V±10﹪),I/O口可承受5V的电压。
2.1.2LPC2138管脚
本次PWM设计只用到了LPC2132中的一些管脚,用于输出PWM信号,以及按键控制。
其中PWM管脚汇总如下表2.1所示:
表2.1PWM管脚汇总
管脚名称
管脚方向
管脚描述
PWM1
输出
PWM通道1输出
PWM2
输出
PWM通道2输出
PWM3
输出
PWM通道3输出
PWM4
输出
PWM通道4输出
PWM5
输出
PWM通道5输出
PWM6
输出
PWM通道6输出
基本上PWM1不能用作双边沿输出。
而用PWM通道3和通道5作为双边沿PWM输出,这样会减少可用的双边沿PWM的个数,故通常不建议使用。
所以本次设计的PWM的输出用到LPC2132的P0.7,P0.8,P0.9管脚,分别作为PWM2,PWM4,PWM6输出通道,可得到最多个数的双边沿PWM输出。
P0.7——脉宽调制器输出2。
P0.8——PWM4脉宽调制器输出4。
P0.9——PWM6脉宽调制器输出6。
2.2PWM模块
LPC2132的脉宽调制器建立在标准定时器0/1之上,应用可在PWM和匹配功能当中进行选择。
PWM基于标准的定时器模块并具有其所有特性。
不过LPC2131/2132/2138只将其PWM功能输出到管脚。
定时器对外设时钟(pclk)进行计数,可选择产生中断或基于7个匹配寄存器,在到达指定的定时值时执行其它动作。
PWM功能是一个附加特性,建立在匹配寄存器事件基础之上。
2.2.1PWM特性
PWM脉宽调制,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。
PWM基于标准的定时器模块并具有其所有特性。
不过LPC2131/2132/2138只将其PWM功能输出到管脚。
定时器对外设时钟(pclk)进行计数,可选择产生中断或基于7个匹配寄存器,在到达指定的定时值时执行其它动作。
它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择在事件发生时产生中断。
独立控制上升和下降沿位置的能力使PWM可以应用于更多的领域。
两个匹配寄存器可用于提供单边沿控制的PWM输出。
一个匹配寄存器(PWMMR0)通过匹配时重新设置计数值来控制PWM周期率。
另一个匹配寄存器控制PWM边沿的位置。
每个额外的单边沿控制PWM输出只需要一个匹配寄存器,因为所有PWM输出的重复率速率是相同的。
多个单边沿控制PWM输出在每个PWM周期的开始,当PWMMR0发生匹配时,都有一个上升沿。
使用双边沿控制PWM输出时,指定的匹配寄存器控制输出的上升和下降沿。
这样就产生了正脉冲和负脉冲。
2.2.2PWM基本原理
脉宽调制(PWM)控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。
也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次斜波谐波少。
按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。
在采样控制理论中有一个重要的结论,即冲量相等而形状不同的窄脉冲加在具有惯性的环节上,其效果基本相同。
冲量既指窄脉冲的面积。
这里所说的效果基本相同。
是指该环节的输出响应波形基本相同。
如把各输出波形用傅里叶变换分析,则它们的低频段特性非常接近,仅在高频段略有差异。
根据上面理论我们就可以用不同宽度的矩形波来代替正弦波,通过对矩形波的控制来模拟输出不同频率的正弦波。
例如,把正弦半波波形分成N等份,就可把正弦半波看成由N个彼此相连的脉冲所组成的波形。
这些脉冲宽度相等,都等于 ∏/n ,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。
如果把上述脉冲序列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形脉冲的中点和相应正弦等分的中点重合,且使矩形脉冲和相应正弦部分面积(即冲量)相等,就得到一组脉冲序列,这就是PWM波形。
可以看出,各脉冲宽度是按正弦规律变化的。
根据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。
对于正弦的负半周,也可以用同样的方法得到PWM波形。
在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交-直-交变频器中,整流电路采用不可控的二极管电路即可,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。
2.2.3PWM相关寄存器
寄存器的功能理解:
1.IODIR当对应的位设置为1,为输出,否则为输入
2.IOSET当引脚作为输出时,相应的位为1,则输出高电平;写0无效
3.IOCLR当引脚作为输出时,相应的位为1,则输出低电平;写0无效
4.IOPIN用于检测GPIO的引脚的电平状态
软件设计PWM使用方法总结:
Ø配置相应的引脚工作于PWM模式下,相关寄存器为PINSEL0和PINSEL1;
Ø初始化PWM的定时器相关寄存器,用于产生PWM周期以及PWM的占空比;相关寄存器为:
1.PWMPR、PWMPC用于PWM定时器的预分频配置
2.PWMTC用于PWM定时器的计数
3.PWMMR0用于配置PWM的周期
4.PWMMR1~PWMMR6用于配置PWM的占空比
5.PWMMCR用于控制PWMMR0~PWMMR6的操作
6.PWMTCR用于PWM定时器的使能和PWM的使能
Ø配置PWM的输出方式和引脚使能输出,相关寄存器为PWMPCR;
Ø通过PWMLER使能PWMMR0~PWMMR6的值设置有效;
系统的主程序主要完成输出3路PWM信号,并由按键来控制调节。
当PWM匹配寄存器用于产生PWM时,PWM锁存使能寄存器用于控制PWM匹配寄存器的更新。
当定时器处于PWM模式时如果软件对PWM匹配寄存器位置执行写操作,写入的值将保存在一个映像寄存器中。
当PWM匹配0事件发生时(在PWM模式下,通常也会复位定时器),如果对应的锁存使能寄存器位已经置位,那么映像寄存器的内容将传送到实际的匹配寄存器中。
此时,新的值将生效并决定下一个PWM周期。
当发生新值传送时,LER中的所有位都自动清零。
在PWMLER中相应位置位和PWM匹配0事件发生之前,任何写入PWM匹配寄存器的值都不会影响PWM操作。
3软件设计
3.1系统整体设计
电路输出三路PWM信号,分别从LPC2138的P0.7、P0.8、P0.9管脚输出。
按键S1-S5分别控制PWM信号的周期,占空比以及是哪一路PWM信号输出。
由设计要求,可分析得出程序设计一共有以下几个模块:
(1)初始化程序设计,即初始化LPC2132芯片,设置P0.7、P0.8、P0.9为输出管脚。
(2)PWM信号发生设计,初始化LPC2132后,要开启PWM的专用定时器,通过它的匹配功能来产生PWM信号。
(3)变量控制,产生PWM信号后,要通过按键来调节PWM信号的周期和占空比。
(4)屏幕显示,产生PWM信号,送至示波器显示。
总体软件设计流程图如图3.1所示。
N
Y
NNNN
YYYY
图3.1总体软件设计流程图
总结:
1.修改匹配寄存器之后,必须设置锁存使能寄存器中的相应位,否则匹配寄存器的值不能生效。
2.第一次使能之后还要等到匹配才能装入MR0和MR1所以要出现连续的波形,必须使用两次3.2初始化程序流程图
3.2键盘驱动程序设计
图3.2PWM信号发生器按键功能
各按键功能如下:
1.开启电源,各模块初始化。
将示波器的探头接到芯片P0.7、P0.8、P0.9其中一路输出上,可以分别看到P0.7、P0.8和P0.9管脚的三路信号,表示电路工作正常。
2.按下S1键1次,则按键修改功能作用于P0.7管脚输出的PWM信号,即第1路PWM信号,再按S1键1次,则按键修改功能作用于P0.8管脚输出的PWM信号,即第2路PWM信号。
按下第3次按键,则按键修改功能作用于P0.9管脚输出的PWM信号,即第3路PWM信号。
3.按下S2键,可以看到示波器上显示的PWM信号占周期增大。
4.按下S3键,可以看到示波器上显示的PWM信号占周期减小。
5.按下S4键,可以看到示波器上显示的PWM信号的占空减小。
6.按下S5键,可以看到示波器上显示的PWM信号的占空增加。
按键的程序如下所示:
1.周期加减
if((IO0PIN&(1<{
delayns(100);
if((IO0PIN&(1<while((IO0PIN&(1<}
if((IO0PIN&(1<{delayns(100);
if((IO0PIN&(1<while((IO0PIN&(1<}
2.占空加减
if(((IO0PIN&(1<{
delayns(100);
if(((IO0PIN&(1<{
mr1pleve++;
}
while((IO0PIN&(1<}
elseif(((IO0PIN&(1<=1))//占空--
{
delayns(100);
if(((IO0PIN&(1<=1))
{
mr1pleve--;
}
while((IO0PIN&(1<}
break;
3.3PWM输出通道的选择
图3.3PWM输出通道的选择
本次设计可以输出三路PWM信号,分别从LPC2138的P0.7、P0.8、P0.9管脚选择输出。
当选择相应的输出时,对应的LED灯就会发亮,证明电路已接通,可以用示波器测试相应输出通道的波形。
程序如下所示:
voidkey_scan(void)
{
if((IO0PIN&(1<{delayns(100);
if((IO0PIN&(1<{
channelcount++;
if(channelcount>=4)channelcount=1;
}
while((IO0PIN&(1<}
4整机调试
整机调试分为静态调试和动态调试,动态调试中还包括对软件的调试,即对程序的修改。
调试完成后,进行数据的记录。
4.1静态调试
静态调试即不装上单片机芯片的调试,一块电路板做好后首先要进行静态调试。
静态调试即不装上芯片的调试,将制作好的PCB板,按照装配图或原理图进行器件装配,装配好之后进行电路的调试。
一块电路板做好后首先要进行静态调试。
(1)电路板的检查
首先用万用表检查电路板有无虚焊点、断路或短路。
在装配焊接过程中,在焊点接近的地方,很容易出现连焊或者残留焊锡而造成的短路情况。
如发现上述情况,应马上解决,以免影响调试。
本次对电路板的检查没有发现大问题,焊点无虚焊,无短路。
(2)元件装配的检查
在组装电路板时,很可能出现元件错装的情况,特别是芯片,很容易装反,调试前要对照原理图反复核对。
未通电前要对芯片以及一些元器件进行检测。
这次设计中用到的LED灯因为用前未检测,导致后面调试过程中lED灯一直不亮,最后发现LED灯是坏的,浪费了调试时间。
(3)通电检查
以上两项准备工作完成后,可以进行通电检查。
方法是先将万用表电流档串联在电源和所测电路板之间,观察电路总静态电流的大小。
若发现电流过大,说明电路可能有短路;电流过小或无电流,表示电路存在断路。
遇到上述情况,必须要先排除故障,才能进行调试。
通电后注意在各点上是否都加上了所需要的电压,特别是芯片的电压,因为如果加在芯片上的电压低了,就会达不到理想的效果,如果高了就很容易烧掉芯片。
若接线正确,则电路板上的芯片不会发热,且能在示波器上显示基本波形。
上电以后一旦发现芯片发热,马上断开电源,停止供电。
4.2动态调试
软件的调试主要是围绕着其所要求的功能来做的,要对程序的流程和算法做调整。
变量的定义,子函数的声明和主程序的执行等都要认真的进行检查修改。
软件的调试相当重要且繁琐,这花费了很多的时间。
调试程序,主要是管脚的定义有问题。
本次设计在装上芯片并从电脑烧录程序到2132中就开始进行功能检测,并将程序下载到2132中。
调试过程中遇到的基本问题的波形能够出来但不是稳定。
通过对程序的重新认识,发现程序中的某个地方发生死循环了,使得波形频率的加减不能改变。
最后经过对方案的考虑后,对程序做了一定的修改,最终将题目要求中的基本功能实现了。
当大体上完成了功能的编程以后,最后就是对算法的细节处理上进行调整和优化。
软件调好后,动态调试就结束了。
按照这个方法,调试其他路的PWM信号。
至此,PWM信号发生器的调试完毕。
4.3数据的测量和计算
4.3.1占空比计算
例如,选择第1路PWM