STM32学习之PWM DAC实验中的滤波电路部分元件参数的由来问题

在正点原子STM32利用PWM输出+RC滤波来实现一个DAC功能的实验中,有几个参数自己不是很理解,通过翻阅资料,百度等渐渐理解,现总结如下:(以下全是个人理解,如有不缜密的地方,还请阅读者见谅并指出)

首先,我们得先明白为什么通过PWM输出+RC滤波能实现DAC的功能,DAC的功能不用多说,看其名字就知道是数模转换器,也就是将一串数字信号,转换为对应的模拟信号。比如我们在利用stm32做DAC实验中,如果我们的DAC是12位的,那么我们就可以看作将我们的0~3.3V间的电压分成了2的12次方,也就是4096份,那么我们由每一份对应的电压*我们输入的份数,那么就可以得到一个电压值,我们可以利用我们的ADC进行采集,就可以直接显示出来啦。

以上是对DAC的一个简单的介绍和理解,而这里我们用PWM输出+RC滤波是怎样实现DAC的功能的呢,我们就要回过去复习我们之前学习的PWM输出实验,在那个实验中(主函数代码如图1),我们通过在主函数中添加循环,设置PWM比较值,使得其占空比不断变化,从而实现在一个很快的周期里高低电平占比的变化,从而使人能看到灯从亮到暗,从暗到亮,我的理解如图2所示


图1

如图2 ,假如灯是从亮到暗(低电平亮),那么,PWM输出的波形的变化则为


也就是说,我们通过在一个较快的频率的内改变PWM的占空比就可以将一个明明是间断数字的信号,在我们眼睛看起来就像一个连续变化的模拟信号。


图3 实际电路典型PWM波形

对于这样一个PWM波,n为一个周期内的高电平的脉冲个数,N为一个周期内的脉冲数。它是一个周期函数,那么我们就可以得到它的傅里叶级数


通过其傅里叶级数我们知道,在一个周期中,如果N一定,那么其直流分量与n有关,n越大,一个周期内的高电平所占的比例越大,那么我得到的直流分量就越大,所以,我们可以通过调节PWM的占空比,从而调节n的值,这样我们就可以输出不同大小的直流电压啦。但是这里我们还得将基波(1次谐波)、二次谐波、三次谐波......滤掉,由于高次谐波的频率是基频的整数倍,所以我们只要采用低通滤波器将基波滤掉,高次谐波也就基本不存在了。

假设 VH 3.3VVL 0V,那么一次谐波的最大值是 2(VH-VL)/π=2*3.3/π=2.1V ,而8 位分辨条件下,我们一般要求 1 次谐波对输出电压的影响不要超过 1 个位的精度 ,一个位的精度也就是将3.3V分成256份,即3.3/256=0.01289V,那么我们就需要我们的低通滤波器提供的衰减至少为为20lg(0.01289/2.1)=-44dB。

接下来我们需要确定我们的截止频率,和PWM的输出频率。对于PWM的输出频率,我们知道系统时钟为72MHz,那么计数1的时间为1/72M,因为我们要设计的是8位分辨率的DAC输出,所以计数完NT,也就是2^8=256个数需要的时间为256*(1/72M),即PWM的输出频率为72M/256=281.25KHz。

对于截止频率fc,这里需要知道什么是幅频特性和相频特性。放大电路的电压放大倍数与频率的关系称为幅频特性,输出信号与输入信号的相位差与频率之间的关系称为相频特性。两者统称频率特性对于如图4所示的一阶无源低通滤波器,其幅频特性和相频特性可以表示如下:



图4

所以可以利用20lg[|H(jw)|]=-44,则可以|H(jw)|=0.0061381,将PWM的输出频率f=281.25KHz带入可得,fc≈1.73KHz,而二阶无源低通滤波器的幅频特性|H(jw)|=1/[1+(W/Wc)^2],代入取得这时的fc≈22.103KHz,这里采取二阶滤波,所以截止频率为22.103KHz,因为我们需要滤高频,所以电容稍微取小些,原子哥的讲义中选的102和101,也就是1000pF和100pF,这里使R1C1=R2C2,则根据公式fc=1/2πRC可求得R1=7.2K,R2=72K。但是原子哥的讲义中选用了4.7K和47K,得到了更大的截止频率,这是因为该电路他们还需要用作 PWM DAC 音频输出,而音频信号带宽是22.05Khz,为了让音频信号能够通过该低通滤波,同时为了标准化参数选取,所以确定了这样的参数。

 

   正点原子板子的PWM DAC 二阶 RC 滤波原理图
                          

搭建电路,将程序源码烧进单片机(程序是想要实现将PWM输出的电压滤波后输入到ADC采集显示),显示如下:


可以看到ADC采集的电压值和PWM输出的值差不多,基本算法是:当输入110时,即我们之前提到的n(一个周期内高电平的脉冲个数),如果全是我们的直流量,则为110*(3.3/256)≈1.4179,所以我们基本达到实验要求。同时发现一个现象,这里我们最好的选择标准是R1=R2,C1=C2,如果我们以标准R1C1=R2C2来选择电阻电容的话截止频率误差会更大。因为这样不仅R1,R2,C1,C2存在了与标准值的误差,而且R1C1=R2C2这里也会有误差(个人理解)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章