基于STC89C52單片機的體操機器人系統設計
3 體操機器人的機械結構設計
體操機器人的機械結構設計主要考慮機器人完成各種體操動作的可行性,例如:完成雙手俯臥撐、單手俯臥撐、側滾翻、前滾翻等動作。由于本機器人不做行走動作,因此在腿部的設計中沒有增加更多自由度。在本體操機器人的結構設計中采用Siemens公司的UG結構模型設計軟件,設計了機器人的全部結構零件。如圖3所示:
仿人型機器人制作完畢后的實物圖如圖4所示:
4 仿人型機器人的控制程序設計
4.1 脈寬差控制算法
多路舵機控制的基本方法是順序輸出各路脈沖給不同舵機,利用單片機高速的處理速度來實現多路控制。但是這一類控制算法對于控制舵機的數目有限制,因為控制舵機所需的PWM波的典型周期是20ms,而每一路舵機所需的最大正脈寬長度為2.5ms,因此最多只能控制8路舵機。本系統中需要控制的舵機有10個,所以選擇了改進的控制算法——脈寬差法。
脈寬差法控制分為以下幾個步驟:
(1) 分組排序。將多路舵機控制數據每8路分為一組,對于每一組數據(控制脈沖長短),按照從小到大的順序排序。
(2) 計算差值。計算舵機控制數據的差值并保存計算每組內相鄰的兩個數據的差值(數值大的數與數值小的數的差)并保存于差值數組中。該差值數組共有8 個存儲單元,第一個單元存放的是該組舵機控制數據的最小值,從第二個單元開始存放舵機控制數據的差值。
(3) 數據轉換。把差值數組中的數據轉換為定時時間(即控制脈沖寬度差值),再繼續(xù)轉換為定時初值并保存于脈寬差數組中。
(4) 舵機控制。控制某一組舵機時,先向該組內所有舵機置高電平(啟動舵機),然后把脈寬差數組中的第一個數據賦值給定時寄存器。定時中斷發(fā)生時,先關斷脈寬差數組中第一個數據所對應的舵機,再向定時寄存器中填入脈寬差數組中的第二個數據。依此類推,就可以完成該組所有舵機的控制。在一個控制周期(20ms)內,依次用定時器定時輸出脈沖控制每組舵機。在第三組舵機控制畢后,繼續(xù)定時用低電平補足其余時間以完成20ms。脈寬差法原理如圖5所示。
評論