打印

【经验贴、分享】RC滤波器的妙用以及部分调试经验

[复制链接]
6354|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
RC滤波器的妙用以及部分调试经验
         前言:最近在调一个MSP430单片机控制电机并测速度的电路。整个电路从设计制作到调试成功,花了将近四天时间,中间Bug多多,最后解决Bug的时候自己都忍不住笑自己了——好笨啊!
         废话不多说,直接进入主题,maswell我最反感的就是水军论文中的战斗机论文都是先扯一大堆废话,然后才开始一堆没用的废话。。。哎呀,又扯废话了。切入主题吧。
         先说说我这个系统。下面Figure 1MSP430主控制部分,用的芯片是MSP430G2553单片机(1112号引脚是反过来滴),第一个是Pro Download接口,顾名思义,就是程序下载口,我用的MSP430G系列的launchPad开发板连接到我设计的板子上的,通过这几个接口利用launchPad即可下载程序,为了方便布线,我打乱了这几个接口的顺序。PWM1PWM2接口是连接到H桥的两个接口,这里使用了G2553的定时器A1产生PWMCAP_P12是光电对管连接到比较强后输入到单片机的一个捕获接口,因为这里可以用定时器A0的捕获接口,使用定时器的捕获功能,可以使得程序设计更为简单。整个系统利用了两个定时器,并结合中断,使得整个系统都处于休眠状态,功耗可以做得比较低(但由于电机和12864的存在,这里的低功耗程序设计显得毫无意义额。。。)。另外还有一个12864的串行外部接口(SPI)三根线。
  
  
Figure  1 MSP430G2553主控制部分
  
Figure2 maswell的实验设备
再放一个三线控制13864的图。由于MSP430x2xx系列是3.3V的器件,这里用到了一个245芯片来转换电平电压(CS和SCLK的顺序反了,后来布线的时候改的)。初学者往往会遇到一个问题,就是为什么我的12864的滑动变阻器调了,12864的亮度都不变呢,maswell我在这里只提一点:注意你的复位引脚的电平。。。
  
  
Figure  3 74HC24512864驱动电路
  
         H桥电路太常见,百度出来一抓一大把,都长一个摸样,区别就像一个人脸上的痘痘都长在做边,一个人都痘痘两边都有(两个保护管)。哎呀,扯远,废话不多说,贴图说明一切
  
  
Figure  3 H
  
         至于H桥原理神马的,maswell我就不在这里多说了。。。不懂就百度吧,实际上学过三极管的,稍微静下心来分析一个,都可以看得懂的。下面是一个比较器的电路,用的是光电对管发射信号,经黑线反射以后PHOTO上产生一定的电压值,maswell做电路的时候实测LM358的输入电压高达0.6V(哈哈,其实也不高),右边的LM358构成一个比较器,VCC5V电压,经10K50欧姆电阻分压以后LM3582号引脚的电压大致为0.5V<0.6V,满足电路设计要求。后加一个1K电阻保护后级单片机(哈哈,这个电阻方便了我后面的滤波,欲知为何,请听下回分解~~额,又来三国演义的味道了。)下面说说问题所在吧。
  
  



         调试的时候发现了一个非常蛋疼的问题。数据总是莫名其妙地显示200/s甚至是1000转每秒,实际上,我这个电机的转动速度最大也就110转每秒,这些个数据显然都是错误的。反复检查定时器的捕获程序,检查了好几遍,加上有写了一年的430单片机程序的经验,对这个G2553的内部寄存器相当熟悉,反复分析,100%确定程序没有任何问题。那么问题在哪里呢?后来分析了一段代码

  
void longToString(volatile unsigned long tempData)
  
{
  
    char Num,i;
  
    static volatile unsigned long temp;
  
    for(i = 0; i < 16; i++)
  
       ShowData[i] = ' ';
  
       temp = 250000 / tempData;
  
         这个函数是将捕获到的定时器的脉冲计数值送到12864的一个中间转换函数,temp显示的转速,由于CPU时钟用的1MHz,电机那里有四个黑带,所以实际的转速应该是250000/tempData,得到这个数据后转换成ASCII码,再送到12864显示。问题出现在这里,12864显示数据1000+,说明temp = 1000+,比实际的数据100+大了10倍。那么也就意味着tempData的数据比实际的真实数据小了10倍,也就是说定时器两次捕获时间的间隔比常规的要小很多,为什么会小了那么多倍呢。
         思来想去,maswell**一闪,哎呀,对了!由于电机的胶布粘贴得不均匀,产生了大量的不均衡噪声,使得比较器的输出含有大量的高频分量,由于噪声的存在,使得定时器的捕获时间间隔变小!从而出现了显示数据偏大的结果。
         想到问题所在,那么怎么解决掉呢。查看原理图,发现运算放大器的输出端接有一个1K的电阻,哎呀玛雅,灵感方案突然就来了,做个简单的RC低通滤波器不久完了?想到方案以后那么电容的值又该怎么选了?maswell在草稿纸上做个简单的分析,现将草稿纸上的内容mathtype搬到Word上来。
         电容的阻抗表达式:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png
         把运放的输出结果看成一个电压源,其输出电压等于RC滤波网络的输入电压假设其值为:

  
  
         那么上图所示的Vout的输出表达式为

         为了方便分析,我们假设Vi1V,并且不考虑相位问题,取Vout的模可得

         输出表达式与输入频率的关系找到了,那么我们的电容值又该怎么设计呢?考虑到我们的光电管经过比较器输出以后的频率最大为500Hz,那么我们设计一个-3dB500Hz左右的滤波器即可。用MATLAB写个小程序。
  
R = 1000;
  
f = 0:0.01:1000;
  
w = 2*pi*f;
  
C1 = 0.001 *  10^-6;%%uF
  
C2 = 0.01 *  10^-6;%% uF
  
C3 = 0.1 * 10^-6;%% uF
  
C4 = 1 * 10^-6;%% uF
  
C5 = 0.3 * 10^-6;%% uF
  
y1 =  sqrt((1./(1+w.*w*R^2*C1^2)).^2 + ((w*R*C1)/(1+w.*w*R^2*C1^2)).^2);
  
y2 =  sqrt((1./(1+w.*w*R^2*C2^2)).^2 + ((w*R*C2)/(1+w.*w*R^2*C2^2)).^2);
  
y3 =  sqrt((1./(1+w.*w*R^2*C3^2)).^2 + ((w*R*C3)/(1+w.*w*R^2*C3^2)).^2);
  
y4 =  sqrt((1./(1+w.*w*R^2*C4^2)).^2 + ((w*R*C4)/(1+w.*w*R^2*C4^2)).^2);
  
y5 =  sqrt((1./(1+w.*w*R^2*C5^2)).^2 + ((w*R*C5)/(1+w.*w*R^2*C5^2)).^2);
  
plot(f,y1,f,y2,f,y3,f,y4,f,y5);
  
title('RC滤波器设计');
  
legend('0.001uF','0.01uF','0.1uF','1uF','0.3uF');
  
xlabel('频率/Hz');
  
ylabel('输出幅频/V');
  
  
         Maswell在测试C的时候从1nF开始测试,得到下面的输出曲线,从图中我们可以看到,从0Hz1000Hz,输出几乎都是1,不变,1nF的电容不符合我们的设计要求。再加大,测试104电容
         104电容即0.1uF,得到的输出幅频特性曲线如下,显然不符合我们的设计要求,500Hz-3dB处还差一点点,再加大10倍,测试1uF
         下面这张是1uF的测试图,显然-3dB小于500Hz了。也不符合设计要求,经过maswell的反复测试并结合手头上有额电容容值,选定474电容,得到幅频特性曲线也较为理想。
         敲定电容值以后maswell已经迫不及待把电容焊上去了。焊接完毕以后,长时间观察,12864没有再出现200/秒或者1000/秒的显示值,也就是说maswell设计的滤波器已经起到效果了!maswell做成以后兴奋了一小下。兴奋之余,想到既然是高频噪声的影响,那么何不看看它的频谱图呢,一想到,maswell果断从科协搬来一台数字示波器,测试了安装RC滤波器前的FFT图形和安装RC滤波器后的FFT图形,现贴在这里。从两个图中,很明显地可以看到安装滤波器前裙子噪声非常明显,安装后,裙子噪声基本没有了!!!,看到这里,maswell我又忍不住兴奋了一下~

  
  
安装RC滤波器前
  

  
安装RC滤波器后




11.jpg (58.23 KB )

11.jpg

3.png (7.26 KB )

3.png

4.png (6.27 KB )

4.png

1.png (6.14 KB )

1.png

5.png (3.55 KB )

5.png

7.png (835 Bytes )

7.png
评分
参与人数 2威望 +12 收起 理由
SunFans + 2 赞一个!
PowerAnts + 10 支持原创

相关帖子

沙发
maswell_xiao|  楼主 | 2013-4-22 15:59 | 只看该作者
正值maswell我兴奋之际,新问题又来了。调电路真是一波未完一波又来啊!maswell惊奇地发现12864竟然跑着跑着就乱码了。显示数据完全错了。这个12864驱动程序可是我从大一用到现在一年多了呀,调过N边,肯定是没有问题的呀?那为什么会出现乱码呢?
反复检查电路~惊奇的发现我上面用的RC滤波器的地线接到了数字地,哎呀玛雅,原本设计地好好的PCB上数字地模拟地在电源输入端隔离就被这个电容给破坏了。找到问题所在,maswell果断解决之,再上电测试,哈哈~一切OK。板子成功。
         第二天,maswell想将这个板子拿去交货之前,上电测试了一下,咦~惊奇地又发现12864没有显示,按键可以正常工作,电机也可以正常调试,哎呀,新问题又来了,这到底是为什么呢?maswell最怕的是要解决没有问题的问题啊!maswell又郁闷了。。。
         问题在哪里呢?上电联机在线测试,430在线仿真12864显示没有问题啊!又郁闷了。。。
         Question??
         找了半天,没有找到问题所在,烦躁,果断放开,上网看了会雅安地震的新闻,突然maswell想到一个问题,MSP430G2553没有上电复位!按照原理图,我在复位端直接给单片机上拉了一个10K电阻而已,没有加上电容。联想到刚做的RC滤波器,突然明白这个复位电路好像也是个RC滤波器,由信号的理论可以知道,上电瞬间相当于给电路一个高脉冲,这个脉冲含有非常宽的频谱分量,必须要做一个低通滤波器才可以让单片机的复位引脚置一个低电平使之复位单片机才可以正常工作,同时由于电容的储能作用,使得复位以后复位引脚能一直保持高电平。想到这里,maswell又拿出刚做的MATLAB程序。代了几个数值进去,得到了一组数据,相比较之下,并结合实际有的电容。又考虑到上电复位所需的机器周期(大于RC时间常数)选用了一个47uF的电容并在复位端和模拟地(理论上数字地应该也可以,因为只是一个开机瞬间。但是maswell好怕怕再出问题啊。。。)调整完以后,上电,电路又可以正常工作了。问题解决!!!



  解决所有问题以后maswell大松一口气,终于想通了复位电路与简单的RC滤波电路。相比51单片机的高电平复位电路,其实原理也是一样的——高通滤波器。
         **最后,特别想说一点。这两天一直在关注雅安地震的新闻,就像五年前一样,看了以后特别感动和心酸,很多时候都有一种“抑在眼角的感动”,国人遇到大灾难时都会空前的团结,在这里祝福雅安的同胞们——你们还有我们还有21IC的网友,通信电子工程师永远是你们坚强的后盾。







maswell xiao
于桂林电子科技大学信息与通信学院
大学生科技协会科技楼实验室
2013/4/21 23:49
maswell_xiao@foxmail.com
桂电二院科协出品
本文版权所有,转载不究
(本文首发bbs.21IC.com)

使用特权

评论回复
板凳
maswell_xiao|  楼主 | 2013-4-22 15:59 | 只看该作者
本帖最后由 maswell_xiao 于 2013-4-22 22:45 编辑

哎呀,最后一张图发不上去了。我把PDF发动帖子上吧,都快两点半了现在,得赶紧去上课了。昨晚发不了帖子,郁闷啊

RC滤波器的妙用.pdf

713.42 KB, 阅读权限: 1

使用特权

评论回复
地板
rgh111| | 2013-4-22 20:11 | 只看该作者
楼主自娱自乐,玩得好开心啊;P

使用特权

评论回复
5
kinghawk| | 2013-4-22 21:56 | 只看该作者
呵呵,有意思,不过网页排版太难看,lz上传的pdf呢?希望lz上传一份

使用特权

评论回复
6
hk10000| | 2013-4-22 22:21 | 只看该作者
开心。。。。。。。。。

使用特权

评论回复
7
maswell_xiao|  楼主 | 2013-4-22 22:45 | 只看该作者
kinghawk 发表于 2013-4-22 21:56
呵呵,有意思,不过网页排版太难看,lz上传的pdf呢?希望lz上传一份

今天网络不好,pdf已经上传

使用特权

评论回复
8
maswell_xiao|  楼主 | 2013-4-22 22:46 | 只看该作者
kinghawk 发表于 2013-4-22 21:56
呵呵,有意思,不过网页排版太难看,lz上传的pdf呢?希望lz上传一份

pdf已经上传:lol

使用特权

评论回复
9
maswell_xiao|  楼主 | 2013-4-22 22:47 | 只看该作者
rgh111 发表于 2013-4-22 20:11
楼主自娱自乐,玩得好开心啊

使用特权

评论回复
10
kagaobin| | 2013-4-23 08:08 | 只看该作者
开心就好

使用特权

评论回复
11
frlop| | 2013-4-23 08:27 | 只看该作者
mark

使用特权

评论回复
12
riddlecn| | 2013-4-23 09:14 | 只看该作者
原理图真心小   看PDF吧

使用特权

评论回复
13
hardfire| | 2013-4-23 10:11 | 只看该作者
哈哈,要支持下。

使用特权

评论回复
14
wape271| | 2013-4-23 15:29 | 只看该作者
不知道为什么对那个matlab的部分感兴趣,琢磨了一下午,我用labview做了一个
初学献丑一下

使用特权

评论回复
15
dirtwillfly| | 2013-4-23 17:08 | 只看该作者
学习了,收藏

使用特权

评论回复
16
maswell_xiao|  楼主 | 2013-4-23 18:35 | 只看该作者
wape271 发表于 2013-4-23 15:29
不知道为什么对那个matlab的部分感兴趣,琢磨了一下午,我用labview做了一个
初学献丑一下 ...

会设计了?

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
wape271 + 1 设计倒谈不上,班门弄斧了
17
xukun977| | 2013-4-23 22:00 | 只看该作者

当年桂电2、8系科协还行,05年以后开始那个了。。。
3分贝频率已知,R=1000,求C,居然matlab编程,强!
再看输出低频处还是大于1的

使用特权

评论回复
18
zhangmangui| | 2013-4-24 13:09 | 只看该作者
善于总结   善于分享  全力支持

使用特权

评论回复
19
老老实实| | 2013-4-27 13:04 | 只看该作者
精神可嘉,要是一直保持这种深度去做事情,不出几年,必成气候

使用特权

评论回复
20
yudengyun| | 2013-5-2 16:30 | 只看该作者
向LZ学习!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

17

帖子

0

粉丝