一种基于PWM快速产生模拟电压的方法

来源:华强电子网 作者:—— 时间:2010-11-05 11:49

在电子和自动化技术的应用中,数字信号转换模拟控制信号输出是电子设计中常见的问题,然而许多单片机内部并没有集成数摸转换器(DAC)。当然市场上也有一些专用的D/A转换芯片,但这类芯片价格昂贵,并且需要多个处理器功能管脚来控制,这对一般的简单应用是不适合的。

所以在有些应用中,由单片机的PWM输出(或者通过定时器和软件一起来实现PWM输出),经过简单RC滤波电路实现DAC来得到模拟电压是一种比较好的选择。然后,这种方法的一个缺点就是电平转换时间过长,本文提出了一种新的方法来克服该问题。

2, RC滤波电路

图1是传统的RC滤波电路,PSoC通过GPIO口和RC滤波产生模拟电压

图1


图1,RC滤波电路产生模拟电压

在这种方法中,PWM通过Px[y]输出,Vout即是需要的模拟电压。PWM的输出在电压VDD和0之间变换,PWM的占空比(DC)决定Vout的输出值。增加DC输出电压也会跟着增加(当DC=0%时,Vout=GND; 当DC=100%时,Vout=VDD)。

这种方法比较简单,但缺点是电平转换时间长。例如,当DC从一个值变到另一个值时,可能要几个ms才能使Vout从一个电压变换到最终的稳定电压,如图2所示。

图2


图2,RC滤波电路的电平转换时间

较长的电平转换时间在有些应用中是不适用的,下面我将提供一个新的方法来减小该时间。当然,也可通过减小电容电阻(RC)值并提高PWM频率来缩短电平转换时间,但有些单片机的固有缺陷而没办法提高PWM频率时就没办法了。

3, 电压跟随器电路

本文介绍一种新的方法能把转换时间减小到几十us,该方法除了RC滤波外,还使用了电阻、三极管以及另外一个GPIO口,三极管设计为电压跟随器模式,如下图3所示:

图3


图3,电压跟随器电路产生模拟电压

三极管T是模拟电压Vc到Vout的开关。在空闲状态下设置Pa[b]为“strong drive”模式,并置为高电平(逻辑1),这样,Vout = VDD, 下列步骤将使Vout从空闲状态变换到指定的电压状态。

1)使能PWM并设定为指定的占空比DC。在计算PWN占空比时要考虑到三极管be间的压降(Vbe)。Vc = Vout + Vbe,得出DC = (Vout + Vbe)/VDD.

2) 做足够长时间的延迟以使Vc稳定在指定的电压,注意在这延迟的时间内Vout保持高电平VDD。

3) 设置GPIO口Pa[b]的驱动模式为“High-Z analog”,这将导致三极管T工作状态并且Vout将立即变为指定的最终电压(只需要几十个微秒)。

下列步骤将使Vout从指定的电压变换到空闲状态(Vout = VDD)

1)  设置Pa[b]的驱动模式为“strong drive”并置该PIN为高电平,Vout 将立即变为VDD.

2)  如果需要,此时可停止Px[y]口的PWM以减小功耗。

电平转换如图4所示,当Vc在电压下降的非稳态过程中,Vout还保持高电平。

图4


图4


图4,电压跟随器电路的电平转换时间

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子