调试的时候发现了一个非常纠结的问题。数据总是莫名其妙地显示200转/s甚至是1000转每秒,实际上,我这个电机的转动速度最大也就110转每秒,这些个数据显然都是错误的。反复检查定时器的捕获程序,检查了好几遍,加上有写了一年的430单片机程序的经验,对这个G2553的内部寄存器相当熟悉,反复分析,100%确定程序没有任何问题。那么问题在哪里呢?后来分析了一段代码。
这个函数是将捕获到的定时器的脉冲计数值送到12864的一个中间转换函数,temp显示的转速,由于CPU 时钟用的1MHz,电机那里有四个黑带,所以实际的转速应该是250000/tempData,得到这个数据后转换成ASCII码,再送到12864显示。问题出现在这里,12864显示数据1000+,说明temp = 1000+,比实际的数据100+大了10倍。那么也就意味着tempData的数据比实际的真实数据小了10倍,也就是说定时器两次捕获时间的间隔比常规的要小很多,为什么会小了那么多倍呢。
思来想去,灵光一闪,哎呀,对了!由于电机的胶布粘贴得不均匀,产生了大量的不均衡噪声,使得比较器的输出含有大量的高频分量,由于噪声的存在,使得定时器的捕获时间间隔变小!从而出现了显示数据偏大的结果。想到问题所在,那么怎么解决掉呢。查看原理图,发现运算放大器的输出端接有一个1K的电阻,哎呀玛雅,灵感方案突然就来了,做个简单的RC低通滤波器不久完了?想到方案以后那么电容的值又该怎么选了?在草稿纸上做个简单的分析,现将草稿纸上的内容mathtype搬到Word上来。
电容的阻抗表达式:
把运放的输出结果看成一个电压源,其输出电压等于RC滤波网络的输入电压假设其值为:
那么上图所示的Vout的输出表达式为
为了方便分析,我们假设Vi为1V,并且不考虑相位问题,取Vout的模可得
输出表达式与输入频率的关系找到了,那么我们的电容值又该怎么设计呢?考虑到我们的光电管经过比较器输出以后的频率最大为500Hz,那么我们设计一个‐3dB在500Hz左右的滤波器即可。用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’);
在测试C的时候从1nF开始测试,得到下面的输出曲线,从图中我们可以看到,从0Hz到1000Hz,输出几乎都是1,不变,1nF的电容不符合我们的设计要求。再加大,测试104电容,104电容即0.1uF,得到的输出幅频特性曲线如下,显然不符合我们的设计要求,500Hz‐3dB处还差一点点,再加大10倍,测试1uF.
下面这张是1uF的测试图,显然‐3dB小于500Hz了。也不符合设计要求,经过反复测试并结合手头上有额电容容值,选定474电容,得到幅频特性曲线也较为理想。敲定电容值以后已经迫不及待把电容焊上去了。焊接完毕以后,长时间观察,12864没有再出现200转/秒或者1000转/秒的显示值,也就是说设计的滤波器已经起到效果了!做成以后兴奋了一小下。兴奋之余,想到既然是高频噪声的影响,那么何不看看它的频谱图呢,一想到,果断从科协搬来一台数字示波器,测试了安装RC滤波器前的FFT图形和安装RC滤波器后的FFT图形,现贴在这里。从两个图中,很明显地可以看到安装滤波器前裙子噪声非常明显,安装后,裙子噪声基本没有了!!!,看到这里,我又忍不住兴奋了一下。
解决所有问题以后大松一口气,终于想通了复位电路与简单的RC滤波电路。相比51单片机的高电平复位电路,其实原理也是一样的——高通滤波器。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |