51單片機開發(fā)板上步進(jìn)電機的總結(jié)經(jīng)驗
相信學(xué)過電子的人都會知道什么是步進(jìn)電機,它的定義及作用在百度百科里描述的也是比較詳細(xì)的,它是一種同步電機,在機電一體化等工業(yè)方面均有廣泛的應(yīng)用,因此怎么也得知道的.于是手上找來一個實物見圖1.
圖1
javascript:resizepic(this) border=0>
圖2
這是一款四相五線步進(jìn)電機,轉(zhuǎn)子齒數(shù)按公式推算可得為8個,步距角應(yīng)為11.25度,給出的資料那應(yīng)該叫半步距角.其它的參數(shù)均可按照參數(shù)圖中進(jìn)行,電機可以用ULN2003A這個芯片來驅(qū)動,我決定先不看51hei官方提供的資料和實例程序,看憑自己的實力能不能讓這個小東西轉(zhuǎn)動起來,照著圖2的連線圖連了起來(那4個指示燈是我自己加上去的.方便觀察)并且把P1.0,P1.1,P1.2,P1.3四個I/O口和51hei單片機開發(fā)板上的引腳對應(yīng),也就是插上了相應(yīng)的雙排針跳線帽和杜邦線,然后自己搗鼓了2個小時對照一些資料寫了一個程序燒了進(jìn)STC89C52RC上,上電......哪有一次就成功?折騰了一陣子發(fā)現(xiàn)是四個I/O口引腳接得不對,改正過來后,再上電........還是不成功,仔陣檢查過硬件電路連接后發(fā)現(xiàn)沒有錯誤,于是我懷疑起了程序來,經(jīng)研究,發(fā)現(xiàn)此程序并不適合此電機及連線圖,自己一時大意竟把原該輸出負(fù)脈沖的相勵磁脈沖順序變成正的了,呵呵,改了一下之后,發(fā)現(xiàn)可以了.電機終于會轉(zhuǎn)了...這時已是前天晚上的深夜3點多了...
由于此程序采用的是Delay函數(shù)進(jìn)行延時來改變頻沖頻率的,因此我多次修改延時的確值,多次調(diào)試,發(fā)現(xiàn)電機無論怎么改,轉(zhuǎn)速都很慢,最高測過只有十多轉(zhuǎn)每分鐘,我的天呀,怎么會這么慢,然后問一下別人,別人說有可能是電流不夠,他說最好能采用獨立電源來供電,但是由于未能找到獨立電源,因此沒有試驗過電流增大的情況,查資料說是會使力矩增大,但應(yīng)該不會使電機轉(zhuǎn)得更快吧?更何況我的電機也沒有失步呀....于是我又去問另一個師兄,師兄告訴我有可能是裝了減速裝置了,后來經(jīng)仔細(xì)觀察,從以下幾點可以大概推斷出電機是裝了減速裝置的:1.從圖1實物圖中可以看到電機的軸并不在圓形的正中心位置上,一般的只有經(jīng)過減速裝置的電機才會這樣的;2.參數(shù)圖中給出的參數(shù)中存在一個"減速比:1/16這個參數(shù),確實證明了它是經(jīng)過減速的,即:原來電機的軸轉(zhuǎn)一圈,輸出軸才轉(zhuǎn)16分之1圈。想怎么會不慢?可惜我一開始先入為主了,以為那個“減速比”跟另外一個概念“調(diào)速比”的理解是差不多的(其實不一樣),所以在看參數(shù)圖的時候并沒有醒悟過來,現(xiàn)在想來感覺自己相當(dāng)?shù)牟恍?,做技術(shù)研究的,怎么能夠說差不多呢?1就是1,2就是2,雖說當(dāng)時是處于疑惑的狀態(tài),但歸根究底還是自己先入為主地思考問題了,慚愧......3.仔細(xì)聽一下聲音,發(fā)現(xiàn)電機的聲音頻率是很高的,但輸出軸的角速度卻如此的低,因此有可能是經(jīng)過減速裝置的......當(dāng)師兄跟我說有可能是經(jīng)過減速的時候,我馬上感覺到更不對頭了.最后師兄還親身拆了這電機來證實了,真的有減速裝置...
了解了情況之后,覺得原來的程序?qū)懙貌缓?于是折騰了一陣子,寫出了一個用定時器來產(chǎn)生脈沖的程序,而且還能利用開發(fā)板上的按鍵來改變電機的轉(zhuǎn)速和方向,并且在數(shù)碼管上進(jìn)行顯示,啊,感覺51的定時器還是蠻好用的....今晚也算是有收獲的.這里給大家共享一下官方的電機的源程序:http://www.51hei.com/ziliao/51hei-5/精準(zhǔn)控制步進(jìn)電機.rar 可點擊下載,簡單修改程序可讓電機正反轉(zhuǎn).好像在專區(qū)還有幾個類似的程序大家自己去找吧.我自己寫的太亂就不獻(xiàn)丑了.
再后來去查了一下資料,發(fā)現(xiàn)原來步進(jìn)電機的加速程序沒有我想得那么簡單(步進(jìn)電機一般都是漸漸加速至正常運行的,太高的啟動頻率會使電機無法啟動),我的想法是用線性加速的辦法,而資料論文中提出的卻是較高級的指數(shù)曲線加速的方法,還用到了轉(zhuǎn)動慣量和微積分來進(jìn)行分析,哎....現(xiàn)在想一下,其實高數(shù)和物理在這里還是有用的,數(shù)學(xué)和物理總是分不開的,假如想在步進(jìn)電機控制這一領(lǐng)域做得深入,除了電路的基本知識要過硬外,數(shù)學(xué)及物理知識也跑不了的,這樣說一來就是叫自己在大學(xué)的時間里要好好地學(xué)習(xí)高數(shù)了,可是實際上又有幾個本科的學(xué)生可以知道原來學(xué)會高數(shù)和大學(xué)物理就是可以這樣應(yīng)用知識的?學(xué)校里(特別是南醫(yī)大這種帶工科類的醫(yī)科學(xué)校)老師教的時候會和我們說的那么詳細(xì)嗎?顯然不實際也不可能,可是大學(xué)四年時間就這樣過去了,難道我們就這樣讓時間流走嗎...
在步進(jìn)電機這個小事上,我覺得,大學(xué)一兩年里還是該把基礎(chǔ)知識打好的...這樣才能使自己在以后的技術(shù)職業(yè)生涯中不至于處處碰頭,最起碼到時還記得回來翻開高數(shù)的課本,找出無窮級數(shù)在哪一頁吧?
當(dāng)然,能一出來就做ARM的開發(fā)或者系統(tǒng)底層移植及驅(qū)動開發(fā)的,是相當(dāng)?shù)牟诲e的了,因為那就意味著項目經(jīng)驗!!!如果自己決定要往這一方面走,就必須得有所舍棄了......
另外附上這個電機的參數(shù)圖: