tag 标签: rc滤波

相关博文
  • 热度 15
    2013-3-13 22:09
    1297 次阅读|
    1 个评论
    二十五章 PWM DAC 实验              上一章,我们介绍了STM32自带DAC模块的使用,但不是每个STM32都有DAC模块的,对于那些没有DAC模块的芯片,我们可以通过PWM+RC滤波来实一个PWM DAC。本章我们将向大家介绍如何使用STM32的PWM来设计一个DAC。我们将使用按键(或USMART)控制STM32的PWM输出,从而控制PWM DAC的输出电压,通过ADC1的通道1采集PWM DAC的输出电压,并在LCD模块上面显示ADC获取到的电压值以及PWM DAC的设定输出电压值等信息。本章将分为如下几个部分: 25.1 PWM DAC简介 25.2 硬件设计 25.3 软件设计 25.4 下载验证 25.1 PWM DAC 简介 虽然大容量的STM32F103具有内部DAC,但是更多的型号是没有DAC的,不过STM32所有的芯片都有PWM输出,因此,我们可以用PWM+简单的RC滤波来实现DAC输出,从而节省成本。 PWM本质上其实就是是一种周期一定,而高低电平占空比可调的方波。实际电路的典型PWM波形,如图25.1.1所示: 图25.1.1 实际电路典型PWM波形        图25.1.1的PWM波形可以用分段函数表示为式①:        其中:T是单片机中计数脉冲的基本周期,也就是STM32定时器的计数频率的倒数。N是PWM波一个周期的计数脉冲个数,也就是STM32的ARR-1的值。n是PWM波一个周期中高电平的计数脉冲个数,也就是STM32的CCRx的值。VH和VL分别是PWM波的高低电平电压值,k为谐波次数,t为时间。我们将①式展开成傅里叶级数,得到公式②:   从②式可以看出,式中第1个方括弧为直流分量,第2项为1次谐波分量,第3项为大于1次的高次谐波分量。式②中的直流分量与n成线性关系,并随着n从0到N,直流分量从VL到VL+VH之间变化。这正是电压输出的DAC所需要的。因此,如果能把式②中除直流分量外的谐波过滤掉,则可以得到从PWM波到电压输出DAC的转换,即:PWM波可以通过一个低通滤波器进行解调。式②中的第2项的幅度和相角与n有关,频率为1/(NT),其实就是PWM的输出频率。该频率是设计低通滤波器的依据。如果能把1次谐波很好过滤 掉,则高次谐波就应该基本不存在了。        通过上面的了解,我们可以得到PWM DAC的分辨率,计算公式如下: 分辨率=log2(N)        这里假设n的最小变化为1,当N=256的时候,分辨率就是8位。而STM32的定时器都是16位的,可以很容易得到更高的分辨率,分辨率越高,速度就越慢。不过我们在本章要设计的DAC分辨率为8位。        在8位分辨条件下,我们一般要求1次谐波对输出电压的影响不要超过1个位的精度,也就是3.3/256=0.01289V。假设VH为3.3V,VL为0V,那么一次谐波的最大值是2*3.3/π=2.1V,这就要求我们的RC滤波电路提供至少-20lg(2.1/0.01289)=-44dB的衰减。        STM32的定时器最快的计数频率是72Mhz,8为分辨率的时候,PWM频率为72M/256=281.25Khz。如果是1阶RC滤波,则要求截止频率为1.77Khz,如果为2阶RC滤波,则要求截止频率为22.34Khz。 战舰STM32开发板的PWM DAC输出采用二阶RC滤波,该部分原理图如图25.1.2所示:     图25.1.2 PWM DAC二阶RC滤波原理图        二阶RC滤波截止频率计算公式为: f=1/2πRC        以上公式要求R28*C37=R29*C38=RC。根据这个公式,我们计算出图25.1.2的截止频率为:33.8Khz超过了22.34Khz,这个和我们前面提到的要求有点出入,原因是该电路我们还需要用作PWM DAC音频输出,而音频信号带宽是22.05Khz,为了让音频信号能够通过该低通滤波,同时为了标准化参数选取,所以确定了这样的参数。实测精度在0.5LSB以内。        PWM DAC的原理部分,就为大家介绍到这里。 25.2 硬件设计 本章用到的硬件资源有: 1)  指示灯DS0 2)  WK_UP和KEY1按键 3)  串口 4)  TFTLCD模块 5)  ADC 6)  PWM DAC 本章,我们使用STM32的TIM4_CH1(PB6)输出PWM,经过二阶RC滤波后,转换为直流输出,实现PWM DAC。同上一章一样,我们通过ADC1的通道1(PA1)读取PWM DAC的输出,并在LCD模块上显示相关数值,通过按键和USMART控制PWM DAC的输出值。我们需要用到ADC采集DAC的输出电压,所以需要在硬件上将PWM DAC和ADC短接起来,PWM DAC部分原理图如图25.2.1所示:   图25.2.1 PWM DAC原理图        在硬件上,我们还需要用跳线帽短接多功能端口的PDC和ADC,如图25.2.2所示: 图25.2.2 硬件连接示意图   实在要吐槽下EDN China的编辑器,没输入几个字就不行了,我也没办法了,大家下载附件看吧。sorry。
  • 热度 39
    2012-8-22 23:23
    4305 次阅读|
    20 个评论
        在电子系统里滤波器是很见的组成部分,可以通过R,L,C的搭配组成各种滤波电路。一阶RC滤波器的截止频率等于1/2*pi*RC.,R,C,L串联可以搭建二阶带通滤波器等等。       在电源处理时经常会用到滤波器。为了保证输入到芯片的电源电压的稳定,通常的做法是在VCC和地之间跨接一个大电容和一个小电容并联。也可以采用RC滤波的方式来实现电源的稳定,最好不要在电路板电源的根部采用RC滤波,而是在需要电源滤波的芯片处采用RC滤波,因为电阻的存在必然导致分压,如果在电源根部RC滤波电路板整个板子的电流大的话会在R上形成很大的压降,导致输出电压变小,而在芯片根处采用RC滤波,一般芯片的工作电流在几十mA,这时R的选择余地会比较大,而且滤波效果较好。LC滤波我不经常使用,不是很了解, 不知道大家的理解如何。       最近使用了美信的可编程滤波器和引脚可配置滤波器,它们采用都是开关电容滤波器。     这幅图说的比较清楚,实际上就是用开关电容(SC)来取代电阻器,开关K置于左边时,信号电压源 u 1向电容器 C 1充电;K倒向右边时,电容器 C 1向电压源 u 2放电。当开关以高于信号的频率 f c工作时,使 C 1在 u 1和 u 2的两个电压节点之间交替换接,那么 C 1在 u 1、 u 2之间传递的电荷可形成平均电流 I = f C 1( u 1- u 2),相当于图1a的 u 1和 u 2之间接入了一个等效电阻,其值为1/ f C 1。       推导是这样的:在信号源向电容充电时Q=C1*U,然后这个电流供给运放使用,因此平均电流为I=C1*U/T, 如果T足够短,可以近似认为这个过程是连续的,因而可以在两节点间定义一个等效电路Req =U/I=T/C1=1/f*C1。这个电路的等效时间常数就是τ=RC2=C2/f*C1.       我开始使用的是MAX274,这款开关电容滤波器是通过改变引脚的电阻值来改变中心频率f0,增益G,带宽Q。它不需要外接时钟信号来提供开关频率用,估计是采用了内部RC振荡电路。设计MAX274是美信官网上有个辅助软件,把所需的参数输进去,会自动计算出各个电阻的阻值,实践发现即使自己搭电路的阻值取得跟软件计算出的阻值有一点差别,中心频率等差别也不会很大。       后来觉得274改变参数太麻烦,采用了另外一款开关电容滤波器MAX262,这是个引脚可编程滤波器,使用起来非常方便,需要外接时钟信号提供f。这样的好处是开关频率非常稳,使得中心频率也能够做到跟设定值1%的误差。使用MAX262也有个辅助软件,但我觉得这个软件计算的MAX262的参数值是错的,还是以数据手册为准!使用MAX262也很方便,就是往寄存器里写入几个值(应该是ROM型,掉电不丢失),通过给定的时钟频率,然后除以想要的中心频率,得出的N值写出寄存器就可以了,N通过查表可以得到,这样可以设定F0.同时可以设定Q,Q对应的也有N值,写到对应的寄存器里。Q值一方面是带宽,另一方面也等于放大倍数。只要时序正确,写入数据也不困难。       在使用中也遇到了一些问题:这就是像这些滤波器的增益千万不要调的太大,比如1000倍,因为这时候当输入引脚有噪声存在时,噪声中肯定有你设定的中心频率F0的分量,由于滤波器的优异性能,它会把噪声里的F0分量给放大出来到输出端,导致有效信号反而无法检测,这也是使用过程中应该留意的!