梅濤
【摘 要】本文通過綜合運(yùn)用單片機(jī)技術(shù)、電力電子技術(shù)和遙控系統(tǒng)設(shè)計,從硬件和軟件兩方面研究了基于80c51單片機(jī)控制步進(jìn)電機(jī)系統(tǒng)的實(shí)現(xiàn)方法,通過PROTEL軟件對電路板的的繪制以及PROTEUS的仿真,證明了系統(tǒng)運(yùn)行的可靠性。
【關(guān)鍵詞】80c51;單片機(jī);步進(jìn)電機(jī)
1、前言
步進(jìn)電機(jī)有慣性小、轉(zhuǎn)矩大、反應(yīng)時間短等特點(diǎn),可以滿足即時啟動和停止的需求,因此,具有廣泛的應(yīng)用前景。步進(jìn)電機(jī)和其他元件比較起來,一般不用反饋就可以對距離和速率進(jìn)行準(zhǔn)確的測量,并且出來的轉(zhuǎn)角或距離相對較高,誤差也不累計;制控系統(tǒng)結(jié)構(gòu)精簡,與配套設(shè)備兼容,售價較低。所以,在直流電機(jī)伺服系統(tǒng)、交流電機(jī)伺服系統(tǒng)大量應(yīng)用在計算機(jī)制控系統(tǒng)中的同時,步進(jìn)電機(jī)卻仍然可以統(tǒng)治簡易數(shù)控機(jī)床、送料機(jī)構(gòu)、儀器、儀表等領(lǐng)域。為此,本文綜合運(yùn)用單片機(jī)技術(shù)、電力電子技術(shù)和遙控系統(tǒng)設(shè)計,從硬件和軟件兩方面研究了其實(shí)現(xiàn)方法,并通過PROTEUS、PROTEL軟件實(shí)現(xiàn)了80c51單片機(jī)控制步進(jìn)電機(jī),最后給出仿真結(jié)果和分析。
2、實(shí)現(xiàn)方案的選擇
本文提出的兩種方案,按如下描述。
2.1 方案一。采用ULN2003驅(qū)動芯片。鍵盤輸入信號,然后輸入單片機(jī)STC89C52的P3口低四位,經(jīng)過單片機(jī)的編程處理,將信號由單片機(jī)的P2口低四位輸出。進(jìn)入驅(qū)動芯片ULN2003,從而控制步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)。與此同時,單片機(jī)對由鍵盤輸入的信號編程處理,用單片機(jī)的P0口輸出信號,進(jìn)入液晶顯示屏1602。
2.2 方案二。采用L297+L298的經(jīng)典電路設(shè)計。采用四個獨(dú)立按鍵輸入信號,與單片機(jī)STC89C52的高四位相連接,輸入信號,再由單片機(jī)編程處理,由P2.0,P2.1,P2.2輸出,進(jìn)入芯片L297輸入端,再有A,B,C,D四個輸出端口輸入到L298的輸入端IN1,IN2,IN3,IN4,最后輸出端OUT1,OUT2,OUT3,OUT4輸出信號,二相四拍控制步進(jìn)電機(jī)的啟動,停止,正轉(zhuǎn)反轉(zhuǎn),加速減速。
2.3 方案論證及選擇。方案一中uln2003相當(dāng)于繼電器的作用,例如7個繼電器的一端連某電壓[也即uln2003電源電壓](<50)在一起,而另一端作為則作為輸出,就像一個二極管,只不過因電路集成功能的因素,輸出的電壓等同于uln2003的電壓罷了,常用于步進(jìn)電機(jī)。方案二中的L298/L297可以為負(fù)載提供雙向的電流。適合驅(qū)動2相或4相的步進(jìn)電機(jī)和直流電機(jī),特別是當(dāng)驅(qū)動電機(jī)的方向要改變時,只須把原來電機(jī)方向的電位置反即可(port1/port2電平一高一低控制電機(jī)B;port3/port4電平一高一低控制電機(jī)A,電平改變時電機(jī)的方向也隨即改變,而A pwm/B pwm 則分別控制電機(jī)AB的速度),而uln2003則須要重新改變電圖上的接線或外加器件接成h橋電路才行。并且方案二只需要給L297一個脈沖信號即可,對單片機(jī)的管腳占用少編程簡單,易于實(shí)現(xiàn)。故綜合比較判斷,采用第二種設(shè)計方案完成此次設(shè)計任務(wù)。
3、步進(jìn)電機(jī)驅(qū)動模塊
設(shè)計中由單片機(jī)的P2.0,P2.1,P2.2三個口輸入信號到驅(qū)動模塊。先經(jīng)過L297,L297芯片中的EN,CW和CLOCK三個引腳跟別接在單片機(jī)的P2.0,P2.1,P2.2。RES和HALF兩個引腳接高電平,OSC引腳接在VCC。輸出端A,B,C,D分別接在L298的四個輸入端口IN1,IN2,IN3,IN4。然后經(jīng)過的L298芯片,最后輸出信號通過OUT1,OUT2,OUT3,OUT4,最終控制步進(jìn)電機(jī)的轉(zhuǎn)動。
4、步進(jìn)電機(jī)驅(qū)動系統(tǒng)的軟件設(shè)計
4.1 Keil軟件及驅(qū)動系統(tǒng)總體設(shè)計。Keil軟件把指令植入菜單欄,同時還供應(yīng)了一個可以即時確定指令按鍵的工具欄以及信息提示窗口、對話框等。Keil軟件能夠同時審查多個源碼文件,它有兩大模式:1、Keil軟件可以譯碼幾乎全部的應(yīng)用程序并合成可以運(yùn)行的程序,這個模式的詳細(xì)特點(diǎn)隨后在新建應(yīng)用時再討論;2、Keil軟件可以為各種應(yīng)用軟件供應(yīng)一個強(qiáng)大的調(diào)試器,這個模式在隨后的調(diào)試程序介紹時再詳述。這兩種模式有一個共同的特點(diǎn),就是都可以用Keil Vision3的編碼器來調(diào)整源碼。
4.2 單片機(jī)主程序。單片機(jī)主程序主要是整個系統(tǒng)控制的核心框架,不僅控制著整個系統(tǒng)的運(yùn)轉(zhuǎn),而且還起著銜接子程序模塊的作用。在考慮系統(tǒng)要實(shí)現(xiàn)的功能的情況下,設(shè)計的主程序的流程如下:
IT0 = 1;//外部中斷信號負(fù)跳變有效
EA = 1;//開總控制開關(guān)
EX0 = 1;//開中斷
P2_0=0;//P2.0口賦初值
P3_4=1;//K1為高電平
P3_5=1;//K2為高電平
P3_6=1; //K3為高電平
P3_7=1; //K4為高電平
Lcd_Init();//進(jìn)入LCD初始化
printXY(0,1,"Speed(r/m):");//LCD顯示第二行
printXY(0,0,"Direction: front");//LCD顯示第一行
disspeed();//調(diào)入disspeed子函數(shù)
while(1)
{
delay(speed);//延時
P2_2=~P2_2;//P2.2口不斷的取反
}
LCD顯示程序
對于LCD程序,其主要包括LCD的初始化,LCD的讀寫數(shù)據(jù),LCD的狀態(tài)的讀取,LCD寫指令以及LCD顯示一個字符和一串字符。
LCD的初始化主要是對LCD的模式的設(shè)置、清屏以及顯示光標(biāo)位置的設(shè)置。該部分程序如下:
void Lcd_Init(void)
{
delay1_64ms();
Lcd_Write(0,0x38); //8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣
Lcd_Write(0,0x38);
Lcd_Write(0,0x38);
Lcd_SetDisplay(0x04); //開啟顯示, 無光標(biāo)|
Lcd_Cursor|Lcd_Flash
Lcd_SetInput(0x02|0x00); //AC遞增, 畫面不動_To
}
LCD顯示字符程序主要是對光標(biāo)位置的設(shè)置以及LCD字符的顯示設(shè)置,LCD顯示字符的程序如下:
void Lcd_SetDisplay(uchar DisplayMode)
{
Lcd_Write(0,0x08|DisplayMode);
}
void Lcd_SetInput(uchar InputMode)
{
Lcd_Write(0,0x04|InputMode);
}
4.3 仿真驗證及結(jié)果分析。此次設(shè)計系統(tǒng)運(yùn)用的是Proteus7仿真軟件對電路程序進(jìn)行仿真。在設(shè)計過程中,也選用了利用ULN2003驅(qū)動步進(jìn)電機(jī),進(jìn)行對比,但是由于ULN2003只能驅(qū)動4相步進(jìn)電機(jī)。軟件編程過于復(fù)雜,并且出現(xiàn)許多問題,如每次轉(zhuǎn)動都有回轉(zhuǎn)的現(xiàn)象。
5、結(jié)論
基于單片機(jī)的步進(jìn)電機(jī)驅(qū)動系統(tǒng)的設(shè)計,主要用到了STC89C52單片機(jī),L297,L298步進(jìn)電機(jī)驅(qū)動芯片,紅外遙控,獨(dú)立鍵盤,LCD1602液晶顯示屏,USB數(shù)據(jù)線,串行線等元器件。本課題開發(fā)的步進(jìn)電機(jī)驅(qū)動系統(tǒng)也有許多不完善的地方,需要進(jìn)行多方面的后續(xù)開發(fā),進(jìn)一步增強(qiáng)其功能。
【參考文獻(xiàn)】
[1]陳石龍.基于單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)[J].寧德師專學(xué)報,2009(01).
[2]婁俊,朱志甫.基于單片機(jī)AT89C51的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計[J].湖南農(nóng)機(jī),2010(09).
[3]高志遠(yuǎn),姚建國,曹陽,等.智能電網(wǎng)發(fā)展機(jī)理研究初探[J].電力系統(tǒng)保護(hù)與控制,2014(05).
[4]李亞平,姚建國,黃海峰,等.SVG技術(shù)在電網(wǎng)調(diào)度自動化系統(tǒng)中的應(yīng)用[J].電力系統(tǒng)自動化,2005(23).