ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[STM32F1] PWM模拟DAC

[复制链接]
611|20
 楼主 | 2018-5-14 09:33 | 显示全部楼层 |阅读模式
本帖最后由 紫阳真人 于 2018-5-14 10:08 编辑

理论知识有限,啃了半天百度,依然搞不懂如何计算RC,我设想通过二级RC实现PWM控制输出稳定的固定电压(0-3.3V,建立时间不超过0.5S先不考虑),目的是输出电压准确稳定!!该怎么计算,谢谢!下面是我作为参考的材料:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评论

xch 2018-5-16 18:56 回复TA
参考资料基本可行,漏了输出阻抗非线性部分。 mcu输出阻抗不是线性的。高低电平输出阻抗不一致。如果负载阻抗足够高可忽略 
紫阳真人 2018-5-17 09:47 回复TA
@xch :好的,就这样用了 
| 2018-5-14 09:53 | 显示全部楼层
PWM占空比决定0-3.3V电压值
| 2018-5-14 09:55 | 显示全部楼层
本帖最后由 tkyl01 于 2018-5-14 09:56 编辑

RC充放电时间t=(3~5)RC,t>Tpwm,  Tpwm是PWM的周期,计算一下就行了。
 楼主 | 2018-5-14 10:11 | 显示全部楼层
tkyl01 发表于 2018-5-14 09:55
RC充放电时间t=(3~5)RC,t>Tpwm,  Tpwm是PWM的周期,计算一下就行了。

不好意思我问题没描述清楚,我又修改了一下,按照上面的思路该怎么计算
| 2018-5-14 10:22 | 显示全部楼层
你负载是啥?接个固定电阻试试.
 楼主 | 2018-5-14 13:01 | 显示全部楼层
icecut 发表于 2018-5-14 10:22
你负载是啥?接个固定电阻试试.

负载是其他模块的ADC采样,电流极小,这个固定电阻是用作死负载吗?
| 2018-5-14 14:50 | 显示全部楼层
本帖最后由 tkyl01 于 2018-5-14 17:30 编辑
紫阳真人 发表于 2018-5-14 10:11
不好意思我问题没描述清楚,我又修改了一下,按照上面的思路该怎么计算 ...

        我说的是一种比较直观的方法,从时域分析的,只要滤波器的放电时间远大于输入对滤波器的充电时间(10倍以上)就可以保证输出是比较平滑的,而所谓的建立时间或响应时间也和RC滤波器的时间常数有关,对于100KHZ的PWM,R=10K,C=0.1uf就能满足要求,但是输出的纹波及分辨率测不能很直观的判断;
       如果反过来分析设计好的滤波器的频域特性:
      一阶RC 的截至频率 1/(2π RC) = 159HZ,100K方波一次谐波频率是100KHZ ,那么100Kz  相对159hz 衰减 -20lg(100000/159) = -56dB,可以满足8位分辨率。而PWM频率如果降到10K则分辨率达不到8位,实际上截至频率处已衰减-3dB。
     而二阶RC的截至频率如果R1=R2,C1=C2时也是159Hz,不同时fc=1/2π*sqrt(R1R2C1C2),而二阶的话第二阶可以选择不同的RC参数达到不同的效果。

如果从频域分析来设计这个滤波器:假设PWM频率10Khz,要求精度8位,
1)PWM波的直流分量就是你看到的波形,输出为高时就是3.3V,输出为低时就是0V,那么理想情况下经平滑滤波器滤波后实际输出=3.3x占空比,假如输出极性为高,占空比50%,那么理想情况下就是1.15V
       但是PWM是方波含有多个谐波,需要把这些谐波滤除,其中一次谐波的幅值=2×3.3/π=2.101v,三次谐波幅值=2.101/3=0.7v,所以只需要把一次谐波衰减至不影响精度即可。对于8位精度要衰减至0.01289v一下
       即衰减-20lg(2.101/0.0128)=-44dB.
2) 由1分析可知10Khz的谐波要衰减-44dB,假设滤波器截至频率f0,那么在波特图中10khz处的增益要比f0处的小44dB,即对于一阶 -20lg(10000/f0)=-44,可求出f0=63.1hz;对于二阶-40lg(10000/f0)=-44,可求出f0=794.325hz。
3) 根据截至频率选取合适的RC值即可。

但是在实际中RC滤波器往往跟他的前后级 输入阻抗,负载也有关系,所以还要实际调试方能得到最优的参数。

评论

gaohq 2018-5-15 12:56 回复TA
滤波之后加一级跟随 
 楼主 | 2018-5-14 15:50 | 显示全部楼层
本帖最后由 紫阳真人 于 2018-5-14 16:11 编辑
tkyl01 发表于 2018-5-14 14:50
我说的是一种比较直观的方法,从时域分析的,只要滤波器的放电时间远大于输入对滤波器的充电时间 ...

讲的非常好,对于我目前的应用需求看,
1、后级输入阻抗应该在兆欧级别,这里是不是要加个假负载用来吸收能量?
2、用于输出固定电压,所以信号频率基本为0,是不是可以在信号频率和截止频率之间取个值来定RC的值?
| 2018-5-14 16:07 | 显示全部楼层
紫阳真人 发表于 2018-5-14 15:50
讲的非常好,对于我目前的应用需求看,
1、后级输入阻抗应该在兆欧级别,这里是不是要加个假负载用来吸收 ...

1)我觉得假负载要不要都无所谓,兆欧的负载对滤波器的影响很小了
2)你如果用PWM的话对于滤波器输入来说滤的是PWM的频率,输出则是过滤之后频率可以理想成0,不考虑响应时间不考虑精度,你直接截至频率远小于PWM频率就行了
 楼主 | 2018-5-14 16:16 | 显示全部楼层
tkyl01 发表于 2018-5-14 16:07
1)我觉得假负载要不要都无所谓,兆欧的负载对滤波器的影响很小了
2)你如果用PWM的话对于滤波器输入来说 ...

截止频率越小,RC就越大,响应时间越长,但是精度会有影响吗,我的应用要确保不能牺牲精度。
另外两阶滤波“R、C值都一样”  跟  “RC乘积一样而R、C各不一样”  有什么区别?
| 2018-5-14 16:38 | 显示全部楼层
本帖最后由 tkyl01 于 2018-5-14 17:20 编辑
紫阳真人 发表于 2018-5-14 16:16
截止频率越小,RC就越大,响应时间越长,但是精度会有影响吗,我的应用要确保不能牺牲精度。
另外两阶滤 ...

那你就老老实实的按公式计算,不要想省事,随便想个数就能达到完美。至于RC一样不一样会影响滤波器的品质因数,截至频率,另外后级是前级的负载,前级是后级的内阻,所以R值C值跟你的应用场景有关。

对于PWM被滤成直流影响不大,但是PWM滤成其他波形比如占空比按正弦变化低通滤波成正弦波,楼主可以自己试试看看有啥区别给大家分享一下。

 楼主 | 2018-5-14 16:51 | 显示全部楼层
tkyl01 发表于 2018-5-14 16:38
那你就老老实实的按公式计算,不要想省事,随便想个数就能达到完美。至于RC一样不一样会影响滤波器的品质 ...

看来还是要学习一个,多谢指点
| 2018-5-14 17:03 | 显示全部楼层
准确稳定的话,最好还是用DA;
用PWM输出,最好修正过,还有响应速度比较慢的;
 楼主 | 2018-5-15 09:03 | 显示全部楼层
mmuuss586 发表于 2018-5-14 17:03
准确稳定的话,最好还是用DA;
用PWM输出,最好修正过,还有响应速度比较慢的; ...

我需要4路,目前用CBT6的不支持DAC,即使芯片升级也不过两路,先做测试如果满足要求就不用考虑其他DAC芯片了
| 2018-5-15 11:38 | 显示全部楼层
简单的讲就是想纹波小点那么就PWM频率高点,电阻电容大点。但是如果要求纹波和动态响应兼顾那就另当别论了。
| 2018-5-15 13:57 | 显示全部楼层
楼主用的是28335不?
 楼主 | 2018-5-16 10:06 | 显示全部楼层
877049204 发表于 2018-5-15 13:57
楼主用的是28335不?

我用的STM32
 楼主 | 2018-5-16 10:07 | 显示全部楼层
qinlu123 发表于 2018-5-15 11:38
简单的讲就是想纹波小点那么就PWM频率高点,电阻电容大点。但是如果要求纹波和动态响应兼顾那就另当别论了 ...

这是一个参数调整的方向
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

分享 快速回复 返回顶部 返回列表