最近在調(diào)一個(gè)MSP430單片機(jī)控制電機(jī)并測(cè)速度的電路。整個(gè)電路從設(shè)計(jì)制作到調(diào)試成功,花了將近四天時(shí)間,中間Bug多多,不過(guò)最后都一并解決了。
廢話不多說(shuō),直接進(jìn)入主題,先說(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)三根線。
再放一個(gè)三線控制13864的圖。由于MSP4302xx系列是3.3V的器件,這里用到了一個(gè)245芯片來(lái)轉(zhuǎn)換電平電壓(CS和SCLK的順序反了,后來(lái)布線的時(shí)候改的)。初學(xué)者往往會(huì)遇到一個(gè)問(wèn)題,就是為什么我的12864的滑動(dòng)變阻器調(diào)了,12864的亮度都不變呢,我在這里只提一點(diǎn):注意你的復(fù)位引腳的電平。
H橋電路太常見(jiàn),百度出來(lái)一抓一大把。
至于H橋原理神馬的,我就不在這里多說(shuō)了。不懂就百度吧,實(shí)際上學(xué)過(guò)三極管的,稍微靜下心來(lái)分析一個(gè),都可以看得懂的。下面是一個(gè)比較器的電路,用的是光電對(duì)管發(fā)射信號(hào),經(jīng)黑線反射以后PHOTO上產(chǎn)生一定的電壓值,做電路的時(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è)電阻方便了我后面的濾波)下面說(shuō)說(shuō)問(wèn)題所在吧。
調(diào)試的時(shí)候發(fā)現(xiàn)了一個(gè)非常糾結(jié)的問(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í)器的捕獲程序,檢查了好幾遍,加上有寫了一年的430單片機(jī)程序的經(jīng)驗(yàn),對(duì)這個(gè)G2553的內(nèi)部寄存器相當(dāng)熟悉,反復(fù)分析,100%確定程序沒(méi)有任何問(wèn)題。那么問(wèn)題在哪里呢?后來(lái)分析了一段代碼。
這個(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ì)小了那么多倍呢。