軟件系統設計 - 基于光學傳感器的智能玩具小車設計
2012年07月04日 11:09 來源:互聯網 作者:秩名 我要評論(0)
軟件系統設計
系統上電后,首先進行初始化,對EMC78P156的寄存器進行設置,使能中斷標志寄存器,等待中斷。圖5是主程序流程圖。
圖5 主程序流程圖
中斷產生時進入中斷處理子程序,首先要關閉中斷標志且保護好現場,然后讀取并解析XYZ坐標值,分成以下幾種情況。
?。?)判斷X軸變化,如果X值在大于14小于等于17時,馬達不左右轉動,然后再判斷Z軸坐標值的變化,如果Z值也在大于14小于等于17時,馬達不前后轉動。
(2)如果X軸坐標值大于17,判斷Z軸坐標,若Z值大于17,則反轉右馬達,之后左右馬達后轉;若Z值小于14,則正轉左馬達,之后左右馬達前轉;否則馬達不轉動。
(3)如果X軸坐標值小于14,判斷Z軸坐標,若Z值大于17,則反轉左馬達,之后左右馬達后轉;若Z值小于14,則正轉右馬達,之后左右馬達前轉;否則馬達不轉動。
中斷處理子程序的流程如圖6所示。
圖6 中斷處理子程序流程
設計技巧
1 傳感器的設計技巧
ET21X111對紅外線的光譜響應最好,但自然光中含有大量的紅外線,所以強烈的自然光會影響傳感器的數據,導致輸出的坐標與實際坐標有較大的偏差,解決方法是加濾光片,但這也只能起到衰減作用,具體應用視情況而定。
2 馬達控制電路設計技巧
設計控制馬達正反轉的電路時要注意:因MCU在上電的時候,I/O的狀態是不確定的,所以程序在一開始就要將Q3、Q4的兩個I/O設成HI(Q3、Q4為PNP管,如果為NPN管則I/O設成LOW),以防止在上電的時候兩個I/O都為LOW,使Q3、Q4導通形成短路。另外需要注意的是在同一時間Q3、Q4只能有一個是導通的。
3 MCU設計技巧
在電刷直流馬達啟動或轉動的時候,會產生很大的電源毛刺。這對MCU的工作非常不利,所以加入此LCπ型濾波電路,如圖7所示。
圖7 濾波電路
4 程序設計技巧
智能小車在運行的過程中,需要一邊讀取傳感器傳過來的坐標數據,一邊控制馬達的PWM輸出。傳感器會每12ms輸出一次坐標資料,所以最好的方式是采用中斷來讀傳感器資料,而在沒有資料輸出的時間做PWM輸出的動作。
本文導航
- 第 1 頁:基于光學傳感器的智能玩具小車設計
- 第 2 頁:軟件系統設計