tag 标签: lm3s811,pwm,dac

相关博文
  • 热度 19
    2012-6-30 17:21
    3182 次阅读|
    2 个评论
    TI 公司的 LM3S811 有 3 个 PWM 信号发生模块,每个模块可以产生 2 个独立的 PWM 信号,这样算来,单个 LM3S811 就可以产生 6 路 PWM 信号了。   对于有些应用,对成本有要求,用 R,C 替代专用 DAC 毕竟能节约不少,尤其在精度要求不高,电平变化速率不快的应用中,就可以通过 PWM 滤波后产生直流信号,但这样生成的信号达到什么指标呢。自己先定一个指标吧,看能不能达到。上一篇《 LM3S811 之测量交流有效值》在 10v 的量程下可以测量到 10mv 的精度,约 10 位分辨率,现在还是用这个芯片,生成的信号比测量的信号精度高一位吧,这样比较合适。比如是 3.3v 量程,分辨率是 3.3/2^11=1.6mv 。   下面几张图供参考,尊重作者,不重新画了。 图 1 来自   李小京,石金桥《利用单片机构成高精度 PWM 式 12 位 D/A 》 图 2 来自 秦健《一种基于 PWM 的电压输出 DAC 电路设计》 图 3 来自   Atmel 评估板原理图 图 4 来自   韦波《用 PWM 实现廉价隔离型标准电流输出 D/A 转换器》   从 PWM 数字信号变为产生 DAC 模拟信号,一般都是分几步走:   一:利用 LM3S811 产生 PWM 信号,这块属于数字电路,不讨论了。   二: PWM 信号整形 / 隔离,顾名思义,由于数字电路芯片输出的高电平和低电平不稳定,随着温度的变化而变化,而整形可以采用高速光耦、晶体管、运放 / 比较器 . 图 1-3 都比较简单,但可能存在问题,以图 2 为例,我用软件仿真后,占空比经过 T1 后反了可以在软件中修改,但 B 点的方波,低电平是 26mv ,对于 C 点,最低电压是 31.8mv ,相对于 1.6mv 比较大了,图 4 则可以降低到 0v 。当然用运放 / 比较器肯定也会达到 0v 的。   三:滤波,将方波整形成直流信号。这个是重点,也是难点,滤波器,精度与时间是一对矛盾。   一般电路都有两种分析方法:从频域上分析和从时域上分析。大部分文档都是从频域上分析的,参考秦健《一种基于 PWM 的电压输出 DAC 电路设计》 图 5 PWM 波形 可用公式 描述,频域上用傅里叶级数表示 ,通过低通滤波器后,主要考虑的是一次谐波的影响,再后面的谐波影响加起来都小于一次谐波的影响。 一次谐波的频率是 2*pi/NT ,以 LM3S811 为例,最小计时应该可以达到 50MHz , 16 位 PWM 计数器完全满足 11 位的精度, N=2^11=2048 。留点余地以后扩展也好,波形更加方也好,计时 4 个 50M 的脉冲算最小分辨率吧,这样一个 NT 为 2048*4/50M=163.84us 。则一次谐波的频率为 2*3.14/163.84u=38.35kHz 。 如果要将一次谐波的影响消除到 1/2^12 ,即低通滤波器必须在 38.35kHz 时,以其极限 VH=3.3v,VL=0V , n=N 为例,其频率响应的电压增益要为 20lg(2/pi/2^12)=-76.17db 以下。 以一级 RC 低通滤波器为例,其截止频率为 1/2*pi*RC ,则 20lg(1/2*pi*RC)=-76.17 ,则 1/(2*pi *RC)=10^(-76.17/20) ,很显然即便是 1M 的电阻, 1u 的电容组成的单级滤波器都达不到这个效果。 多级 RC 滤波器计算比较复杂,但可以以上面几张图中的 100k , 0.1u 的为例,其单级的 -3db 频率为 1/2*pi*100k*0.1u=15.9Hz ,则在 38.35KHz 单级幅度则为衰减到 1/(38.35k/15.9)=1/2412 了,若要达到 1/2^12 ,则需要 2^12/2412=1.7 ,则采用 2 级 RC 滤波器可行。但在没有采用运放隔离的情况下,两级 RC 滤波器会前后干扰,前级的输出为后级的输入,后级的输入为前级的负载,则第一级采用 10k,1u ,第二级采用 100k,0.1u , -3db 频率一样,但干扰就相对降低了。   频域上可以分析保证纹波不超过规定,但无法分析时间关系了。 由于多级 RC 电路函数关系比较复杂,仅以单级 RC 电路为例。从时域上分析,借用下图,其电压的函数关系也类似, a) 是充电, b) 是放电,以充电为例, Vc =V(1-e^(-t/RC)) 。要达到 2^-12 的精度,极限就是从 0V 到 V*8191/8192 ,算得 t=9.02RC ,简单点就是 10RC 肯定就满足稳定的要求了。如果 R=100k , C=1u ,则最大只需要 1s 即可稳定。至于 100k,0.1u 、 10k , 1u, 那 0.1s 就可以稳定了。 图 6   RC 电路的时域函数图 时域上也可以分析纹波吧,常见图 5 ,一个周期是 164us ,在极限的情况下,即图 6a) 从 0 点开始,其纹波是 V(1-e^(-164u/100k/1u))=0.0016V ,呵呵,那就超出了 V*2^-12=0.0002V 了。如果要纹波系数小,必须减小 T 或增大 RC ,当然,减小 T 是比较容易的,最小可以 2^11/50M=41us ,这样纹波就是 V(1-e^(-41u/100k/1u))= 0.0004V ,呵呵,单级的还是不行啊,除非降低标准,分辨率降低到 10 位,同时 T 又能减小,哦,那肯定满足了。   综上所述,采用 2 级 RC 滤波器, 10k , 1u 和 100k , 0.1u ,稳定时间约 0.1s ,可构成 11 位精度的 DAC ,对于一般应用,足矣。   四:输出功率放大 最常用的是用运放构成电压跟随器,我想如采用三极管射级跟随,既能降低成本,也能向下平移电压约 0.7V ,这样图 1 , 2 , 3 就可以达到 0V 的目的,但温度稳定度可能还不够,我只是想想了。   费这么多力气,算了半天,讨论了 PWM 模拟 DAC ,其实主要还是想利用 LM3S811 做个 SOC ,理论上先论证下可行性,看样子还是可以的。