基于ARM嵌入式的PWM信号发生器制作.doc

上传人:仙人指路1688 文档编号:4147979 上传时间:2023-04-07 格式:DOC 页数:25 大小:546KB
返回 下载 相关 举报
基于ARM嵌入式的PWM信号发生器制作.doc_第1页
第1页 / 共25页
基于ARM嵌入式的PWM信号发生器制作.doc_第2页
第2页 / 共25页
基于ARM嵌入式的PWM信号发生器制作.doc_第3页
第3页 / 共25页
基于ARM嵌入式的PWM信号发生器制作.doc_第4页
第4页 / 共25页
基于ARM嵌入式的PWM信号发生器制作.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《基于ARM嵌入式的PWM信号发生器制作.doc》由会员分享,可在线阅读,更多相关《基于ARM嵌入式的PWM信号发生器制作.doc(25页珍藏版)》请在三一办公上搜索。

1、编号: 嵌入式系统设计 实训 (论文)说明书题 目: PWM信号发生器制作 院 (系): 应用科技学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 2011 年 01月 19 摘 要脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。本课题设计PWM信号发生器,采用LPC2138中央控制单元,五个按键分别调节PWM信号的周期占空比等,利用示波器显示。模块化的设计和调试方法在整个课题研究过程中至关重要,事实上在任何设计

2、中也同样关键和有效。关键字:PWM;微处理器;LPC2138;按键;周期; AbstractThe Pulse Width Modulation (PWM), is English Width Modulation abbreviation of points, abbreviation Pulse Width Modulation is the use of the microprocessor digital output to analog circuits to control an effective technology, widely used in from measureme

3、nt, communication to power control and transform in many areas. This topic design PWM signal generator, using LPC2138 central control unit, five buttons respectively adjust PWM signal cycles 390v etc., using an oscilloscope display. Modular design and debug method in the whole subject research proce

4、ss is of vital importance to in fact in any design also key and effectively. Keywords:PWM;microprocessor; LPC2138; Button; cycle目 录引言11 设计任务22 硬件设计22.1 总体设计方案与系统构成22.2 LPC2138芯片22.2.1LPC2138管脚22.2.2LPC2138主要性能32.2.3LPC2138的应用42.3 PWM模块52.3.1PWM特性52.3.2PWM寄存器应用举例62.4 硬件电路图72.5 硬件电路PCB73 软件设计83.1 整体设计

5、83.2 初始化程序流程图93.2.1初始化程序流程图103.2.2初始化程序104 PWM信号发生器调试124.1 硬件电路检测124.2 功能调试125 数据测量和计算125.1 占空比计算125.2 信号频率误差计算136 改进方案13结论14谢 辞15参考文献16引言脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最

6、广泛应用的控制方式,也是人们研究的热点.由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一。随着电子技术的发展,出现了多种PWM技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。 1 设计任务(1)输出三路及以上PW

7、M信号(2)PWM信号频率(周期)可调。(3)PWM信号相位差可调。(4)PWM信号频率误差100HZ。2 硬件设计2.1 总体设计方案与系统构成本次实训课题基于嵌入式ARM的PWM信号发生器。软件程序从下载口接入LPC2138嵌入式芯片,通过PWM专用的标准定时器还有匹配器以及一些控制电路来实训PWM的输出。电路系统构成框图如图2.1所示。图2.1电路系统构成2.2 LPC2138芯片本系统主要由嵌入式ARM芯片LPC2138构成,PWM信号由示波器显示。原理图见附录12.2.1LPC2138管脚管脚图如图2.2.1所示图2.2.1LPC2138管脚图2.2.2LPC2138主要性能(1)小

8、型LQFP64封装的16/32位ARM7TDMI-S微控制器。 (2)8/16/32kB片内静态RAM。 (3)片内Boot装载软件实现在系统/在应用中编程(ISP/IAP) 。扇区擦除或整片擦除的时间为400ms,1ms可编程256字节。 (4)EmbeddedICERT 和嵌入式跟踪接口可实时调试(利用片内 RealMonitor 软件)和高速跟踪执行代码。 (5)1个(LPC2132/2132)或 2 个(LPC2138)8 路 10 位 A/D 转换器共包含 16 个模拟输入,每个通道的转换时间低至2.44us。 (6)1个10位D/A转换器,可提供不同的模拟输出(LPC2132/21

9、38) 。 (7)2个32位定时器/计数器(带4路捕获和4路比较通道) 、PWM单元(6路输出)和看门狗。 (8)实时时钟具有独立的电源和时钟源,在节电模式下极大地降低了功耗。 (9)多个串行接口,包括2个16C550工业标准 UART、2个高速I2C接口(400 kbit/s) 、SPITM 和SSP(具有缓冲功能,数据长度可变) 。 (10)向量中断控制器。可配置优先级和向量地址。 (11)多达47个5V的通用I/O口(LQFP64封装) 。 (12)9个边沿或电平触发的外部中断引脚。 (13)通过片内PLL可实现最大为60MHz 的 CPU操作频率,PLL的稳定时间为100us。 (14

10、)片内晶振频率范围:130 MHz。 (15)2个低功耗模式:空闲和掉电。(16)可通过个别使能/禁止外部功能和降低外部时钟来优化功耗。 (17)通过外部中断将处理器从掉电模式中唤醒。 (18)单个电源供电,含有上电复位(POR)和掉电检测(BOD)电路:CPU操作电压范围:3.03.6 V (3.3 V+/ 10%),I/O口可承受5V的最大电压。2.2.3LPC2138的应用(1)工业控制(2)医疗系统(3)访问控制(4)POS机(5)通信网关(6)嵌入式软moderm(7)一般性应用2.3 PWM模块LPC2138的脉宽调制器建立在前一章的标准定时器0/1之上。应用可在PWM和匹配功能当

11、中进行选择。PWM基于标准的定时器模块并具有其所有特性。 不过LPC2131/2132/2138只将其PWM 功能输出到管脚。定时器对外设时钟(pclk)进行计数,可选择产生中断或基于7个匹配寄存器,在到达指定的定时值时执行其它动作。它还包括 4 个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择在事件发生时产生中断。PWM功能是一个附加特性,建立在匹配寄存器事件基础之上2.3.1PWM特性1. 7个匹配寄存器,可实现6个单边沿控制或3个双边沿控制PWM输出,或这两种类型的混合输出:(1)连续操作,可选择在匹配时产生中断(2)匹配时停止定时器,可选择产生中断(3)匹配时复位定时器,可选

12、择产生中断2. 每个匹配寄存器对应一个外部输出,具有下列特性:(1)匹配时设置为低电平(2)匹配时设置为高电平(3)匹配时翻转(4)匹配时无动作3. 支持单边沿控制和/或双边沿控制的PWM 输出。单边沿控制PWM输出在每个周期开始时总是为高电平,除非输出保持恒定低电平。 双边沿控制PWM输出可在一个周期内的任何位置产生边沿。这样可同时产生正和负脉冲。4. 脉冲周期和宽度可以是任何的定时器计数值。这样可实现灵活的分辨率和重复速率的设定。所有PWM输出都以相同的重复率发生。5. 双边沿控制的PWM输出可编程为正脉冲或负脉冲。6. 匹配寄存器更新与脉冲输出同步,防止产生错误的脉冲。软件必须在新的匹配

13、值生效之前将它们释放。7. 如果不使能PWM模式,可作为一个标准定时器。8. 带可编程32位预分频器的32位定时器/计数器。9. 当输入信号跳变时4个捕获寄存器可取得定时器的瞬时值,也可选择使捕获事件产生中断。2.3.2PWM寄存器应用举例图2.3.2所示为一个用来说明 PWM 值与波形输出之间关系的例子。所示的波形是单个PWM周期,它演示了在下列条件下的PWM输出:(1)定时器配置为PWM模式(2)匹配寄存器0配置为在发生匹配事件时复位定时器/计数器(3)控制位PWMSEL2和PWMSEL4置位(4)匹配寄存器值如下:MR0=100 (PWM速率) MR1=41, MR2=78 (PWM2输

14、出)MR3=53, MR4=27 (PWM4输出)MR5=65 (PWM5输出)图2.3.2PWM输出波形2.4 硬件电路图电路输出三路PWM信号,分别从LPC2138的P0.7、P0.8、P0.9管脚输出。按键S1-S5分别控制PWM信号的周期,占空比以及是哪一路PWM信号输出。硬件电路图如图2.4所示:图2.4硬件电路图2.5 硬件电路PCBPWM信号发生器电路的PCB如图2.5所示: 图2.5硬件电路PCB3 软件设计系统的主程序主要完成输出3路PWM信号,并由按键来控制调节。3.1 整体设计由设计要求,可分析得出程序设计一共有以下几个模块:(1)初始化程序设计,主要是初始化LPC213

15、8芯片,设置P0.7、P0.8、P0.9为输出管脚。(2)PWM信号发生设计,初始化LPC2138后,要开启PWM的专用定时器,通过它的匹配功能来产生PWM信号。(3)变量控制,产生PWM信号后,要通过按键来调节PWM信号的周期和占空比。(4)屏幕显示,产生PWm信号,送至示波器显示。总体软件设计流程图如图3.1所示。扫描按键输出第1路PWM信号输出第2路PWM信号输出第3路PWM信号开始程序初始化设置PWM寄存器产生PWM信号扫描按键S1?按下1次S1?按下2次S1?按下3次S1?S2?S3?S4?S5?信号占空比增大信号占空比减小信号周期增大信号周期减小示波器显示 N Y N N N N

16、Y Y Y Y图3.1总体软件设计流程图3.2 初始化程序流程图3.2.1 初始化程序流程图初始化程序流程图如图3.2所示:开始按键S1-S5控制芯片P1.16-P1.20打开PWM2、PWM4、PWM6三路信号口设置PWM周期控制寄存器MR0设置PWM三路信号的上升沿寄存器MR1、MR3、MR5设置PWM三路信号的下降沿寄存器MR2、MR4、MR6设置锁存LER启动PWMTCR图3.2 初始化程序流程图3.2.2初始化程序初始化程序如下#include #define SW_1 (16)#define SW_2 (17)#define SW_3 (18)#define SW_4 (19)#d

17、efine SW_5 (20)IO1DIR &= (0 SW_1);/P1.16为输入管脚IO1DIR &= (0 SW_2); /P1.17为输入管脚IO1DIR &= (0 SW_3); /P1.18为输入管脚IO1DIR &= (0 SW_4); /P1.19为输入管脚IO1DIR &= (0 SW_5); /P1.20为输入管脚IO1SET |= (1 SW_1); /P1.16连接S1按键IO1SET |= (1 SW_2); /P1.17连接S2按键IO1SET |= (1 SW_3); /P1.18连接S3按键IO1SET |= (1 SW_4); /P1.19连接S4按键IO1

18、SET |= (1 SW_5); /P1.20连接S5按键PINSEL0 |= 0x000a8000;/设置P0.7、P0.8、P0.9为三路PWM信号输出管脚PWMPCR = 0x0005454;/开启PWM2、PWM4、PWM6双边沿通道PWMMR0 = cycletime;/设置周期作为变量PWMMR1 = 0x00000080;/PWM2的上升沿控制通道MR1PWMMR2 = 0x00000080;/ PWM2的下降沿控制通道MR2PWMMR3 = 0x00000080;/ PWM4的上升沿控制通道MR3PWMMR4 = 0x00000080;/ PWM4的下降沿控制通道MR4PWMM

19、R5 = 0x00000080;/ PWM6的上升沿控制通道MR5PWMMR6 = 0x00000080;/ PWM6的下降沿控制通道MR6PWMLER = 0x0000007f;/锁存 PWMTCR = 0x00000009;/开启PWM4 PWM信号发生器调试4.1 硬件电路检测制作好的PCB板,按照装配图或原理图进行器件装配,装配好之后进行电路的调试。调试规则为:打开电源之前,先按照系统原理图检查制作好的电路板的通断情况,并取下PCB上的集成块,然后接通电源,用万用表检查板上的各点的电源电压值,完好之后再关掉电源,插上集成块。4.2 功能调试将写好的程序烧到板子上。然后板子接上电源,电源

20、显示灯亮,开始调试。PWM信号发生器按键功能如图4.2所示图4.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)按下S2键,可以看到示波器上显示的第2路PWM信号占空比增大。(4)按下S3键,可以看到示波器上显示的第2路PWM信号占空比减小。(5)按下S4键,可以看到示波器上显示

21、的第2路PWM信号的周期增大。(6)按下S5键,可以看到示波器上显示的第2路PWM信号的周期减小。按照这个方法,调试其他路的PWM信号。至此,PWM信号发生器的调试完毕。5 数据测量和计算5.1 占空比计算选择第1路PWM信号进行测量.通过软件编译设置初始值,周期MR0=100,低电平MR1=20,高电平MR2=60,观看示波器上的方波,测量数值,可得周期T=8,12us,高电平=4.9us,则由此可以看出,输出的波形是正确的,且误差不大。5.2 信号频率误差计算LPC2138PWM的晶振频率,软件设定,则理论PWM的输出频率为: 观察示波器,屏幕显示实际频率,则误差在100HZ以内,符合题目

22、要求。6 改进方案PWM信号发生器制作简单,功能很多。若在以上我们制作的基础上,加上一些模块,还可以实现诸多功能。1.将输出的PWM信号驱动直流电机。2.增加按键实现对直流电机的简单调速。 结论这次实训匆忙的结束了。由于考研的原因使得这次实训时间不够,且在制作过程中遇到了好多困难,但总的来说,我基本按要求完成了PWM信号发生器这个设计的要求。尽管这次基本能完成了设计的要求,但我觉得我还有很多需要改进的地方,也许是时间有限的原因,所以,以后很长一段时间,还需加强这方面的学习。在这实训中,把理论和实践相结合,我学到了许多新的知识。首先,设计电路的整个过程中,我深刻体会到电子电路的设计以及生产流程、

23、安装、布局、布线、焊接等。提高了理论知识与实际动手结合的能力,这让我对数字电路和模拟电路都有了更深刻的理解。其次,这次设计,我从中了解到了各种集成电路方面的知识,熟悉了很多以前从未接触过的芯片,对各种芯片的功能以及其可能组成的电路都有了一部分的了解。最后,掌握了protel的应用技巧,用prolel制作电路板的过程中,从绘制原理图到封装器件,到最后作出PCB图都遇到很多问题,在同学和老师的指导之下我都依次解决了这些问题。设计过程,在调试电路的时候,遇到的问题最多,由于我是第一次嵌入式芯片,刚开始调试都是从电路的最前面一点一点测试工作点的电压值,以及当输入电压变化的时候每块芯片的输入输出端应有的

24、变化,每一部分电路都应实现自己的功能,才能得出最终的结果,达到目标。我认为调试电路不但要熟悉基础电路知识,还要有相当的调试经验,但电路出现问题的时候应该大胆的做尝试,在这方面我比较欠缺,我会在以后的工作学习中尽量弥补自己的弱点。经过这次设计,我觉得自己真的学到了不少东西。同时学会了怎样查阅资料和利用工具书。在这次设计过程中经常遇到一些不曾学过的东西,但能有针对性地查找资料,然后加以吸收利用,提高了自己的应用能力,而且还增长了自己的见识,补充了专业知识,增强了自己的动手能力,而且还磨练了自己的耐性。收获颇多。谢 辞通过本次设计不仅是对我们的专业知识的检查与总结,而且是对今后学习研究的一种的激励。

25、在陈小毛、符强、严素青、孙安青老师的指导下和同学们的协助下,我的设计到此已经完全结束。紧张的日子也总算告一段落。回味起来,感触颇多。在此过程中,我遇到了许多问题,通过老师和同学的帮助以及自己查阅资料等多种途径,解决了许多问题,也提高了自己独立思考问题、分析问题、解决问题的能力,同时也提高了实践能力。最后我要感谢这段时间来所有帮助过我的老师、同学和朋友,是你们让我的不断发现自己的不足并帮助我解决一个个设计上的问题,给我留下了美好的回忆。谢谢你们!参考文献1 崔更申 孙安青.ARM嵌入式系统开发与实践M.北京:中国电力出版社,20082 何加铭. 嵌入式32位微处理器系统设计与应用M. 北京:电子

26、工业出版社,20063 杨宗德. 嵌入式ARM系统原理与实例开发M. 北京:北京大学出版社,2007 4 刘天时等 .ARM7嵌入式开发基础实验M. 北京:北京航空航天大学出版社,20075 张绮文.ARM 嵌入式常用模块与综合系统设计实例精讲.北京:电子工业出版社,2007.6 欧阳禹.ARM7嵌入式系统实训教程.北京:清华大学出版社,2008. 附 录原理图主程序代码#include #define SW_1 (16)#define SW_2 (17)#define SW_3 (18)#define SW_4 (19)#define SW_5 (20)unsigned int cyclet

27、ime=150,mr1pleve=25,mr2nleve=75,mr3pleve=20,mr4nleve=80,mr5pleve=15,mr6nleve=85;unsigned int channelcount=1;int main(void)unsigned int delay;long j;IO1DIR &= (0 SW_1);IO1DIR &= (0 SW_2);IO1DIR &= (0 SW_3);IO1DIR &= (0 SW_4);IO1DIR &= (0 SW_5);IO1SET |= (1 SW_1);IO1SET |= (1 SW_2);IO1SET |= (1 SW_3);

28、IO1SET |= (1 SW_4);IO1SET |= (1 SW_5);PINSEL0 |= 0x000a8000;/Enable pin 0.7 as PWM2 PWMPR = 0x00000001;/Load prescaler PWMPCR = 0x0005454;/PWM channel 2 double edge control, output enabledPWMMCR = 0x00000002;/On match with timer reset the counterPWMMR0 = cycletime;/set cycle rate to sixteen ticksPWM

29、MR1 = 0x00000080;/set rising edge of PWM2 to 2 ticksPWMMR2 = 0x00000080;/set falling edge of PWM2 to 8 ticksPWMMR3 = 0x00000080;/set rising edge of PWM2 to 2 ticksPWMMR4 = 0x00000080;/set falling edge of PWM2 to 8 ticksPWMMR5 = 0x00000080;/set rising edge of PWM2 to 2 ticksPWMMR6 = 0x00000080;/set f

30、alling edge of PWM2 to 8 ticksPWMLER = 0x0000007f;/enable shadow latch for match 0 - 2 /PWMEMR = 0x00000280;/Match 1 and Match 2 outputs set highPWMTCR = 0x00000002;/Reset counter and prescaler PWMTCR = 0x00000009;/enable counter and PWM, release counter from resetwhile(1)if(IO1PIN & (1 SW_1) = 0)fo

31、r(j=0;j10000;j+);if(IO1PIN & (1 =4)channelcount=1;while(IO1PIN & (1 SW_1) = 0);if(IO1PIN & (1 SW_3) = 0)for(j=0;j10000;j+);if(IO1PIN & (1 SW_3) = 0)cycletime+;while(IO1PIN & (1 SW_3) = 0);if(IO1PIN & (1 SW_5) = 0)for(j=0;j10000;j+);if(IO1PIN & (1 SW_5) = 0)cycletime-;while(IO1PIN & (1 SW_5) = 0);if(

32、channelcount=1)if(IO1PIN & (1 SW_4) = 0)&(mr1pleve=cycletime)for(j=0;j10000;j+);if(IO1PIN & (1 SW_4) = 0)&(mr1pleve=cycletime)mr1pleve+;while(IO1PIN & (1 SW_4) = 0);if(IO1PIN & (1 =1)for(j=0;j10000;j+);if(IO1PIN & (1 =1)mr1pleve-;while(IO1PIN & (1 SW_2) = 0); if(channelcount=2)if(IO1PIN & (1 SW_4) =

33、 0)&(mr1pleve=cycletime)for(j=0;j10000;j+);if(IO1PIN & (1 SW_4) = 0)&(mr1pleve=cycletime)mr3pleve+;while(IO1PIN & (1 SW_4) = 0);if(IO1PIN & (1 =1)for(j=0;j10000;j+);if(IO1PIN & (1 =1)mr3pleve-;while(IO1PIN & (1 SW_2) = 0);if(channelcount=3)if(IO1PIN & (1 SW_4) = 0)&(mr1pleve=cycletime)for(j=0;j10000

34、;j+);if(IO1PIN & (1 SW_4) = 0)&(mr1pleve=cycletime)mr5pleve+;while(IO1PIN & (1 SW_4) = 0);if(IO1PIN & (1 =1)for(j=0;j10000;j+);if(IO1PIN & (1 =1)mr5pleve-;while(IO1PIN & (1 SW_2) = 0); for(delay=0;delay0x100;delay+);PWMMR0 = cycletime;/set cycle rate to sixteen ticksPWMMR1 = mr1pleve; /Modulate PWMP

35、WMMR2 = mr2nleve;PWMMR3 = mr3pleve; /Modulate PWMPWMMR4 = mr4nleve;PWMMR5 = mr5pleve; /Modulate PWMPWMMR6 = mr6nleve;/PWMLER = 0x0000007f;/enable shadow latch for match 0 - 2 /PWMEMR = 0x00000280;/Match 1 and Match 2 outputs set highPWMTCR = 0x00000009;/Reset counter and prescaler PWMTCR = 0x00000009;/enable counter and PWM, release counter from resetPWMLER = 0x0000007f; /set latch to update PWM registers next cycle

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号