基于Stm32F101和Atmega8的投影機升降控制設(shè)計
摘 要: 提出了一種基于Atmega8 和Stm32F101 雙處理器的投影機升降控制設(shè)計方案,介紹了其電路組成、功能以及軟件流程。其中Atmega8 負責(zé)數(shù)據(jù)采集,Stm32F101 實現(xiàn)對電機的控制,處理器間通過I2C 總線進行通訊。系統(tǒng)采用了紅外遙控或外部按鍵輸入裝置控制,也可以用PC 機聯(lián)機控制。試驗驗證設(shè)計方案正確、有效,定點精度符合實用要求。
1 引言
投影機升降控制系統(tǒng)由Atmega8 數(shù)據(jù)采集電路、Stm32F101 控制電路、電動機旋轉(zhuǎn)圈數(shù)檢測模塊、紅外遙控接收發(fā)模塊、外部按鍵模塊以及外接抗干擾等電路構(gòu)成。目標是對投影機等多媒體設(shè)備的升降控制。方案中能隨時設(shè)置投影機到達的最高點和最低點的上限值,設(shè)置完畢后無論投影機在哪個位置,當(dāng)按上升鍵時能到達設(shè)置的最高點,按下降鍵時能到達設(shè)置的最低點,按停止鍵時停止運動。采用粗調(diào)與微調(diào)相結(jié)合的操作方式,長按操作鍵3 秒時投影機連續(xù)升或降,松手時停止,主要用于粗調(diào);短按操作鍵時投影機升或降一定距離后自動停止,用于微調(diào)。當(dāng)設(shè)置完后,用保存鍵保存設(shè)置,倘若沒有保存設(shè)置,則設(shè)置點無效。紅外遙控器既可設(shè)置運行參數(shù),也可升降控制。
2 基本控制方法
控制系統(tǒng)的關(guān)鍵在于可以控制投影機升降到任意位置,升降過程是靠電動機實現(xiàn)的,升降的直線距離與電動機旋轉(zhuǎn)圈數(shù)相對應(yīng),實現(xiàn)了對電動機旋轉(zhuǎn)圈數(shù)的控制也就實現(xiàn)了升降直線距離的控制。本方案的技術(shù)突破點在于將精確直線距離控制轉(zhuǎn)化為對電動機旋轉(zhuǎn)圈數(shù)的控制,電動機旋轉(zhuǎn)一圈對應(yīng)升降直線距離一毫米,本方案的直線距離控制準確度為一毫米,即實現(xiàn)對電動機旋轉(zhuǎn)一圈的數(shù)字控制。電動機控制模塊中采用2 個紅外傳感器實現(xiàn)電動機旋轉(zhuǎn)圈數(shù)與旋轉(zhuǎn)方向的采集,由Atmega8 兩根I/O 引腳采集傳感器輸出的信號,引腳的電平組合信號變化狀態(tài)為00,10,11,01(順時針方向)或者00,01,11,10(逆時針方向)。本文利用motor _state 結(jié)構(gòu)體表示電機的狀態(tài),結(jié)構(gòu)體中每個元素的含義如下:
通過結(jié)構(gòu)體前兩個元素值比較可以知道電機是否轉(zhuǎn)動;通過3,4 元素比較可以精確定位投影位置,當(dāng)相等時產(chǎn)生中斷,命令電機停止轉(zhuǎn)動;在后2 個元素中,當(dāng)兩引腳由00 到10 時,motor _ bit _ L 第0位置一,10 到11 時,第1 位置一,11 到01 時,第2 位置一,01 到00 時,第3 位置一,所以當(dāng)?shù)?位全為1 時表示電機逆時針轉(zhuǎn)動一圈,順時針轉(zhuǎn)動一圈則由motor _ bit _ R 表示。
3 控制系統(tǒng)硬件設(shè)計
控制系統(tǒng)總體上分為信號采集與電動機控制兩大部分。
如系統(tǒng)框圖右側(cè)Atmega8 主要用作紅外傳感器信號電平采集,當(dāng)Stm32F101 控制電機升降時,電機圈數(shù)檢測電路會通過紅外傳感器向Atmega8 輸入信號,從而判斷出電機的運行情況。左側(cè)為Stm32F101 控制電機的升降部分。命令可以分別由紅外遙控或者與PC 機聯(lián)機后的按鍵方式輸入。當(dāng)Atmega8 采集紅外傳感器信號電平時,可以通過I2C總線與Stm32F101 傳遞信息,在投影機到達目的點時發(fā)出中斷信號使Stm32F101 產(chǎn)生中斷,處理相關(guān)的操作。圖中所示,通過串口可以方便讀寫2 個E2PROM 的內(nèi)部數(shù)據(jù)。掉電保存模塊采用的是CAT24WC16,即使在運行中突然停電,也能自動保存電機停電時刻的狀態(tài)參數(shù),即保存motor _state結(jié)構(gòu)體變量。
圖1 控制器系統(tǒng)硬件結(jié)構(gòu)圖
3.1 電機圈數(shù)檢測單元
此單元在整個系統(tǒng)中處于重要地位,在電機轉(zhuǎn)軸一端套著半圓鐵片,置于紅外傳感器發(fā)射端和接收端之間,當(dāng)電機轉(zhuǎn)動時鐵片跟著旋轉(zhuǎn)。圈數(shù)檢測單元中有兩個紅外傳感器,其中每個紅外傳感器由發(fā)射端和接收端組成。發(fā)射端和接收端之間被半圓鐵片擋住時輸出信號為低電平0,沒有擋住時輸出信號為高電平1.由于是半圓鐵片,隨著電機的不斷旋轉(zhuǎn),Atmega8兩個引腳接收紅外傳感器信號,不斷循環(huán)地檢測兩引腳的輸入電平。當(dāng)兩引腳的輸入電平?jīng)]有變化時代表電機沒有轉(zhuǎn)動,當(dāng)變化狀態(tài)為00,10,11,01 或者00,01,11,10 時,表明電機轉(zhuǎn)動。狀態(tài)順序反映出電機順時針或者逆時針方向旋轉(zhuǎn)。
3.2 電機控制模塊
圖2 是Stm32F101 對電機控制的硬件原理圖。
圖2 電機控制硬件結(jié)構(gòu)圖。
圖中ULN2803A 是達林頓驅(qū)動器件, 受控于Stm32F101,MOTO_UD,MOTO_ON,SPK 直接與Stm32F101 連接,它們的作用分別是控制電機升降,控制電機工作還是停止,控制蜂鳴器響停。繼電器RL303 工作時,電機工作在220V 交流下,反之則停止工作。而繼電器RL302 常開時,從圖中知道是控制電機升操作,反之常閉是對電機降操作。為了提高電機的安全性,還采取了升降保護,如圖中連接有兩個限位開關(guān),分別是升、降限位保護,即當(dāng)?shù)竭_極限點時限位開關(guān)斷開,導(dǎo)致電機停止工作,起到保護電路的作用。