单片机控制PWM.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机控制PWM.doc

单片机的PWM 控制技术 Eftichios Koutroulis,科斯塔斯卡Kalaitzakis,会员,IEEE和尼古拉斯长Voulgaris 1 PWM 控制技术 PWM 方式即脉冲宽度调制方式,如图1。主要有分辨率、周期两个参数,分辨率是指在一个周期内可控的最小时间,分辨率越高,控制精度也越高,一般用n 位二进制数表示,如8 位、10位、12 位、16 位等分辨率, 可控的最小工作时间:T1min= T2n , T1T也称作占空比。单片机应用于工业控制等方面时, 一般采用PWM 方式对模拟量进行控制,在周期T 一定的情况下,通过调整工作时间T1 来达到对模拟量控制的目的。单片机的PWM 方式是指单片机通过软、硬件在指定的I /O 口输出工作时间T1 可调的一定频率的方波信号。 2 几种实现PWM功能的方法及其工作原理 单片机要实现PWM 功能, 可以通过单片机的PWM 模块、程序模拟、定时器模拟、外置硬件电路等方法实现,以下介绍这几种方法的工作原理及其优缺点。 2.1 用单片机的PWM模块实现PWM功能 随着大规模集成电路的不断发展,寻找带有内置PWM 模块的单片机已经不是困难的事情,内置PWM 模块的单片机,其PWM 最大分辨率一般是10位,只要设置好PWM 工作的频率、分辨率等参数并启动,将占空比数据写入指定寄存器即可,程序流程如图2。单片机初始化时设置好PWM 模块参数并启动PWM 功能,根据需要采集模拟量数据,经运算分析调整占空比,再将占空比数据写到PWM 指定的寄存器中,周而复始,达到调整PWM 的目的。这种实现PWM 功能方法的优点是控制简单、控制程序短、程序用于处理PWM 功能所需占用的时间短,不足之处是输出的I /O 口必须是单片机内PWM 模块指定的I /O 口,不能任意改变,要同时实现多路PWM 功能时受到单片机内PWM 硬件资源的限制。 2.2 用程序模拟实现多路PWM功能 用单片机一个定时器资源产生公共的PWM 时基, 将该时基实时与各路PWM 所要求的占空比数据比较, 时基≤占空比数据时,对应输出口输出“1”,否则输出“0”。以模拟4 路8 位PWM 功能为例,设PWM 公共时基存于TIMER(00H~FFH)存储器中,各路占空比数据存于P1、P2、P3、P4(00H~FFH),PWM输出分别为OUT1、OUT2、OUT3、OUT4,选用TMR0 定时器,主程序和中断程序流程如图3。单片机初始化时设置好TMR0 定时器参数并启动TMR0 中断,根据需要采集模拟量数据,经运算分析调整各路占空比。TMR0 中断处理程序产生PWM 时基,每进入一次中断,TIMER 就加一,当到达FFH 后又从00H 开始累加。将时基TIMER 分别与各路占空比P1~P4 比较,时基大于占空比则对应输出“0”,否则对应输出“1”。例如要模拟4 路8 位100Hz 的PWM,定时中断设置延时时间应为(1/100Hz)×28 ≈40μs,图1 PWM 方式同时,还要选择尽可能高频率的时钟,要保证中断处理所需时间远小于中断设置延时时间,让单片机有足够的时间执行主程序。这种方法的优点是仅用一个定时器资源, 就能实现多路PWM,不需指定I /O 口,也就是可以在低端单片机上实现多路PWM 功能。但是,由于在中断处理过程中要处理的程序量大,无法提高PWM 的频率,PWM 的分辨率也不宜大于8 位, 因为大于8 位分辨率时, 各路占空比数据和时基数据都要用两个字节存储, 中断处理过程必须比较双字节数的大小, 程序会大大加长, 由于单片机的最高时钟频率是有限的, 因此会大大影响PWM 的频率。同样的道理, 如果要提高频率, 势必也会影响PWM 的分辨率。因此,当模拟的PWM 频率和分辨率都要求不高而又要同时模拟多路PWM 功能时可以使用这种方法。 2.3 用定时器模拟实现PWM功能 很多低端单片机并没有内置PWM 时模块, 某些应用场合并不需要用到中高端的单片机, 如果单片机的定时器资源有剩余,可以利用定时器资源模拟PWM 功能。具体方法如下:根据要模拟PWM 的精度要求, 确定用于保存占空比数据的存储器的位数(一般为8 位、10 位、12 位、16 位等),根据频率要求设置好定时器的预分频参数,将图一中的工作时间和(周期-工作时间)交替写入定时器,即可实现PWM 功能。假定用16 位定时器TMR1 模拟16 位PWM 功能, 定时器的计数存储器为TMR1H:TMR1L,从0000h 开始递增计数,一直加到FFFFh 后,再翻转到0000h,同时TMR1 溢出时会产生中断,占空比数据存于P1H:P1L,中断处理程序流程图如图4,因为定时器为正计数溢出中断,因此定时器在模拟PWM 的工作时间时,要将P1H:P1L 的补码送入TMR1

文档评论(0)

tianma2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档