关于PWM 做 DAC
这个电路中 PWM选择多大频率最佳?
这要看输出信号的摆率和频率了,如果输出是静态信号,那一般用1KHz~10KHz的PWM频率就好了,如果输出信号频率较高,就需要根据输出频率来计算PWM频率和相应低通滤波器的参数,一般来说取100倍以上为好。比如输出50Hz的正弦波信号,PWM频率在5KHz以上效果比较好。
出个AI8051U的PWM例程 | 3相互补SPWM变频驱动,PWMA-3个相位差120度的PWM互补输出 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
PWM做DAC完整演示程序,用内部真12位ADC来保证精度@8H8K64U - ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC 国芯技术交流网站 - AI32位8051交流社区
2节RC低通滤波后输出电压的纹波与PWM的频率、RC值有关。设计时要先给出你的要求参数才能计算,我举个例子:
MCU主频40.96MHz,工作电压5V,要求输出幅度5V、10位PWM输出经过2节RC滤波后,输出直流电压纹波(正弦波)峰峰值最大为2mV左右,请确定PWM频率和计算RC值。(注:占空比50%时纹波最大)。
一般为了得到尽量快速的响应,都是取PWM时钟为最高时钟,选取PWM时钟为40.96MHz,则10位PWM频率为fs=40960000/1024=40000Hz,幅度U=5V。
当RC值大于等于PWM周期的3倍时,第一节RC可以按线性充放电计算,则输出三角波峰峰值Am=U/(4*fs*R*C),三角波正弦波基波幅度=0.81*Am。
第二节RC是对三角波正弦波基波的滤波输出,由于RC值大于等于PWM周期的3倍,则容抗可忽略,得到滤波输出系数 = 1/(2*pi*fs*R*C),
则总的输出纹波峰峰值 du = 0.81*U/(4*fs*R*C)*1/(2*pi*fs*R*C)
= 0.81*U/8/pi/(fs*R*C)^2,
简化系数后,du = 161/(fs*R*C)^2,单位mV。
已知 du=2mV,fs=40000Hz,代入上式解出 RC=224 us。
当R大于等于10K时,IO的压降比较小,当然,使用100K压降更小。
如果取R=10K,则C=22.4nF,取标准值22nF。
如果取R=100K,则C=2.24nF,取标准值2.2nF。
页:
[1]