軟件系統(tǒng)設(shè)計(jì) - 基于光學(xué)傳感器的智能玩具小車設(shè)計(jì)

2012年07月04日 11:09 來源:互聯(lián)網(wǎng) 作者:秩名 我要評(píng)論(0)

  軟件系統(tǒng)設(shè)計(jì)

  系統(tǒng)上電后,首先進(jìn)行初始化,對(duì)EMC78P156的寄存器進(jìn)行設(shè)置,使能中斷標(biāo)志寄存器,等待中斷。圖5是主程序流程圖。

  

  圖5 主程序流程圖

  中斷產(chǎn)生時(shí)進(jìn)入中斷處理子程序,首先要關(guān)閉中斷標(biāo)志且保護(hù)好現(xiàn)場(chǎng),然后讀取并解析XYZ坐標(biāo)值,分成以下幾種情況。

  (1)判斷X軸變化,如果X值在大于14小于等于17時(shí),馬達(dá)不左右轉(zhuǎn)動(dòng),然后再判斷Z軸坐標(biāo)值的變化,如果Z值也在大于14小于等于17時(shí),馬達(dá)不前后轉(zhuǎn)動(dòng)。

  (2)如果X軸坐標(biāo)值大于17,判斷Z軸坐標(biāo),若Z值大于17,則反轉(zhuǎn)右馬達(dá),之后左右馬達(dá)后轉(zhuǎn);若Z值小于14,則正轉(zhuǎn)左馬達(dá),之后左右馬達(dá)前轉(zhuǎn);否則馬達(dá)不轉(zhuǎn)動(dòng)。

  (3)如果X軸坐標(biāo)值小于14,判斷Z軸坐標(biāo),若Z值大于17,則反轉(zhuǎn)左馬達(dá),之后左右馬達(dá)后轉(zhuǎn);若Z值小于14,則正轉(zhuǎn)右馬達(dá),之后左右馬達(dá)前轉(zhuǎn);否則馬達(dá)不轉(zhuǎn)動(dòng)。

  中斷處理子程序的流程如圖6所示。

  

  圖6 中斷處理子程序流程

  設(shè)計(jì)技巧

  1 傳感器的設(shè)計(jì)技巧

  ET21X111對(duì)紅外線的光譜響應(yīng)最好,但自然光中含有大量的紅外線,所以強(qiáng)烈的自然光會(huì)影響傳感器的數(shù)據(jù),導(dǎo)致輸出的坐標(biāo)與實(shí)際坐標(biāo)有較大的偏差,解決方法是加濾光片,但這也只能起到衰減作用,具體應(yīng)用視情況而定。

  2 馬達(dá)控制電路設(shè)計(jì)技巧

  設(shè)計(jì)控制馬達(dá)正反轉(zhuǎn)的電路時(shí)要注意:因MCU在上電的時(shí)候,I/O的狀態(tài)是不確定的,所以程序在一開始就要將Q3、Q4的兩個(gè)I/O設(shè)成HI(Q3、Q4為PNP管,如果為NPN管則I/O設(shè)成LOW),以防止在上電的時(shí)候兩個(gè)I/O都為L(zhǎng)OW,使Q3、Q4導(dǎo)通形成短路。另外需要注意的是在同一時(shí)間Q3、Q4只能有一個(gè)是導(dǎo)通的。

  3 MCU設(shè)計(jì)技巧

  在電刷直流馬達(dá)啟動(dòng)或轉(zhuǎn)動(dòng)的時(shí)候,會(huì)產(chǎn)生很大的電源毛刺。這對(duì)MCU的工作非常不利,所以加入此LCπ型濾波電路,如圖7所示。

  

  圖7 濾波電路

  4 程序設(shè)計(jì)技巧

  智能小車在運(yùn)行的過程中,需要一邊讀取傳感器傳過來的坐標(biāo)數(shù)據(jù),一邊控制馬達(dá)的PWM輸出。傳感器會(huì)每12ms輸出一次坐標(biāo)資料,所以最好的方式是采用中斷來讀傳感器資料,而在沒有資料輸出的時(shí)間做PWM輸出的動(dòng)作。

上一頁(yè)12

本文導(dǎo)航