盧茹
摘 要:本文提出并研究了對自動行走機器狗在動作上的控制。設計中采用ATMEL公司的AVR系列的ATmegal16單片機作為系統核心部件,并采用9路舵機控制機器狗的動作,從而使機器狗的整個系統設計更加智能化。
關鍵詞:機器狗 單片機 舵機
本課題采用關節型結構,成功地設計了智能機器狗的本體結構。本機器狗具有前后行、平地側行等基本行走功能。所有的關節都用Futaba S3003舵機,主要完成腿部和頭部的擺動,充分利用舵機的特性,使舵機具有大力矩、控制簡單、裝配靈活、相對經濟的特點。機器狗實物圖如圖1所示。
圖1 機器狗實物圖
一、系統硬件結構設計
1.舵機功能模塊設計
機器狗的每一個關節都由一個舵機來擔任,通過單片機產生的PWM波形來控制舵機的角度。由于機器狗有9個自由度,所以機器狗身上有9個舵機。要控制機器狗動起來就必須同時控制9個舵機。由于ATmega16內部集成只有4路PWM輸出,已經不能滿足本系統需求,所以只能通過T0定時器產生20us的溢出中斷配合I/O口,在中斷服務函數中比較產生占空比在2.5%~12.5%范圍內可調的PWM波形輸出,從電動機的控制線輸入就能同時控制9個舵機在-90°~90°范圍內旋轉。由于要同時輸出9路PWM,所以系統采用12MHz外部晶體振蕩器作為時鐘源。
(1)Futaba S3003舵機的簡述。舵機本質上是可定位的微型馬達,即微型伺服馬達。當接收到一個位置指令后,它就會運動到指定的位置。它常用于個人機器人模型的可控運動關節,也常稱這種關節為自由度,并具有大力矩、控制簡單、裝配靈活、相對經濟的特點。
(2)Futaba S3003舵機的控制方式。標準的舵機有三條連接線,分別為電源線、地線、控制線。本舵機的三條線中,紅色為電源線、黑色為地線、白色為控制線。工作電源為4.8~6V。由于舵機在工作中會產生噪聲,所以舵機電源與單片機的電源是相互獨立的。
周期為20ms脈沖信號的正向脈沖寬度與舵機輸出臂位置的關系,如下表所示。
表 周期為20ms脈沖信號的正向脈沖寬度與舵機輸出臂位置的關系
輸入正脈沖寬度 伺服馬達輸出臂位置(。)
t=1.44ms δ=7.2% 0
t=0.89ms δ=4.4% -45
t=2.05ms δ=10% 45
t=0.6ms δ=3% -90
t=2.32ms δ=11.7% 90
2.鍵盤功能模塊設計
本系統需要的按鍵較多,為了減少系統的I/O資源,系統的功能鍵盤設計采用的是4×4矩陣式鍵盤結構。矩陣式鍵盤由行線和列線組成,而按鍵則在行線和列線的交叉處用于連接行線和列線,這樣一個矩陣式鍵盤含有的按鍵個數就等于鍵盤的行數和列數的乘積,只需要8個I/O口就能實現16個按鍵的輸入,這樣就大大減少了系統所需的資源。
鍵盤主要用于機器狗動作的調試,實際運行時要去掉這個模塊。
3.電源功能模塊設計
本系統的電源共有6V、5V、3.3V三種,其中系統6V電源由4節1.5V電池串聯提供,用作舵機的電源輸入。系統的5V電源由7~12V鋰電池通過LM7805穩壓提供,用作控制系統的電源輸入和光電傳感器的電源輸入。系統的3.3V電源由系統的5V電源通過LM1117穩壓提供,用作語音芯片的電源輸入。其中電阻R1和發光二極管DS1組成電源工作指示燈。系統電源設計電路原理圖,如圖2所示。
圖2 系統電源的電路原理圖
二、系統軟件設計
1.舵機驅動程序設計
舵機驅動程序主要完成對9個舵機的控制,通過ATmega16單片機的T0定時器中斷產生20us的中斷計數,當中斷計數到1000時,對計數值進行清零。在中斷服務函數中設定一個比較值,當大于比較值時,輸出電平取反,從而達到0.0%~100%的占空比的可調的脈寬調制波形輸出(PWM)。Futaba S3003舵機的驅動只要占空比在2.5%~12.5%范圍就能控制舵機的位置在-90°~90°范圍。
2.鍵盤掃描程序設計
矩陣式鍵盤的處理方式同非矩陣式鍵盤基本相同,但由于矩陣式鍵盤的每個按鍵并不獨立占一個I/O口,因此它的鍵盤識別采用了行掃描法。
行掃描法的基本原理為:程序首先使鍵盤陳列的一條列線為低電平,如果這條線上沒有鍵被按下,則各行線的電平也都為高;如果列線上有鍵被按下,則相應的行線上的電平變為低電平,這樣根據行線和列線的編號就可得到按鍵的鍵值。
3.機器狗運行程序設計
機器狗運行程序是本系統的核心程序之一。由于機器狗的每一個動作都調過機器狗動作調試程序,機器狗要執行某一個動作時,只需要指定相應的地址調用其中的數據即可。
在程序執行時,先讀取起始地址、結束地址、速度、方向,根據讀取的命令字執行機器狗的動作。機器狗要執行一個向前走的一套動作中就包含了6個動作,運行時先要執行第一個動作,直到完成第一個動作時,再執行下一個動作,以此類推,直到完成了6個動作時,向前走的一套動作才能完成。
4.機器狗動作調試程序設計
機器狗動作調試程序是本系統的一個重要子程序。機器狗在運行時的每一個動作的數據都是通過這一子程序調試得出的。機器狗動作調試子程序把機器狗運行的動作拆分為若干個姿勢,并記錄每一個姿勢的數據,得出數據的好壞直接影響機器狗在運行中動作的靈活性和穩定性。
在程序執行時,先讀取4×4鍵盤的鍵值,同時可以通過按鍵11來控制舵機轉動的方向。當調試好一個動作時,按下按鍵15,單片機通過UART串行發送每一個舵機的數據到計算機。
三、小結
本課題主要是研究智能機器狗在動作上的控制,使其能夠實現簡單的動作功能。本文論述了整個系統的工作原理以及硬件和軟件的設計方法。在實際應用中,基于舵機的特點,機器狗可以更加智能化,將會給人們的生活帶來更多的方便和樂趣。
參考文獻:
[1]易格斯.適用于機器人的關節模塊[J].航空制造技術,2009(18).