摘 要:本文運用AT89C51單片機、鍵盤和LED專用智能控制芯片HD7279A、步進電機環(huán)形分配器L297、步進電機驅(qū)動器L298N構(gòu)成了一套步進電機轉(zhuǎn)臺控制系統(tǒng),實現(xiàn)單片機識別并輸出顯示鍵盤輸入的數(shù)據(jù)信息(轉(zhuǎn)角)并產(chǎn)生連續(xù)脈沖控制步進電機轉(zhuǎn)動,進而帶動轉(zhuǎn)動臺轉(zhuǎn)動的任務。
關(guān)鍵詞:單片機,步進電機驅(qū)動
一、前言
在進行熱對流式加速度傳感器溫度特性研究中,需將傳感器系統(tǒng)放置在一個可在縱向進行三百六十度旋轉(zhuǎn)的旋轉(zhuǎn)臺上,并將旋轉(zhuǎn)臺放入恒溫試驗箱中,利用當旋轉(zhuǎn)臺旋轉(zhuǎn)時傳感器敏感面方向感受的重力加速度發(fā)生變化這一現(xiàn)象,檢測傳感器的靈敏度的變化。為使測量數(shù)據(jù)可靠,控制系統(tǒng)采用步進電動機作為驅(qū)動,通過控制轉(zhuǎn)動的步數(shù)(角度),使轉(zhuǎn)動臺轉(zhuǎn)過一個角度,待傳感器的輸出數(shù)據(jù)穩(wěn)定以后即可記錄有關(guān)數(shù)據(jù)。為實現(xiàn)這一功能,研制了用單片機控制的步進電機轉(zhuǎn)臺。
二、系統(tǒng)的總體設計
步進電動機工作,需要步進電機線圈的勵磁信號,還需要功率放大器根據(jù)該信號產(chǎn)生驅(qū)動電流。專門為步進電機設計的環(huán)形分配器和功率驅(qū)動器可以實現(xiàn)這種功能。
通過鍵盤輸入控制信息,包括電機的轉(zhuǎn)向、轉(zhuǎn)角等。單片機接收這些信息并產(chǎn)生相應的控制信號傳送給電機控制器;同時單片機還要控制多位數(shù)碼管顯示鍵盤所輸入的信息和實際轉(zhuǎn)動的情況。
根據(jù)實際需要,人機交互通過4×4行列式鍵盤和一對4聯(lián)LED數(shù)碼管來實現(xiàn);按鍵輸入與LED顯示器由控制芯片HD7279A來控制;單片機選用AT89C51 Flash單片機;由于測量范圍并不要求傾斜角度變化的分度非常細密,選用成本較低的兩相步進電動機42BYG121,其步進角為1.8度,通過半步驅(qū)動方式進行細分可獲得0.9度的步進角;環(huán)形分配器和電機驅(qū)動器選用L297和L298N芯片,由L297將單片機給出的連續(xù)脈沖轉(zhuǎn)換成步進電機所要求的相繞組脈沖序列;再由L298N對相脈沖信號進行放大,驅(qū)動步進電機轉(zhuǎn)動。
最終系統(tǒng)總體方案如圖1所示。
圖1 控制系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)的工作過程如下:系統(tǒng)利用鍵盤輸入數(shù)值,通過HD7279A芯片將輸入的按鍵鍵值傳送到單片機,單片機識別鍵值所代表的是數(shù)據(jù)還是功能鍵,或者傳送數(shù)據(jù)經(jīng)過HD7279A驅(qū)動LED數(shù)碼管顯示,或者根據(jù)輸入數(shù)值確定步進電機的轉(zhuǎn)角,輸出一定的脈沖信號,并由L297轉(zhuǎn)換成步進電動機各相的相脈沖,經(jīng)過L298N放大驅(qū)動步進電動機,由步進電動機帶動機械部分轉(zhuǎn)動。
三、主要接口與編程實現(xiàn)
數(shù)據(jù)輸入與顯示接口芯片采用HD7279A,它是一個具有串行接口的,可同時驅(qū)動8位共陰式LED數(shù)碼管的智能顯示驅(qū)動芯片,該芯片同時還可連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示、鍵盤接口的全部功能。HD7279A內(nèi)含譯碼器,可直接接受BCD碼或16進制碼,并同時具有2種譯碼方式,此外還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。
HD7279A的控制指令分為二大類:純指令和帶有數(shù)據(jù)的指令。純指令包括測試、移位顯示、復位等,共計六條,對應的控制碼是從0xBF到0xA4;帶數(shù)據(jù)的指令包括顯示數(shù)據(jù)、消隱控制、讀出鍵碼等,指令格式是控制字+數(shù)據(jù)。
用C51編程,實現(xiàn)對HD7279A發(fā)送一個字節(jié)的指令或數(shù)據(jù)的例程如下:
void send_byte( unsigned char out_byte){
unsigned char i;
cs=0;
long_delay();
for (i=0;i<8;i++){
if (out_byte&0x80)
dat=1;
else
dat=0;
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;
}
dat=0;
}
發(fā)送帶數(shù)據(jù)的指令可利用下面的例程來實現(xiàn):
void write7279(unsigned char cmd, unsigned char dta){
send_byte (cmd);
send_byte (dta);
}
從HD7279A讀出數(shù)據(jù)的例程如下:
unsigned char read7279(unsigned char command){
send_byte(command);
return(receive_byte());
}
定義有關(guān)的命令字如下:
#define CMD_RESET 0xa4
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define BLINKCTL 0x88
……
要控制與HD7279A連接的LED,利用下面的程序行即可實現(xiàn):
send_byte(CMD_RESET); //復位HD7279A
write7279(BLINKCTL,0xf8); //第1、2、3 位設置為閃爍顯示
write7279(UNDECODE,0X08); //在第1位顯示下劃線
write7279(DECODE0,value); //按0方式解碼顯示數(shù)字
write7279(DECODE1,value); //按1方式解碼顯示數(shù)字
環(huán)形分配器L297的核心是脈沖分配器,它可以產(chǎn)生三種相序信號,對應于三種不同的工作方式:半步方式,一相激勵方式,兩相激勵方式。它接收來自控制器的信號有: CW/ CCW 正/反轉(zhuǎn)(17腳),HALF/ FULL 半步/基本步距(19腳),STEP 步進脈沖(18腳)。為了在現(xiàn)有硬件基礎上達到最佳的使用效果,步進電機按半步方式運轉(zhuǎn),此時L297的工作時序如圖2所示:


系統(tǒng)選用的功率放大器L298N,是一種H型雙極性驅(qū)動器,D1~D4四個二極管組成橋式續(xù)流回路。使用上述H橋功放,每相繞組必須用一個H橋。L298N為雙H橋高電壓大電流功率集成電路,可用來驅(qū)動繼電器、線圈、直流電動機和步進電動機等電感性負載。L297步進電機控制器與L298N雙H橋驅(qū)動器組成典型的集成步進電機微控制器。其連接電路如圖3所示。其中8個二極管D1~D8為與L298N芯片及步進電動機連接,組成H橋的續(xù)流電路。
四、系統(tǒng)控制的實現(xiàn)
圖4
為了方便控制與編程,按鍵的響應方式采用中斷方式,在有按鍵按下時HD7279將發(fā)出一個低電平信號觸發(fā)中斷,在中斷處理程序中完成對按鍵的響應,給出相應的顯示和控制。程序框圖如右圖示。
按上述方案實現(xiàn)的步進電機轉(zhuǎn)臺控制器,能夠方便地輸入轉(zhuǎn)動角度和轉(zhuǎn)動方向,在轉(zhuǎn)動的同時也能準確指示轉(zhuǎn)過角度和方向,取得了良好的效果。