?

基于80c51的單片機控制步進電機系統設計

2014-04-29 12:32梅濤
西江月·上旬 2014年4期
關鍵詞:高電平編程單片機

梅濤

【摘 要】本文通過綜合運用單片機技術、電力電子技術和遙控系統設計,從硬件和軟件兩方面研究了基于80c51單片機控制步進電機系統的實現方法,通過PROTEL軟件對電路板的的繪制以及PROTEUS的仿真,證明了系統運行的可靠性。

【關鍵詞】80c51;單片機;步進電機

1、前言

步進電機有慣性小、轉矩大、反應時間短等特點,可以滿足即時啟動和停止的需求,因此,具有廣泛的應用前景。步進電機和其他元件比較起來,一般不用反饋就可以對距離和速率進行準確的測量,并且出來的轉角或距離相對較高,誤差也不累計;制控系統結構精簡,與配套設備兼容,售價較低。所以,在直流電機伺服系統、交流電機伺服系統大量應用在計算機制控系統中的同時,步進電機卻仍然可以統治簡易數控機床、送料機構、儀器、儀表等領域。為此,本文綜合運用單片機技術、電力電子技術和遙控系統設計,從硬件和軟件兩方面研究了其實現方法,并通過PROTEUS、PROTEL軟件實現了80c51單片機控制步進電機,最后給出仿真結果和分析。

2、實現方案的選擇

本文提出的兩種方案,按如下描述。

2.1 方案一。采用ULN2003驅動芯片。鍵盤輸入信號,然后輸入單片機STC89C52的P3口低四位,經過單片機的編程處理,將信號由單片機的P2口低四位輸出。進入驅動芯片ULN2003,從而控制步進電機的運轉。與此同時,單片機對由鍵盤輸入的信號編程處理,用單片機的P0口輸出信號,進入液晶顯示屏1602。

2.2 方案二。采用L297+L298的經典電路設計。采用四個獨立按鍵輸入信號,與單片機STC89C52的高四位相連接,輸入信號,再由單片機編程處理,由P2.0,P2.1,P2.2輸出,進入芯片L297輸入端,再有A,B,C,D四個輸出端口輸入到L298的輸入端IN1,IN2,IN3,IN4,最后輸出端OUT1,OUT2,OUT3,OUT4輸出信號,二相四拍控制步進電機的啟動,停止,正轉反轉,加速減速。

2.3 方案論證及選擇。方案一中uln2003相當于繼電器的作用,例如7個繼電器的一端連某電壓[也即uln2003電源電壓](<50)在一起,而另一端作為則作為輸出,就像一個二極管,只不過因電路集成功能的因素,輸出的電壓等同于uln2003的電壓罷了,常用于步進電機。方案二中的L298/L297可以為負載提供雙向的電流。適合驅動2相或4相的步進電機和直流電機,特別是當驅動電機的方向要改變時,只須把原來電機方向的電位置反即可(port1/port2電平一高一低控制電機B;port3/port4電平一高一低控制電機A,電平改變時電機的方向也隨即改變,而A pwm/B pwm 則分別控制電機AB的速度),而uln2003則須要重新改變電圖上的接線或外加器件接成h橋電路才行。并且方案二只需要給L297一個脈沖信號即可,對單片機的管腳占用少編程簡單,易于實現。故綜合比較判斷,采用第二種設計方案完成此次設計任務。

3、步進電機驅動模塊

設計中由單片機的P2.0,P2.1,P2.2三個口輸入信號到驅動模塊。先經過L297,L297芯片中的EN,CW和CLOCK三個引腳跟別接在單片機的P2.0,P2.1,P2.2。RES和HALF兩個引腳接高電平,OSC引腳接在VCC。輸出端A,B,C,D分別接在L298的四個輸入端口IN1,IN2,IN3,IN4。然后經過的L298芯片,最后輸出信號通過OUT1,OUT2,OUT3,OUT4,最終控制步進電機的轉動。

4、步進電機驅動系統的軟件設計

4.1 Keil軟件及驅動系統總體設計。Keil軟件把指令植入菜單欄,同時還供應了一個可以即時確定指令按鍵的工具欄以及信息提示窗口、對話框等。Keil軟件能夠同時審查多個源碼文件,它有兩大模式:1、Keil軟件可以譯碼幾乎全部的應用程序并合成可以運行的程序,這個模式的詳細特點隨后在新建應用時再討論;2、Keil軟件可以為各種應用軟件供應一個強大的調試器,這個模式在隨后的調試程序介紹時再詳述。這兩種模式有一個共同的特點,就是都可以用Keil Vision3的編碼器來調整源碼。

4.2 單片機主程序。單片機主程序主要是整個系統控制的核心框架,不僅控制著整個系統的運轉,而且還起著銜接子程序模塊的作用。在考慮系統要實現的功能的情況下,設計的主程序的流程如下:

IT0 = 1;//外部中斷信號負跳變有效

EA = 1;//開總控制開關

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();//進入LCD初始化

printXY(0,1,"Speed(r/m):");//LCD顯示第二行

printXY(0,0,"Direction: front");//LCD顯示第一行

disspeed();//調入disspeed子函數

while(1)

{

delay(speed);//延時

P2_2=~P2_2;//P2.2口不斷的取反

}

LCD顯示程序

對于LCD程序,其主要包括LCD的初始化,LCD的讀寫數據,LCD的狀態的讀取,LCD寫指令以及LCD顯示一個字符和一串字符。

LCD的初始化主要是對LCD的模式的設置、清屏以及顯示光標位置的設置。該部分程序如下:

void Lcd_Init(void)

{

delay1_64ms();

Lcd_Write(0,0x38); //8位數據端口,2行顯示,5*7點陣

Lcd_Write(0,0x38);

Lcd_Write(0,0x38);

Lcd_SetDisplay(0x04); //開啟顯示, 無光標|

Lcd_Cursor|Lcd_Flash

Lcd_SetInput(0x02|0x00); //AC遞增, 畫面不動_To

}

LCD顯示字符程序主要是對光標位置的設置以及LCD字符的顯示設置,LCD顯示字符的程序如下:

void Lcd_SetDisplay(uchar DisplayMode)

{

Lcd_Write(0,0x08|DisplayMode);

}

void Lcd_SetInput(uchar InputMode)

{

Lcd_Write(0,0x04|InputMode);

}

4.3 仿真驗證及結果分析。此次設計系統運用的是Proteus7仿真軟件對電路程序進行仿真。在設計過程中,也選用了利用ULN2003驅動步進電機,進行對比,但是由于ULN2003只能驅動4相步進電機。軟件編程過于復雜,并且出現許多問題,如每次轉動都有回轉的現象。

5、結論

基于單片機的步進電機驅動系統的設計,主要用到了STC89C52單片機,L297,L298步進電機驅動芯片,紅外遙控,獨立鍵盤,LCD1602液晶顯示屏,USB數據線,串行線等元器件。本課題開發的步進電機驅動系統也有許多不完善的地方,需要進行多方面的后續開發,進一步增強其功能。

【參考文獻】

[1]陳石龍.基于單片機的步進電機控制系統[J].寧德師專學報,2009(01).

[2]婁俊,朱志甫.基于單片機AT89C51的步進電機控制系統設計[J].湖南農機,2010(09).

[3]高志遠,姚建國,曹陽,等.智能電網發展機理研究初探[J].電力系統保護與控制,2014(05).

[4]李亞平,姚建國,黃海峰,等.SVG技術在電網調度自動化系統中的應用[J].電力系統自動化,2005(23).

猜你喜歡
高電平編程單片機
一種基于FPGA的PWM防錯輸出控制電路
編程,是一種態度
元征X-431實測:奔馳發動機編程
編程小能手
紡織機上誕生的編程
基于單片機的SPWM控制逆變器的設計與實現
基于單片機的層次漸變暖燈的研究
TS-03C全固態PDM中波發射機開關機控制電路原理及故障分析
基于單片機的便捷式LCF測量儀
DM 50KW中波廣播發射機欠推動故障分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合