時間:2007-11-15 17:01:00來源:caojing
舵機控制器是機器人的重要部件。采用一種新穎的利用單片機產生多路控制舵機用PWM的方法,利用單片機內部定時器,分時復用技術,在不增加任何硬件電路的前提下,用單片機實現(xiàn)多達24路PWM輸出。該方法取代了傳統(tǒng)的使用分立元件產生PWM波的方法,大大減少了分立元器件數(shù)目及電路連線,改善了系統(tǒng)可靠性,提高了控制精度,并成功用在17自由度仿人機器人的控制系統(tǒng)中。
1 前言
小型仿人機器人由于控制結構簡單,擴展性好,在仿人機器人研究和其他領域正在得到廣泛的重視和應用。舵機是小型仿人機器人常用的輸出執(zhí)行機構。它接收一定的控制信號,輸出相應的角度。
2 舵機的構造和控制方法
從圖1可以看出,舵機主要是由外殼、一個小型直流電機、一組減速齒輪、一個用于檢測轉角位置的檢測電位器和一塊控制電路板組成。其中,高速轉動的直流電動機提供了原始動力,經過減速齒輪組減速后,通過輸出軸對外提供轉距,齒輪組的減速比越大,舵機的輸出力矩也越大。 標準的舵機有3條導線,分別是:電源線、地線、控制線,如圖2所示。電源線和地線用于提供舵機內部的直流電機和控制線路所需的能源,電壓通常介于4~7.2 V,控制線的輸入是一個寬度可調的周期性方波脈沖信號。當方波的脈沖寬度改變時,舵機的角度發(fā)生改變,角度變化與脈沖寬度的變化成正比。機器人用的舵機型號是GM995,其輸出軸轉角與輸入信號的脈沖寬度之間的關系可用圖3來表示。
舵機標稱方波脈沖信號的周期為20ms,事實上舵機角度控制對信號的周期要求很寬松18~20ms均可,實驗中發(fā)現(xiàn),在周期為40ms時舵機仍然能夠穩(wěn)定工作。
3 舵機控制器的設計
舵機的控制信號實質是一個脈沖寬度調制信號(PWM)??捎蒄PGA、模擬電路或單片機來產生。采用FPGA或CPLD產生PWM波已經在很多重要的場合得到應用,依靠FPGA或CPLD特有的并行處理能力和大量的I/O接口,可以同時控制幾十甚至上百個舵機同時工作,這種方法可靠、控制精度高,但是FPGA/CPLD用于產生PWM波時,并不具備事務處理能力,實際中還需要MCU協(xié)同工作,所以成本較高,適合于重要場合。用模擬電路實現(xiàn)較復雜,不適合多路輸出,同時產生的脈沖頻率和寬度往往不是很準確,很難做到對舵機的精確控制。由于單片機具有性能穩(wěn)定、編程靈活、精度較高、價格低廉等特點,一般采用單片機作為舵機控制器。
最直接的方法就是用單片機本身所帶的PWM口產生波形,但該方法受到MCU內部資源的限制,僅能實現(xiàn)2~6路PWM的輸出,不適合需要空控制多路舵機的場合。文獻《機器人的創(chuàng)意設計與實踐》給出一種利用555振蕩器產生的脈沖信號進行計數(shù)來產生PWM信號的方法。文獻《基于AT89C2051的多路舵機控制器設計》給出一種利用定時器中斷來產生PWM波信號的方法。文獻《用單片機產程7路舵機控制PWM波的方法》分時復用的思想,用單片機產生了7路舵機控制PWM信號,其控制脈沖的周期為14590,控制脈寬為1200~1800,將一個周期均勻劃分為7份,在每一個時段控制其中一路輸出。缺點占用MCU的許多計算時間,優(yōu)點是換了控制的高精度。
3.1 舵機控制器硬件電路設計
本文綜合以上方案,采用分時復用技術,將一個PWM信號周期(20ms)分成8個時段,每一個時段并行產生3路PWM信號,則一共可以產生24路PWM信號,并且在以PIC16F877A單片機為核心控制器,晶振頻率為20M的條件下,所產生的PWM信號控制舵機的最大誤差<1°。
圖4為舵機控制器的原理圖。該系統(tǒng)是一個典型的集中式控制方式,單片機作為控制的核心部分,完成與上位機通訊,實現(xiàn)對機器人的智能控制;通過IIC總線與EEPROM(24C512)進行數(shù)據存取操作實現(xiàn)讀寫仿人機器人的行為數(shù)據;產生24路PWM信號控制舵機;檢測機器人的電池電壓以及通過LED顯示機器人的工作狀態(tài)。
需要注意的是,舵機在工作的時候會吸入較大電流,多路舵機同時工作時對電源電壓造成的波動很大,而舵機的信號電平最好是不要抖動的,因此圖4中采用穩(wěn)壓電路對電源Vs進行穩(wěn)壓,否則,實驗中發(fā)現(xiàn)個別舵機偶爾會產生振蕩。
3.2 實現(xiàn)多路PWM信號及舵機調速原理
本文以MICROCHIP公司生產的增強型RISC內載Flash的高性能8位單片機PIC16F877A為主控芯片,晶振頻率取值20MHz,則單片機每條指令執(zhí)行時間為200ns。從圖3可以看出,舵機角度變化一度時,脈寬改變?yōu)?000/180°=11.1/°,單片機能執(zhí)行11.1/0.2/條≈55條指令,但是用C語言很難實現(xiàn)在55條指令內一次比較判斷完24路舵機的PWM信號。
多路PWM信號產生的機理如圖5所示。為了產生精確的時間信號,占用了一個16位硬件計數(shù)器,計數(shù)基準設為200ns,同時用24個16位匹配寄存器保存每一路PWM信號的計數(shù)匹配值,該匹配值正比于舵機的期望角度。24路PWM信號分為8組,每組3路進行分時控制。程序開始時,將第一組PWM信號相應的引腳全置高電平,并且將計數(shù)器清零。然后不斷查詢計數(shù)器的值是否與大于或等于匹配寄存器的值,若是的話,將該路PWM信號的引腳置為低電平。每一組PWM信號占用的時隙均為2.5ms(不足2.5ms的延時到2.5ms),這樣保證每一路PWM信號的周期。
這種分時控制的方法的最大有點是保證每一路PWM信號的時間誤差最小,且不會產生波形的抖動,對于處理速度不是很快的單片機,如MSC-51系列和PIC的中檔系列單片機也能產生精確的多路PWM波形;缺點是占用CPU的資源較多,需要一定編程技巧對系統(tǒng)的其他任務進行處理,使得能夠在0.5ms~1ms內完成。而事實上,對于PIC16F877A單片機在20M的系統(tǒng)時鐘下,1ms內能執(zhí)行5000條單周期指令,足以處理很多系統(tǒng)的事務,而且上文已經證實PWM的周期可以大于20ms。
4 軟件設計
圖6給出了多路PWM信號的發(fā)生流程圖。PA、PB、PC、PD、PE的24個端口均為PWM輸出端口,16位定時器1用來和每組的3路PWM信號匹配寄存器進行比較,基準為200nS。
設PIC16F877A的系統(tǒng)時鐘頻率為f,計數(shù)器對系統(tǒng)時鐘的分頻比為PS,PWM信號的高電平最長時間為Th,對應的最大角度為Amax,則可以的出比例系數(shù):
則對于角度Ad,對應的比較寄存器的數(shù)值為:
舵機是一個位置伺服系統(tǒng),可以對轉角進行精確控制,事實上還可以用通過軟件生成速度的梯形圖,對舵機轉動的角速度進行控制。該仿人機器人的行為數(shù)據由一組組的“關鍵幀”數(shù)據組成,要求控制各個關節(jié)的舵機必須在同一時刻到達行為數(shù)據設定的角度,所以對舵機的速度控制提出了比較高的要求。
由于比較寄存器的數(shù)值T正比于PWM波的高電平時間,即脈寬。舵機的角度從0度變化到180度,則T的值也應由小變大,因此改變T變化的步進量,則可以改變舵機轉動的速度。
假設舵機的目標角度從Ad變化到Ad’,則對應的比較寄存器的數(shù)值也從T變化到T’, 程序以PWM的周期,即20ms為一個控制周期,并且以步進量Inc遞增或遞減比較寄存器的數(shù)值,從而控制PWM波的脈寬,因此改變步進量Inc的大小,就改變了舵機轉動速度的快慢。即
(3)式中,Inc為步進量,取值從1到255,即舵機的速度有1到255個等級。步進量越大, 需要的控制周期N越小,則在更少的時間內舵機轉到期望的角度。
5 結束語
本文成功實現(xiàn)了24路舵機用PWM波的產生,不僅控制精度高,而且實現(xiàn)了對舵機速度的控制。該控制器應用在17自由度小型人形機器人上,達到較好的控制效果,并且具有很好的通用性。
標簽:
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.surachana.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯(lián)網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-04-30
性能躍升20%!維宏NK300CX Plus數(shù)控系統(tǒng)...
2025-04-11
2025-04-08
2025-03-31
應用案例 | 使用宏集TELE監(jiān)控繼電器監(jiān)控...
2025-03-26
2025-03-20