可编程脉冲发生器实现PWM和DAC功能
发布时间:2008/5/28 0:00:00 访问次数:1296
在要求脉宽调制(pwm)输出功能或需要产生模拟电压来控制外部器件,而微控制器本身内部不具备这些功能时,有几种方法可以用来产生脉宽调制输出,最简单的方法是从微控制器专用pwm定时器中产生。然而,并不是所有的微控制器都具有pwm定时器。另一种方法是用片上16位可编程脉冲发生器(ppg)的定时器来实现该功能,内置16位ppg定时器的微控制器可以配置成pwm模式来产生周期不变、具有各种脉冲宽度的波形,并与一个专用的外部或软件触发器保持同步。
pwm的一些典型应用如控制汽车尾灯或仪表盘亮度的调光器、小型直流风扇的电机速度控制器、小型加热器控制器,甚至是数模转换器(dac),在这些dac上增加一些简单的外部电路,就可以在精度要求不太高的应用中用来控制外部器件。
为一个仪表盘灯光调节器,mb90f428g是一个具有ppg功能的微控制器。将微控制器的16位ppg定时器配置为连续pwm模式来获得脉宽调制输出,以用于汽车仪表盘灯光亮度控制。产生的pwm与内部软件触发器同步,或与一个外部触发器同步。
mcu使用一个4mhz的主时钟,通过内部分频器可以得到期望的时钟频率,将该频率作为16位递减计数器的输入。pcsr是一个用于设置间隙时间的16位数据寄存器;pdut是用于占空比设置的16位比较寄存器,也是一个引脚控制字段。脉冲输出的间隙时间和占空比可以通过改变这两个16位寄存器的值来自由设置,该特性能帮助ppg工作在pwm模式。在pwm模式中,当外部触发信号位于“p05/sck1/trg”引脚处,或内部软件触发器产生信号时,将发出一个起动触发信号,在检测到该触发信号后mcu将产生连续脉冲输出。另一个重要的16位寄存器是“pcnt”,这是一个ppg控制和状态寄存器,从0到15位可以用来选择所需的时钟、模式(如pwm)、触发类型、ppg输出使能,以及中断请求。
说明了ppg作为pwm输出的功能配置,通过精确控制pwm输出的周期和占空比可以改变白炽灯的亮度。mc3392是一个具有故障报告功能的单低边保护开关。输入到mc3392的信号可以兼容cmos、ttl电平,该信号从微控制器的ppg0引脚91输出。典型的脉冲调制输出频率是80hz,该频率可以避免产生眼睛可以感觉的闪烁,输出脉冲的占空比可以在3%至97%之间设置,当为3%时灯不亮,而在97%时灯看起来一直处于导通状态。mc3392有一个1a的内部短路保护,并具有一个独特的电流回馈功能。该器件还有一个内部输出箝位电路,用于感性负载的过流、过压和过热保护。因此,mc3392输出端可以连接灯的数目取决于总负载电流的大小,该电流应小于1a。发光二极管“d1”用来表示出现系统故障,如过压、过流或热关断。
在pwm模式中使用ppg的另一个应用是小型直流风扇所用的电机速度控制,该电路也可以用于小型加热器控制器或直流灯调光器。在pwm模式下ppg输出产生一个具有可变通断比的方型波,平均导通时间可以在10%到100%之间变化,该应用将ppg设置成频率为400hz的脉宽调制输出。
脉宽调制的另一个优点是脉冲能达到满程供电电压,从而可以更容易地克服电机内部电阻,产生更大的电机力矩。图中q1是n沟道irf521 mosfet,用来驱动负载,该功率开关接收栅极脉宽调制电压,通过源-漏极电流通路来实现对负载电流的开关。当q1导通时为负载提供一个接地通路,当q1断开时,负载的接地断开。要确保负载端不接地,否则会产生短路。电源电压一直加在负载的正电压端,根据不同的脉冲宽度发光二极管产生相应的亮度。电容c3用来平滑开关波形,并过滤掉一些rfi。二极管d2是1n4004,是一个续流二极管,用来断开来自感性负载的电压反冲。c4是一个0.1μf/50v的陶瓷电容。当工作负载小于或等于1a时,q1不需要散热器,而如果需要更大电流,则需要将q1替换成一个带散热器的大电流器件(如irfz34n)。此时,对于某些电机而言还必须用一个更快速和更大电流的二极管来替代d1。
与前面所述的应用相比,除了时钟频率、周期和占空比设置寄存器值需要改变外。
在某些应用中需要微控制器用模拟信号来控制外部器件,但一般微控制器芯片上没有dac,而外部dac成本较高。此时,用一个简单的外部rc电路来构成一个低通滤波器,用mcu pwm模式的ppg定时器来产生模拟信号输出是一个较好的方法。这样一个dac的优点是它的分辨率可以由软件来设置,并且该dac的基本原理是产生pwm输出。电路只用少数外部元件就提供了高分辨率,其缺点是响应慢,并因此产生一个模拟电压纹波。r和c的值可以用下面的公式来计算:
fg=1/2π×rfilter×cfilter
这里fg是滤波器频率,rfilter是滤波器电阻,cfilter是滤波器电容。
标准的设计是使fg=(1/10)×fpwm
τfilter=10/(2π×fpwm), 给出了外部滤波器的rc时间常数。
标准的设计规则要求rfilter=rload/10
按照上面的指导原则可以使滤波器的功耗最小化。如果不遵循上述原则,计算将产生错误,使负载电阻相比于滤波器电阻太低,而负载电阻会影响滤波器频率。由于计算结
在要求脉宽调制(pwm)输出功能或需要产生模拟电压来控制外部器件,而微控制器本身内部不具备这些功能时,有几种方法可以用来产生脉宽调制输出,最简单的方法是从微控制器专用pwm定时器中产生。然而,并不是所有的微控制器都具有pwm定时器。另一种方法是用片上16位可编程脉冲发生器(ppg)的定时器来实现该功能,内置16位ppg定时器的微控制器可以配置成pwm模式来产生周期不变、具有各种脉冲宽度的波形,并与一个专用的外部或软件触发器保持同步。
pwm的一些典型应用如控制汽车尾灯或仪表盘亮度的调光器、小型直流风扇的电机速度控制器、小型加热器控制器,甚至是数模转换器(dac),在这些dac上增加一些简单的外部电路,就可以在精度要求不太高的应用中用来控制外部器件。
为一个仪表盘灯光调节器,mb90f428g是一个具有ppg功能的微控制器。将微控制器的16位ppg定时器配置为连续pwm模式来获得脉宽调制输出,以用于汽车仪表盘灯光亮度控制。产生的pwm与内部软件触发器同步,或与一个外部触发器同步。
mcu使用一个4mhz的主时钟,通过内部分频器可以得到期望的时钟频率,将该频率作为16位递减计数器的输入。pcsr是一个用于设置间隙时间的16位数据寄存器;pdut是用于占空比设置的16位比较寄存器,也是一个引脚控制字段。脉冲输出的间隙时间和占空比可以通过改变这两个16位寄存器的值来自由设置,该特性能帮助ppg工作在pwm模式。在pwm模式中,当外部触发信号位于“p05/sck1/trg”引脚处,或内部软件触发器产生信号时,将发出一个起动触发信号,在检测到该触发信号后mcu将产生连续脉冲输出。另一个重要的16位寄存器是“pcnt”,这是一个ppg控制和状态寄存器,从0到15位可以用来选择所需的时钟、模式(如pwm)、触发类型、ppg输出使能,以及中断请求。
说明了ppg作为pwm输出的功能配置,通过精确控制pwm输出的周期和占空比可以改变白炽灯的亮度。mc3392是一个具有故障报告功能的单低边保护开关。输入到mc3392的信号可以兼容cmos、ttl电平,该信号从微控制器的ppg0引脚91输出。典型的脉冲调制输出频率是80hz,该频率可以避免产生眼睛可以感觉的闪烁,输出脉冲的占空比可以在3%至97%之间设置,当为3%时灯不亮,而在97%时灯看起来一直处于导通状态。mc3392有一个1a的内部短路保护,并具有一个独特的电流回馈功能。该器件还有一个内部输出箝位电路,用于感性负载的过流、过压和过热保护。因此,mc3392输出端可以连接灯的数目取决于总负载电流的大小,该电流应小于1a。发光二极管“d1”用来表示出现系统故障,如过压、过流或热关断。
在pwm模式中使用ppg的另一个应用是小型直流风扇所用的电机速度控制,该电路也可以用于小型加热器控制器或直流灯调光器。在pwm模式下ppg输出产生一个具有可变通断比的方型波,平均导通时间可以在10%到100%之间变化,该应用将ppg设置成频率为400hz的脉宽调制输出。
脉宽调制的另一个优点是脉冲能达到满程供电电压,从而可以更容易地克服电机内部电阻,产生更大的电机力矩。图中q1是n沟道irf521 mosfet,用来驱动负载,该功率开关接收栅极脉宽调制电压,通过源-漏极电流通路来实现对负载电流的开关。当q1导通时为负载提供一个接地通路,当q1断开时,负载的接地断开。要确保负载端不接地,否则会产生短路。电源电压一直加在负载的正电压端,根据不同的脉冲宽度发光二极管产生相应的亮度。电容c3用来平滑开关波形,并过滤掉一些rfi。二极管d2是1n4004,是一个续流二极管,用来断开来自感性负载的电压反冲。c4是一个0.1μf/50v的陶瓷电容。当工作负载小于或等于1a时,q1不需要散热器,而如果需要更大电流,则需要将q1替换成一个带散热器的大电流器件(如irfz34n)。此时,对于某些电机而言还必须用一个更快速和更大电流的二极管来替代d1。
与前面所述的应用相比,除了时钟频率、周期和占空比设置寄存器值需要改变外。
在某些应用中需要微控制器用模拟信号来控制外部器件,但一般微控制器芯片上没有dac,而外部dac成本较高。此时,用一个简单的外部rc电路来构成一个低通滤波器,用mcu pwm模式的ppg定时器来产生模拟信号输出是一个较好的方法。这样一个dac的优点是它的分辨率可以由软件来设置,并且该dac的基本原理是产生pwm输出。电路只用少数外部元件就提供了高分辨率,其缺点是响应慢,并因此产生一个模拟电压纹波。r和c的值可以用下面的公式来计算:
fg=1/2π×rfilter×cfilter
这里fg是滤波器频率,rfilter是滤波器电阻,cfilter是滤波器电容。
标准的设计是使fg=(1/10)×fpwm
τfilter=10/(2π×fpwm), 给出了外部滤波器的rc时间常数。
标准的设计规则要求rfilter=rload/10
按照上面的指导原则可以使滤波器的功耗最小化。如果不遵循上述原则,计算将产生错误,使负载电阻相比于滤波器电阻太低,而负载电阻会影响滤波器频率。由于计算结