前言:最近在調(diào)一個(gè)MSP430單片機(jī)控制電機(jī)并測(cè)速度的電路。整個(gè)電路從設(shè)計(jì)制作到調(diào)試成功,花了將近四天時(shí)間,中間Bug多多,最后解決Bug的時(shí)候自己都忍不住笑自己了——好笨啊! 廢話不多說(shuō),直接進(jìn)入主題,maswell我最反感的就是水軍論文中的戰(zhàn)斗機(jī)論文都是先扯一大堆廢話,然后才開(kāi)始一堆沒(méi)用的廢話。。。哎呀,又扯廢話了。切入主題吧。 先說(shuō)說(shuō)我這個(gè)系統(tǒng)。下面Figure 1是MSP430主控制部分,用的芯片是MSP430G2553單片機(jī)(11、12號(hào)引腳是反過(guò)來(lái)滴),第一個(gè)是Pro Download接口,顧名思義,就是程序下載口,我用的MSP430G系列的launchPad開(kāi)發(fā)板連接到我設(shè)計(jì)的板子上的,通過(guò)這幾個(gè)接口利用launchPad即可下載程序,為了方便布線,我打亂了這幾個(gè)接口的順序。PWM1和PWM2接口是連接到H橋的兩個(gè)接口,這里使用了G2553的定時(shí)器A1產(chǎn)生PWM。CAP_P12是光電對(duì)管連接到比較強(qiáng)后輸入到單片機(jī)的一個(gè)捕獲接口,因?yàn)檫@里可以用定時(shí)器A0的捕獲接口,使用定時(shí)器的捕獲功能,可以使得程序設(shè)計(jì)更為簡(jiǎn)單。整個(gè)系統(tǒng)利用了兩個(gè)定時(shí)器,并結(jié)合中斷,使得整個(gè)系統(tǒng)都處于休眠狀態(tài),功耗可以做得比較低(但由于電機(jī)和12864的存在,這里的低功耗程序設(shè)計(jì)顯得毫無(wú)意義額。。。)。另外還有一個(gè)12864的串行外部接口(SPI)三根線。
1.png (6.14 KB, 下載次數(shù): 165)
下載附件
2013-7-7 01:37 上傳
Figure 1 MSP430G2553主控制部分 |
2.JPG (101.42 KB, 下載次數(shù): 156)
下載附件
2013-7-7 01:18 上傳
Figure2 maswell 的實(shí)驗(yàn)設(shè)備 再放一個(gè)三線控制13864的圖。由于MSP430x2xx系列是3.3V的器件,這里用到了一個(gè)245芯片來(lái)轉(zhuǎn)換電平電壓(CS和SCLK的順序反了,后來(lái)布線的時(shí)候改的)。初學(xué)者往往會(huì)遇到一個(gè)問(wèn)題,就是為什么我的12864的滑動(dòng)變阻器調(diào)了,12864的亮度都不變呢,maswell我在這里只提一點(diǎn):注意你的復(fù)位引腳的電平。。。
2.png (7.26 KB, 下載次數(shù): 170)
下載附件
2013-7-7 01:37 上傳
Figure 3 74HC245 與12864 驅(qū)動(dòng)電路 |
H橋電路太常見(jiàn),百度出來(lái)一抓一大把,都長(zhǎng)一個(gè)摸樣,區(qū)別就像一個(gè)人臉上的痘痘都長(zhǎng)在做邊,一個(gè)人都痘痘兩邊都有(兩個(gè)保護(hù)管)。哎呀,扯遠(yuǎn),廢話不多說(shuō),貼圖說(shuō)明一切
3.png (6.27 KB, 下載次數(shù): 141)
下載附件
2013-7-7 01:37 上傳
Figure 3 H橋 |
至于H橋原理神馬的,maswell我就不在這里多說(shuō)了。。。不懂就百度吧,實(shí)際上學(xué)過(guò)三極管的,稍微靜下心來(lái)分析一個(gè),都可以看得懂的。下面是一個(gè)比較器的電路,用的是光電對(duì)管發(fā)射信號(hào),經(jīng)黑線反射以后PHOTO上產(chǎn)生一定的電壓值,maswell做電路的時(shí)候?qū)崪y(cè)LM358的輸入電壓高達(dá)0.6V(哈哈,其實(shí)也不高…),右邊的LM358構(gòu)成一個(gè)比較器,VCC為5V電壓,經(jīng)10K和50歐姆電阻分壓以后LM358的2號(hào)引腳的電壓大致為0.5V<0.6V,滿足電路設(shè)計(jì)要求。后加一個(gè)1K電阻保護(hù)后級(jí)單片機(jī)(哈哈,這個(gè)電阻方便了我后面的濾波,欲知為何,請(qǐng)聽(tīng)下回分解~~額,又來(lái)三國(guó)演義的味道了。)下面說(shuō)說(shuō)問(wèn)題所在吧。
4.png (3.55 KB, 下載次數(shù): 156)
下載附件
2013-7-7 01:37 上傳
|
6.JPG (110.39 KB, 下載次數(shù): 146)
下載附件
2013-7-7 01:18 上傳
|
調(diào)試的時(shí)候發(fā)現(xiàn)了一個(gè)非常蛋疼的問(wèn)題。數(shù)據(jù)總是莫名其妙地顯示200轉(zhuǎn)/s甚至是1000轉(zhuǎn)每秒,實(shí)際上,我這個(gè)電機(jī)的轉(zhuǎn)動(dòng)速度最大也就110轉(zhuǎn)每秒,這些個(gè)數(shù)據(jù)顯然都是錯(cuò)誤的。反復(fù)檢查定時(shí)器的捕獲程序,檢查了好幾遍,加上有寫(xiě)了一年的430單片機(jī)程序的經(jīng)驗(yàn),對(duì)這個(gè)G2553的內(nèi)部寄存器相當(dāng)熟悉,反復(fù)分析,100%確定程序沒(méi)有任何問(wèn)題。那么問(wèn)題在哪里呢?后來(lái)分析了一段代碼
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; |
這個(gè)函數(shù)是將捕獲到的定時(shí)器的脈沖計(jì)數(shù)值送到12864的一個(gè)中間轉(zhuǎn)換函數(shù),temp顯示的轉(zhuǎn)速,由于CPU時(shí)鐘用的1MHz,電機(jī)那里有四個(gè)黑帶,所以實(shí)際的轉(zhuǎn)速應(yīng)該是250000/tempData,得到這個(gè)數(shù)據(jù)后轉(zhuǎn)換成ASCII碼,再送到12864顯示。問(wèn)題出現(xiàn)在這里,12864顯示數(shù)據(jù)1000+,說(shuō)明temp = 1000+,比實(shí)際的數(shù)據(jù)100+大了10倍。那么也就意味著tempData的數(shù)據(jù)比實(shí)際的真實(shí)數(shù)據(jù)小了10倍,也就是說(shuō)定時(shí)器兩次捕獲時(shí)間的間隔比常規(guī)的要小很多,為什么會(huì)小了那么多倍呢。 思來(lái)想去,maswell靈光一閃,哎呀,對(duì)了!由于電機(jī)的膠布粘貼得不均勻,產(chǎn)生了大量的不均衡噪聲,使得比較器的輸出含有大量的高頻分量,由于噪聲的存在,使得定時(shí)器的捕獲時(shí)間間隔變小!從而出現(xiàn)了顯示數(shù)據(jù)偏大的結(jié)果。 想到問(wèn)題所在,那么怎么解決掉呢。查看原理圖,發(fā)現(xiàn)運(yùn)算放大器的輸出端接有一個(gè)1K的電阻,哎呀瑪雅,靈感方案突然就來(lái)了,做個(gè)簡(jiǎn)單的RC低通濾波器不久完了?想到方案以后那么電容的值又該怎么選了?maswell在草稿紙上做個(gè)簡(jiǎn)單的分析,現(xiàn)將草稿紙上的內(nèi)容mathtype搬到Word上來(lái)。 電容的阻抗表達(dá)式: 把運(yùn)放的輸出結(jié)果看成一個(gè)電壓源,其輸出電壓等于RC濾波網(wǎng)絡(luò)的輸入電壓假設(shè)其值為:
1.JPG (4.14 KB, 下載次數(shù): 157)
下載附件
2013-7-7 01:40 上傳
|
那么上圖所示的Vout的輸出表達(dá)式為
為了方便分析,我們假設(shè)Vi為1V,并且不考慮相位問(wèn)題,取Vout的模可得
輸出表達(dá)式與輸入頻率的關(guān)系找到了,那么我們的電容值又該怎么設(shè)計(jì)呢?考慮到我們的光電管經(jīng)過(guò)比較器輸出以后的頻率最大為500Hz,那么我們?cè)O(shè)計(jì)一個(gè)-3dB在500Hz左右的濾波器即可。用MATLAB寫(xiě)個(gè)小程序。 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濾波器設(shè)計(jì)'); legend('0.001uF','0.01uF','0.1uF','1uF','0.3uF'); xlabel('頻率/Hz'); ylabel('輸出幅頻/V');
|
Maswell在測(cè)試C的時(shí)候從1nF開(kāi)始測(cè)試,得到下面的輸出曲線,從圖中我們可以看到,從0Hz到1000Hz,輸出幾乎都是1,不變,1nF的電容不符合我們的設(shè)計(jì)要求。再加大,測(cè)試104電容 104電容即0.1uF,得到的輸出幅頻特性曲線如下,顯然不符合我們的設(shè)計(jì)要求,500Hz-3dB處還差一點(diǎn)點(diǎn),再加大10倍,測(cè)試1uF 下面這張是1uF的測(cè)試圖,顯然-3dB小于500Hz了。也不符合設(shè)計(jì)要求,經(jīng)過(guò)maswell的反復(fù)測(cè)試并結(jié)合手頭上有額電容容值,選定474電容,得到幅頻特性曲線也較為理想。 敲定電容值以后maswell已經(jīng)迫不及待把電容焊上去了。焊接完畢以后,長(zhǎng)時(shí)間觀察,12864沒(méi)有再出現(xiàn)200轉(zhuǎn)/秒或者1000轉(zhuǎn)/秒的顯示值,也就是說(shuō)maswell設(shè)計(jì)的濾波器已經(jīng)起到效果了!maswell做成以后興奮了一小下。興奮之余,想到既然是高頻噪聲的影響,那么何不看看它的頻譜圖呢,一想到,maswell果斷從科協(xié)搬來(lái)一臺(tái)數(shù)字示波器,測(cè)試了安裝RC濾波器前的FFT圖形和安裝RC濾波器后的FFT圖形,現(xiàn)貼在這里。從兩個(gè)圖中,很明顯地可以看到安裝濾波器前裙子噪聲非常明顯,安裝后,裙子噪聲基本沒(méi)有了!!!,看到這里,maswell我又忍不住興奮了一下~
8.JPG (54.05 KB, 下載次數(shù): 154)
下載附件
2013-7-7 01:18 上傳
9.JPG (256.26 KB, 下載次數(shù): 138)
下載附件
2013-7-7 01:19 上傳
安裝RC 濾波器前 |
10.JPG (1003.05 KB, 下載次數(shù): 158)
下載附件
2013-7-7 01:20 上傳
安裝RC濾波器后
|
|