摘 要: 為了實現(xiàn)對重物提升的精確控制,,設(shè)計中選擇了以Atmegal6單片機為核心的控制系統(tǒng),。根據(jù)控制要求,提出了實施以單片機主,、從結(jié)構(gòu)的控制方式,。重點介紹了用光電編碼器作為傳感器、對傳感器輸出的脈沖信號進行整形,、鑒相后送入單片機計數(shù)的硬件電路和單片機對計數(shù)脈沖,、設(shè)定位移量進行計算處理的軟件程序,,根據(jù)計算結(jié)果完成相應(yīng)的智能化控制。
關(guān)鍵詞: Atmegal6單片機,; 重物提升,; 光電編碼器; 硬件電路,; 軟件程序
隨著微電子技術(shù)的發(fā)展,,電氣控制方式變得更加靈活多樣,控制精度越來越高,。智能化控制中越來越多地采用了以單片機為核心的控制單元實現(xiàn)設(shè)備的智能化控制。介紹以Atmega16單片機為控制核心,,實現(xiàn)重物提升位移量的精確控制,。
1 重物提升控制系統(tǒng)原理
重物提升控制系統(tǒng)的設(shè)計目的是使用智能化的控制技術(shù),將重物提升到預(yù)定高度,。如圖1所示是系統(tǒng)控制結(jié)構(gòu)圖,,從控制結(jié)構(gòu)圖可以看出,控制系統(tǒng)研究對象是重物的提升和降落,。主要的控制對象是卷揚機,,通過卷揚機的正、反轉(zhuǎn)運動實現(xiàn)控制目標,。
圖中傳感器選用光電編碼器,,光電編碼器的轉(zhuǎn)軸上安裝一個輪,將其固定在導(dǎo)向輪上,,這樣光電編碼器和導(dǎo)向輪同軸旋轉(zhuǎn),,實現(xiàn)光電編碼器轉(zhuǎn)過的角度與導(dǎo)向輪轉(zhuǎn)過的角度相等,重物提升的距離就是導(dǎo)向輪周長和轉(zhuǎn)過總角度的乘積,。設(shè)導(dǎo)向輪的直徑為d,,與其同軸連接的光電編碼器每圈輸出脈沖數(shù)設(shè)為k,那么脈沖當量為:
2 單片機主從結(jié)構(gòu)的控制方式
工程設(shè)計研究對象是控制卷揚機的轉(zhuǎn)動,提升重物到預(yù)定高度,需要在運行前計算出運行的總脈沖數(shù);設(shè)計要求顯示屏能實時顯示重物的高度,,需要在運行中對采集的數(shù)據(jù)實時處理,,計算出移動的距離;還要求對重物高度和導(dǎo)向輪周長進行設(shè)定,,設(shè)定參數(shù)要能夠存儲和讀出,,這就需要帶有存儲功能的智能化器件。Atmega16單片機能夠完成數(shù)據(jù)處理,,內(nèi)含EEPROM存儲區(qū),,在掉電的情況下也能夠保存數(shù)據(jù),內(nèi)含2個外輸入計數(shù)器,能夠?qū)崿F(xiàn)計數(shù)任務(wù),,可以簡化硬件電路,。綜合考慮,,本設(shè)計選擇Atmega16單片機作為核心器件實現(xiàn)任務(wù)要求。為了簡化結(jié)構(gòu),,突出模塊設(shè)計,,采用雙芯片結(jié)構(gòu),以主,、從機模式的設(shè)計方法實現(xiàn)控制要求,。主機單元負責(zé)傳感器信號的處理、人機界面參數(shù)設(shè)定,、實時數(shù)據(jù)處理等工作,。從機單元負責(zé)接收主機所發(fā)信號,響應(yīng)主機決定是否輸出實時的控制指令,。
3 光電編碼器測量位移
光電編碼器是一種通過光電轉(zhuǎn)換將輸出軸上的機械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器,,這是目前高精度控制系統(tǒng)最常用的位移量測量傳感器。光電編碼器由光柵盤和光電檢測裝置組成,,光柵盤是在一定直徑的圓板上等分地開通若干個長方形孔,。原理示意如圖2所示。通過計算光電編碼器輸出脈沖的個數(shù)就能知道當前拖動的位移量,,還可以通過計算每秒光電編碼器輸出脈沖的個數(shù)實現(xiàn)速度測量,。
用光電編碼器測量位移時,不僅要知道位移的大小,還要知道位移的正負方向,,判別方向是成功測量關(guān)鍵?,F(xiàn)在市場上見到的光電編碼器是4線接口或5線接口。4線接口的光電編碼器能輸出A,、B兩路脈沖,,5線接口的能輸出A、B,、Z三路脈沖,。光電編碼器輸出的A、B兩路脈沖在相位上差90°,,正轉(zhuǎn)時A路超前B路90°,,反轉(zhuǎn)時B路超前A路90°。測量中依據(jù)A,、B之間的相位差,,就能夠判別位移的方向符號,通過帶符號的加運算,,可以知道輸出脈沖個數(shù),,計算出位移量。
4 傳感器信號的提取電路設(shè)計
如圖3所示是傳感器信號提取電路,。光電編碼器輸出的信號通過74LS244進行整形后,,輸出理想的A,、B相波形,U3(74LS74)是D觸發(fā)器,,把傳感器輸出整形方波信號的A相輸入D1,B相作為D觸發(fā)器的時鐘信號CK,,U3與U9(7400)共同組成鑒相電路,判斷光電編碼盤是正轉(zhuǎn)還是反轉(zhuǎn),。
當光電編碼器正向旋轉(zhuǎn)時,,通道A輸出波形超前通道B輸出波形90°,D觸發(fā)器輸出Q為高電平,,Q為低電平,,上面U9A與非門關(guān)閉保持高電平,計數(shù)脈沖不能通過U11,;此時,,下面U9B與非門打開,其輸出計數(shù)脈沖D能夠順利通過U12進行傳輸,,如圖4(a)所示。
當光電編碼器逆時針旋轉(zhuǎn)時,,通道A輸出波形比通道B輸出波形滯后90°,,D觸發(fā)器Q輸出為低電平,Q為高電平,,上面U9A與非門打開,,其輸出計數(shù)脈沖C能夠通過U11進行傳輸;此時,,下面U9B與非門關(guān)閉保持高電平,,計數(shù)脈沖不能通過,如圖4(b)所示,。
5 重物提升位移量的計算
Atmega16微處理器內(nèi)包含3個獨立的定時器/計數(shù)器模塊,,其中T/C0、T/C2是8位定時器/計數(shù)器模塊,,T/C1是16位的定時器/計數(shù)器模塊,。硬件設(shè)計中選擇T0、T1作為正反轉(zhuǎn)計數(shù)器,,記錄光電編碼器輸出的正,、負脈沖數(shù)。在軟件設(shè)計中一定要將T0,、T1計數(shù)器進行擴展,,使其有足夠的計數(shù)空間,擴展位移測量范圍,。筆者在設(shè)計軟件時,,將T0,、T1進行擴展,使它們都是長整數(shù)(32位)形式,,利用的就是計數(shù)器滿產(chǎn)生溢出中斷的形式擴展的,。這樣T0計數(shù)256個脈沖產(chǎn)生中斷一次, T1計數(shù)65 536個脈沖產(chǎn)生中斷一次,。
T0,、T1控制寄存器設(shè)置及產(chǎn)生溢出中斷程序為:
…
TCCR0=0x06; //計數(shù)脈沖由T0引腳輸入,下降沿有效。
TCCR1B=0x06; //計數(shù)脈沖由T1引腳輸入,下降沿驅(qū)動
有效,。
…
#pragma interrupt_handler timer1_ovf_isr:9//正計數(shù) 16bits
void timer1_ovf_isr(void){
cnt1++; //32位計數(shù)
}
#pragma interrupt_handler timer0_ovf_isr:10 //負計數(shù)8bits
void timer0_ovf_isr(void){
long c;
cnt0++; //32位計數(shù)
c=(cnt0>>8); //防止cnt0,cnt1溢出
if(c && (cnt1>=c))
{cnt1-=c; //計算計數(shù)差值
cnt0=cnt0&0xff; //只保留低8位
} }
設(shè)計中,,選擇型號為S38-J3V100光電編碼器,輸出編碼是500碼/轉(zhuǎn),,則脈沖當量是πd/500,,當前的位移量就是總脈沖數(shù)與脈沖當量的乘積。軟件計算程序如下:
…
posicnt=(cnt1<<16)|TCNT1; //正脈沖數(shù)
negcnt=(cnt0<<8)|TCNT0; //負脈沖數(shù)
totalcnt =posicnt-negcnt; //產(chǎn)生位移量大的總脈沖數(shù)
curPosi=(totalcnt*(meterCyl*1000+ CentCyl));
curPosi/=PLS_PER_ROUND; //當前的位移量
…
執(zhí)行運行命令,,微處理器就要對設(shè)定的位移量進行計算,,把位移量大小轉(zhuǎn)換成脈沖數(shù)的多少。在運行中進行脈沖數(shù)的比較,,如果相等,,則停止運行,表示已經(jīng)達到目標位置,。軟件計算程序如下:
sysStatus = SYS_RUN;
PosiSet=meterPosi*1000+CentPosi; //毫米計算
cntSet=(PosiSet*PLS_PER_ROUND)/(CentCyl+
meter Cyl*1000);
if(cntSet>totalcnt) Command=CMD_FWD;
//執(zhí)行正轉(zhuǎn)命令
else if(cntSet<totalcnt) Command=CMD_REV;
//執(zhí)行反轉(zhuǎn)命令
else sysStatus=SYS_IDLE; //停止狀態(tài)
本方案設(shè)計的重物提升控制系統(tǒng)在實際運行過程中獲得了良好的動態(tài)性能,控制精確,,智能化程度高。利用光電編碼器作為位移傳感器,能獲取高精度控制信號,。高性價比的Atmega16單片機使成本大大降低,提高了軟件設(shè)計的靈活性,簡化了硬件電路設(shè)計,具有很好的實用價值,。
參考文獻
[1] 李勁松.實軸增量式光電編碼器測量電路的設(shè)計[J].實驗室研究與探索 2007.26(2): 12~14.
[2] Atmel Corporation.ATMEG16 用戶手冊[Z].Atmel Corporation,2002.
[3] Atmega16/Atmega16L Datasheet: 8 b Microcont roller with 128K bytes in 2 System Programmable Flash[Z].
[4] 閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社, 1997.
[5] 沈文,詹衛(wèi)前. AVR單片機C語言開發(fā)入門指導(dǎo)[M]. 北京:清華大學(xué)出版社,2003.
[6] 馬潮,詹衛(wèi)前,耿德根著.ATmega 8原理及應(yīng)用手冊[M]. 清華大學(xué)出版社,1998.