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