PIC單片機之步進電機的工作原

作者:立博体育app官网发布时间:2020-05-19已浏览: 58次

立博体育app官网步進電機是一種將電脈沖轉化為角位移的執行機構。當步進驅動器接收到一個脈沖信號,它就驅動步進電機就按設定的方向轉動一個固定的角度(步距角)。通過控制脈沖個數來控制角位移量,可以達到準確定位;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,達到調速的目的;可以通過改變各相的通電順序,控制步進電動機的轉動方向。

那我們該如何來控制步進電機轉動呢直流電機我們只要在電機兩極加上電壓,電機馬上轉動,但步進電機并非這樣,它是數字控制方式,它將電脈沖信號轉變成角位移,即給一個脈沖信號,步進電動機就轉動一個角度,因此非常適合單片機的控制。

現在,我們以反應式步進電機為例,介紹其基本原理與應用方法。反應式步進電機可實現大轉矩輸出,步進角一般為度。反應式步進電機的轉子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁極的變化產生轉矩。常用小型步進電機的實物如圖2所示,該步進電機可以直接與我們的增強型PIC實驗板相連,完成步進電機控制實驗。

1-2相勵磁是1相勵磁和2相勵磁交替使用的方法。磁場旋轉一周需要換相8次,轉子才轉過一個步距角,屬于半步的方式,也就是說1-2相勵磁時的步距角比前兩種方式的步距角小一半,所以步進精度提高了一倍。1-2相勵磁方式見表3。

在實際應用中一般驅動路數不止一路,用圖3的分立電路體積大,各路參數一致性難以保障。最好用現成的集成電路作為多路驅動。常用的小型步進電機驅動電路可以用ULN2003或ULN2803。我們的實驗板上用的是ULN2003。ULN2003是高壓大電流達林頓晶體管陣列系列產品,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應于各類要求高速大功率驅動的系統。

通過前文的原理介紹,我們已經對步進電機的特性以及工作原理有了大致地了解,但當我們拿到一個步進電機時要正確地應用它還是一時不知如何下手,比如我們現在要控制電機正轉、反轉、高速運轉、低速運轉時,需要怎么辦呢要控制步進電機進行正反轉,已不是像直流電機這么簡單,在電機兩端加上正反相電源就可以了,而是通過輸出不同規律的正反轉時序脈沖來實現控制。現在,我們來一起看一下如何進行步進電機正反轉以及轉動速度的控制,通過一個實例,相信會給大家帶來一個感性的認識。

首先,我們來看一下增強型PIC實驗板上的步進電機控制電路,因為我們需要將軟件和硬件相結合進行考慮如何來編程。步進電機控制部分的電路原理圖如圖7所示。PIC單片機的RD0~RD3為電機脈沖輸出引腳,通過ULN2003集成芯片來驅動小型步進電機,我們只要將步進電機的插頭,直接插在板子J3插座處即可。跳線J4為我們為實驗板設計的步進電機智能供電跳線,這樣實驗板可以適用于不同工作電壓的步進電機,當跳線跳到VCC這端,則給步進電機提供VCC+5V的電源,我們現在做實驗使用的步進電機工作電壓是5V的,所以我們跳線設置到VCC這一端即可,如果用戶使用自己的步進電機電壓不是5V的,那可以將跳線跳到VIN這一端,即用戶外部接入電源提供給步進電機工作電壓。

對于單片機軟件的編程,我們使用MPLabIDE軟件來進行C語言編程,它是我們的編程環境,同時我們可以通過使用ICD2仿真燒寫器和增強型PIC實驗板連接進行程序的仿真調試和燒寫步驟,具體的操作步驟,我們已經在前幾期做了詳細的說明和介紹,在此就不再重復說明,讀者朋友可以參閱以前的文章或直接登陸我們的網站查看資料。現在我們可以輸入程序代碼進行調試了,我們在MPLabIDE軟件中新建工程,加入源程序代碼,同時進行芯片型號的選擇和配置位的設置,我們實驗所用的芯片型號為PIC16F877A。編寫的程序代碼如下:

編好程序后,讀者朋友可以將編譯好的HEX通過ICD2仿真燒寫器燒入單片機芯片,然后插上步進電機,上電運行,如圖8所示。這時我們可以看到步進電機已經開始正轉起來,如果我們這時按下K2按鍵,則步進電機開始反轉,如果釋放了K2按鍵,那么步進電機仍然繼續正轉,從而實現了步進電機正反轉的控制。

#include語句用來加載PIC庫文件,#definekeyRB0這條語句將RB0宏定義為key,voiddelay()是延時函數,步進電機在輸出正反轉時序時進行延時,如要調整步進電機的轉動速度,我們只要調速這個延時函數的延時值即可。TRISD、TRISB相關的語句用來設置RD、RB口的輸入、輸出狀態,在此我們設置RD為輸出口,用來給步進電機輸出時序使用,RB口中的RB0設置為輸入口,因為該口是我們實驗板上的按鍵,按鍵是輸入設備。然后賦值key=1,即把RB0初值設置為1,當沒有按鍵按下時,RB0的值為1,當按鍵被按下時,RB0的值為0,while(1)是死循環語句,即周而復始地執行{}內的語句體,我們在死循環體內不停地判斷key這個變量,如果按鍵有沒有被按下,key為1,同時我們在單片機RD口輸出步進電機正轉的時序表,分別輸出1100、0110、0011、1001這些信號,每串信號之間用delay函數進行延時,該延時值不能太快,否則步進電機會無法響應,具體設置多少合適,讀者朋友可以通過ICD2在線調試時,修改延時值來進行實際測試,觀察步進電機的工作狀態,從而實現了步進電機的速度控制;同理,如果按鍵被按下時,key為0,同時我們在單片機RD口輸出步進電機反轉的時序表,分別輸出1100、1001、0011、0110這些信號,可以發現步進電機進行了反轉運動。