嵌入式 > 技术百科 > 详情

可编程脉冲发生器实现PWM和DAC功能

发布时间:2023-04-18 发布时间:
|

在要求脉宽调制(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

按照上面的指导原则可以使滤波器的功耗最小化。如果不遵循上述原则,计算将产生错误,使负载电阻相比于滤波器电阻太低,而负载电阻会影响滤波器频率。由于计算结果与1/10相乘,因此产生的误差将很小,可以忽略不计。

C=τfilter/Rfilter

在上面的RC参数值下,如果剩下的纹波电压太高,可以用两个RC滤波器串联起来。滤波器的频率(假设两个RC滤波器有相同的R和C)可以表示为:

C=τfilter/Rfilter

fg=(1/10)×fpwm

计算结果如下: τfilter=10/(√2×π×fpwm)

Rfilter=Rload/20,Cfilter=πfilter/Rload

这样,在PWM模式下PPG功能的数字输出可以用来控制模拟电路,实现低噪声、高效率、节约空间和低成本的设计。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
光纤通道的实时数字图像存储