设计个电路,将PWM信号转化为模拟量信号

STM32嵌入式开发 发表于 2020-11-20 09:19:12 收藏 已收藏
赞(0) •  评论(0
400万+工程师在用
400万+工程师在用

设计个电路,将PWM信号转化为模拟量信号

STM32嵌入式开发 发表于 2020-11-20 09:19:12

有一个测量位置变化的位置传感器,用万用表电压档测量传感器的输出信号,结果显示的是模拟量信号,即位置和信号输出大小呈线性关系。但是,用示波器(Picoscope 4227)测量传感器的输出信号,显示的却是PWM信号(脉宽调制),即位置不同,输出PWM信号的占空比不同。

PWM信号的参数是:200 Hz, 低电平为0V,高电平为18V。

现在可以确定,我的传感器输出信号是PWM信号。PWM信号需要输入到控制器I/O中,但是控制器I/O口不具备直接采集PWM信号的功能。

解决方案

设计个电路,将PWM信号转化为模拟量信号,然后将转换后的模拟量信号输入到控制器模拟量I/O口。

转换电路

1. 二阶压控有源低通滤波电路。

设计一个深度滤波电路。滤波电路图为:

低通滤波频率公式为:f=1/(2π*RC),我最后选择R=1K,C=10uf,算出的低通截止频率f=15.9HZ。

滤波电路后端是一个运算放大器,放大倍数公式:A=1+Rf/R1。我不希望电压被放大,所以我选择A=1.1。又因为R1//Rf=2R(R1,Rf两者并联的值等于R串联值),最终:Rf=220欧,R1=2.2k,R=1k。

2. 积分电路(无源滤波电路)

低通滤波电路前面是一个二级积分电路(将两个电容都接地),R=1K,C=10uf。下图是一级积分电路,设计的积分电路是将两个下图电路串联构成二级积分积分:

为验证电路效果进行的测试,我使用的设备是PicoScope4227,由于该设备最大只能生成正负1V的电压信号,就生成了幅值为1V(低电平0V,高电平1V),频率为200HZ的PWM信号作为积分电路的输入信号。各种效果图如下:

示波器直接采集发生器生成的PWM信号,波形如下:

示波器从二阶滤波电路输入端采集信号,波形如下。发现该号波形与上图的波形相比已经发生了变化。

示波器从一阶滤波电路输出端中采集到的信号波形,即滤波电路从左往右数,第一个电阻与第一个电容交点的输出波形:

滤波器从二阶滤波电路输出端采集到的信号波形,即最终输出信号波形。

问题

1:为什么万用表电压档测量传感器输出信号,结果是模拟量信号,而示波器看到的是PWM信号?我该相信哪个结果?

答:这个问题牵涉到测量输入口的分辨率问题。万用表输入口的分辨率低(通过此例看低于200HZ),而示波器输入口的分辨率高,可达几千,甚至几兆赫兹频率,所以输出的结果不同。我们要相信示波器显示的结果。我理解PWM信号本质还是希望达到模拟量的效果,只是表现形式不同。

2:关于计算公式

答:在低通滤波电路中,有个频率公式f=1/(2π*RC), 它计算的是低通截止频率(-3dB)。而在积分电路中,有个公式T=RC。 这个 T 是指电容充放电需要的时间。选取 T 时,根据一般经验公式,T>10 * T'(T'表示信号周期)。

在本例的积分电路中,RC=10ms,只有两倍的信号周期,但是通过测试,信号效果还是比较理想的。如果将更多的积分电路串联,效果会更好。

3:PWM 信号被控制器采集还有其他方案吗?

答:方案一:将PWM信号倍频,就是提高PWM信号的频率,但是占空比不变化。PWM倍频后的频率大于控制器I/O的分辨率,就可以被控制器默认为做模拟量,从而可以输入到模拟量I/O。

方案二:通过软件办法计算PWM的占空比。在控制器中编写程序,首先定时,测量这段时间内PWM信号中高电平的时间,从而计算出占空比。

责任编辑:lq

打开APP阅读更多精彩内容

收藏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉

相关话题

评论(0)

加载更多评论

分享到

QQ空间 QQ好友 微博
取消