3.1 硬件設計
3.1.1 采樣器設計
為了便于準確的判斷出軌跡的情況,考慮用4個光電采樣器對軌跡進行采樣,4個采樣器的布置如下:
圖中1、2號采樣器負責檢測是否脫離軌跡,3、4號采樣器負責檢測軌跡的交叉。這樣布置的要求是:
- 1、2號采樣器間距小于軌跡寬度,同時要平行;
- 3、4號采樣器間距要大于線寬1.5 - 2 倍,也要平行;
- 同時,前后兩組的采樣平行線間距要小于軌跡寬度。
因為采樣器主要目的是監測軌跡,所以在采樣電路上作了一些處理,以減小環境光的干擾。
采樣器的電路如下:
3.1.2 CPU的選擇
根據設計目標,同時為了簡化系統的硬件,縮小體積,便于封裝在LEGO積木塊中,選用了PHILIP的LPC917 單片機作為處理芯片。
LPC917 具有:
- 4路AD輸入;
- 2路PWM輸出;
- 256字節RAM;
- 2K字節FALSH ROM,支持ICP,更新程序十分方便;
- FLASH ROM還支持IAP,可以作為備份數據存儲;
- 內置上電復位、RC振蕩器,可實現零外部器件工作;
- 2周期高速51內核,彌補了原來51系列單片機慢的缺陷;
- 16腳小體積封裝,只有5 X 6 mm ,便于縮小PCB。
之所以選擇LPC900 系列單片機,首先是因為它是51系列單片機,51系列在國內是一個最普及的單片機品種,涉及51的資源最為豐富,選用51系列為使用者二次開發提供了方便。
其次是LPC900系列速度快,是原來標準51的6倍。
第三是LPC900系列均支持ICP方式編程,而使用USB的ICP下載線成本不高,零售價只有120元,這對于追求小體積而不得不使用表貼器件的用戶來說,應該是個不錯的選擇。ICP方式相對于IAP更可靠一些。
程序下載示意圖:
第四就是LPC900系列的品種比較齊全,對于單一功能性的應用均可以找到合適的規格,我們所選的917就是看中了其4路AD輸入和2路PWM輸出。
3.1.3 電路設計
因為RCX輸入口的電源負載能力有限,為避免不可靠,軌跡傳感器自供電,一方面減少了不確定因素,另一方面可以使用RCX的通用輸入模式,增加輸入的分辨率,RCX的通用輸入數值范圍為 0 - 1024 (10位AD)。
為了減小體積,采用了升壓電路,將一節7號電池的電壓升高到5V,作為傳感器的電源。
所有的功能均由LPC917 完成,使用其4路AD輸入將采樣器的信號轉換為數字值,經內部軟件處理后,根據結果用PWM方式轉換為模擬量輸出給RCX。
因為系統的可靠性、速度要求不高,所以使用了LPC917的內部復位電路和內部的RC振蕩器,工作頻率為7.3MHz。CPU工作無外部器件。
(點擊放大)
電路中設計了一個電源及工作狀態指示燈,用于指示傳感器的工作狀態。
為了實現對采樣器的調試,設計了一個按鍵,控制進入和退出調試。
對于采樣器,為了減小環境光的干擾,每路均增加了一個控制信號。
為了和RCX的輸入匹配,做到無極性連接,輸出經放大后接了全橋整流,雖然損失了一部分信號幅度,但是方便了使用。為減小幅度損失,全橋選用肖特基二極管組成。
處理部分外形:
3.2 軟件設計
3.2.1 資源分配
- 使用LPC917的4路AD輸入對采樣信號進行數值轉換,工作在直接觸發、單次掃描模式;
- 使用Timer0 產生 1ms時基,控制采樣和輸出;
- 使用Timer1 作為 PWM 輸出,產生RCX所要的模擬信號;
- 借用ICP的端口P0.5 作為進入調試模式的控制端。
3.2.2 程序實現的功能
- 4路A/D采樣;
- 計算出模型在軌跡上的位置;
- 輸出模擬量結果;
- 調試功能,實現軌跡判斷值的建立以及光電采樣器的安裝調整;
3.2.3 程序架構
程序分為以下幾個模塊:
☆采樣模塊 —— 實現每 1ms 對4路信號的AD轉換一次,并根據判斷域值換算為邏輯值保存,定義采樣邏輯值為:
在軌跡上為“1”,不在軌跡上為“0”。
☆位置計算模塊 —— 根據轉換后的4個采樣器邏輯值計算出目前的位置信息,并轉換為定義的模擬量。
輸出模擬量定義如下:
輸出的軌跡特征 內部的輸出值 RCX的輸入中值(判斷值)
一共是11種狀態,為了避免信息混亂,所有特殊的軌跡狀態(判斷值小于3,大于7的)均是在走過后輸出,輸出維持 100 ms ,以確保RCX能可靠獲取。
對于偏離軌跡的判斷,如果沒有經過特殊軌跡,偏離后只會維持3或7 輸出,必須糾偏后回到狀態5,才繼續判斷其它狀態。
☆判斷值建立和采樣器安裝調試模塊 —— 為了建立軌跡和背景之間的判斷值和變化方向,需要有一個調試狀態,同時完成對采樣器安裝的調試。
進入調試狀態借用 ICP 口中的P0.5,正常工作時P0.5 浮空(芯片內部上拉),為高電平,對地接一個按鈕,按一下進入調試狀態。在調試狀態下,輸出為采樣器的實際值,可以通過RCX的VIEW功能對采樣器的安裝位置進行調試。
具體操作模式為:第一次按時,進入調試模式,輸出1號采樣值,可根據此值調試采樣器安裝位置,再按依次輸出2、3、4號采樣值,第五次按前將1、2 號采樣器置于軌跡上,3、4置于背景上(軌跡外),輸出的是判斷域值,此時再按下按鈕將保存判斷域值,并返回到工作模式,完成調試過程。
在上述過程中,電源指示的閃爍方式為:在調試1號時,閃一下,滅1秒;調試2號時,閃2下,滅1秒;依次到輸出判斷域值時,閃5下,滅1秒。回到正常工作時連續閃爍。
程序完成紀錄軌跡及背景的采樣值,計算出判斷值以及變化方向,并寫入FLASH中保存,不再次進入調試不會被修改。
采樣在1ms 中斷中完成,建立標志。主程序根據標志啟動計算或調試模塊,輸出對應的結果。
四、使用方法
ROBOLAB 程序:
以上程序只是一個示例,對于特殊軌跡沒有處理,具體應用時可根據需求添加。
上述采樣器的布置方案不是唯一的,可能有更好的模式,我們提供的只是一種思路,希望能起到拋磚引玉的作用。
五、擴展應用
上述模式也可用于其它的應用,如在青少年機器人足球項目中,用于對灰色漸變場地的監測,本采樣器在LEGO 提供的練習紙上測試,最黑處約為180,最亮處約為 920,紅灰測試塊的灰色約為480。而用原配的光感,最黑處約為35,最亮處約為55,紅灰測試塊的灰色約為 44。
我沒有在足球場地紙上試過,但根據這些數據可以初步推論:用于監測足球場地的灰度變化會比原來大有改善,而且,如果使用者有能力用C51編程的話,肯定會使足球水平大有提高。
如果將現在用于監測軌跡的反射采樣器換為檢測紅外球的采樣器,那么用在守門員或進攻機器人上,對找球將會有很大的好處,這樣RCX可以專注于策略。而且,用LEGO參加足球賽的學校也可以體現出水平了,因為傳感器的性能、功能可以根據自己的需要改變,而非統一提供的,大家指標差異有限。