最近幾年國(guó)內(nèi)機(jī)器人開(kāi)始起步發(fā)展,很多高校、中小學(xué)都開(kāi)始進(jìn)行機(jī)器人技術(shù)教學(xué)。小型的機(jī)器人、模塊化的機(jī)器人、組件式的機(jī)器人是教學(xué)機(jī)器人的首選。在這些機(jī)器人產(chǎn)品中,舵機(jī)是很關(guān)鍵,使用較多的部件。根據(jù)控制方式,舵機(jī)應(yīng)該稱為微型伺服馬達(dá)。早期在模型上使用最多,主要用于控制模型的舵面,所以俗稱舵機(jī)。舵機(jī)接受一個(gè)簡(jiǎn)單的控制指令就可以自動(dòng)轉(zhuǎn)動(dòng)到一個(gè)比較精確的角度,所以非常適合在關(guān)節(jié)型機(jī)器人產(chǎn)品使用。
1.舵機(jī)的結(jié)構(gòu)
舵機(jī)簡(jiǎn)單的說(shuō)就是集成了直流電機(jī)、電機(jī)控制器和減速器等,并封裝在一個(gè)便于安裝的外殼里的伺服單元。能夠利用簡(jiǎn)單的輸入信號(hào)比較精確的轉(zhuǎn)動(dòng)給定角度的電機(jī)系統(tǒng)。舵機(jī)安裝了一個(gè)電位器檢測(cè)輸出軸轉(zhuǎn)動(dòng)角度,控制板根據(jù)電位器的信息能比較精確的控制和保持輸出軸的角度。這樣的直流電機(jī)控制方式叫閉環(huán)控制,所以舵機(jī)更準(zhǔn)確的說(shuō)是伺服馬達(dá),英文servo。
舵機(jī)的主體結(jié)構(gòu)如圖所示,主要有幾個(gè)部分:外殼、減速齒輪組、電機(jī)、電位器、控制電路。簡(jiǎn)單的工作原理是控制電路接收信號(hào)源的控制信號(hào),并驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng);齒輪組將電機(jī)的速度成大倍數(shù)縮小,并將電機(jī)的輸出扭矩放大響應(yīng)倍數(shù),然后輸出;電位器和齒輪組的末級(jí)一起轉(zhuǎn)動(dòng),測(cè)量舵機(jī)軸轉(zhuǎn)動(dòng)角度;電路板檢測(cè)并根據(jù)電位器判斷舵機(jī)轉(zhuǎn)動(dòng)角度,然后控制舵機(jī)轉(zhuǎn)動(dòng)到目標(biāo)角度或保持在目標(biāo)角度。舵機(jī)的外殼一般是塑料的,特殊的舵機(jī)可能會(huì)有金屬鋁合金外殼。金屬外殼能夠提供更好的散熱,可以讓舵機(jī)里面的電機(jī)運(yùn)行在更高功率下,以提供更高的扭矩輸出。金屬外殼也可以提供更牢固的固定位置。舵機(jī)的齒輪箱有塑料齒輪、混合齒輪、金屬齒輪的差別。塑料齒輪成本低,噪音小,但強(qiáng)度較低;金屬齒輪強(qiáng)度高,但成本高,在裝配精度一般的情況下會(huì)有很大的噪音。小扭矩舵機(jī)、微舵、扭矩大但功率密度小的舵機(jī)一般都用塑料齒輪,如Futaba3003,輝盛的9g微舵。金屬齒輪一般用于功率密度較高的舵機(jī)上,比如輝盛的MG995舵機(jī),在和3003一樣體積的情況下卻能提供13KG的扭矩。Hitec甚至用鈦合金作為齒輪材料,其高強(qiáng)度能保證3003大小的舵機(jī)能提供20幾公斤的扭矩?;旌淆X輪在金屬齒輪和塑料齒輪間做了折中,在電機(jī)輸出減速箱扭矩不大的部位,用塑料齒輪。
2.舵機(jī)的規(guī)格和選型
舵機(jī)轉(zhuǎn)速
轉(zhuǎn)速由舵機(jī)無(wú)負(fù)載的情況下轉(zhuǎn)過(guò)60°角所需時(shí)間來(lái)衡量,常見(jiàn)舵機(jī)的速度一般在0.11s/60°-0.21s/60°之間。
舵機(jī)扭矩
水果分揀機(jī)器人的結(jié)構(gòu)設(shè)計(jì)舵機(jī)扭矩的單位是KG·CM,這是一個(gè)扭矩單位。可以理解為在舵盤(pán)上距舵機(jī)軸中心水平距離1CM處,舵機(jī)能夠帶動(dòng)的物體重量。
工作電壓
廠商提供的速度、轉(zhuǎn)矩?cái)?shù)據(jù)和測(cè)試電壓有關(guān),在4.8V和6V兩種測(cè)試電壓下這兩個(gè)參數(shù)有比較大的差別。如MG995在4.8V時(shí)速度為0.17秒,在6.0V時(shí)速度為0.13秒。舵機(jī)的工作電壓對(duì)性能有重大的影響,舵機(jī)推薦的電壓一般都是4.8V或6V。當(dāng)然,有的舵機(jī)可以在7V以上工作,比如12V的舵機(jī)也不少。具體更加較高的電壓可以提高電機(jī)的速度和扭矩。選擇舵機(jī)還需要看我們的控制板所能提供的電壓。
尺寸重量和材質(zhì)
舵機(jī)的功率和舵機(jī)的尺寸比值可以理解為該舵機(jī)的功率密度,一般同樣品牌的舵機(jī),功率密度大的價(jià)格高。塑料齒輪的舵機(jī)在超出極限負(fù)荷的條件下使用可能會(huì)崩齒,金屬齒輪的舵機(jī)則可能會(huì)電機(jī)過(guò)熱損毀或外殼變形。所以材質(zhì)的選擇并沒(méi)有絕對(duì)的傾向,關(guān)鍵是將舵機(jī)使用在設(shè)計(jì)規(guī)格之內(nèi)。用戶一般都對(duì)金屬制的物品比較信賴,齒輪箱期望選擇全金屬的,舵盤(pán)期望選擇金屬舵盤(pán)。但需要注意的是,金屬齒輪箱在長(zhǎng)時(shí)間過(guò)載下也不會(huì)損毀,最后卻是電機(jī)過(guò)熱損壞或外殼變形,而這樣的損壞是致命的,不可修復(fù)的。塑料出軸的舵機(jī)如果使用金屬舵盤(pán)是很危險(xiǎn)的,舵盤(pán)和舵機(jī)軸在相互扭轉(zhuǎn)過(guò)程中,金屬舵盤(pán)不會(huì)磨損,舵機(jī)軸會(huì)在一段時(shí)間后變得光禿,導(dǎo)致舵機(jī)完全不能使用。綜上,選擇舵機(jī)需要在計(jì)算自己所需扭矩和速度,并確定使用電壓的條件下,選擇有150%左右甚至更大扭矩富余的舵機(jī)。
3.舵機(jī)的工作原理
上市公司中做分揀機(jī)器人的企業(yè)舵機(jī)是一個(gè)微型的伺服控制系統(tǒng),具體的控制原理可以用下圖表示:
蜘蛛手分揀機(jī)器人產(chǎn)能工作原理是控制電路接收信號(hào)源的控制脈沖,并驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng);齒輪組將電機(jī)的速度成大倍數(shù)縮小,并將電機(jī)的輸出扭矩放大響應(yīng)倍數(shù),然后輸出;電位器和齒輪組的末級(jí)一起轉(zhuǎn)動(dòng),測(cè)量舵機(jī)軸轉(zhuǎn)動(dòng)角度;電路板檢測(cè)并根據(jù)電位器判斷舵機(jī)轉(zhuǎn)動(dòng)角度,然后控制舵機(jī)轉(zhuǎn)動(dòng)到目標(biāo)角度或保持在目標(biāo)角度。模擬舵機(jī)需要一個(gè)外部控制器產(chǎn)生脈寬調(diào)制信號(hào)來(lái)告訴舵機(jī)轉(zhuǎn)動(dòng)角度,脈沖寬度是舵機(jī)控制器所需的編碼信息。舵機(jī)的控制脈沖周期20ms,脈寬從0.5,分別對(duì)應(yīng)-90度到+90度的位置(對(duì)于180°舵機(jī))。
舵機(jī)的控制一般需要一個(gè)20ms的時(shí)基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分。以180度角度舵機(jī)為例,那么對(duì)應(yīng)的控制關(guān)系是這樣的:
分揀機(jī)器人有哪些負(fù)面效應(yīng)視覺(jué)分揀機(jī)器人標(biāo)準(zhǔn)0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0ms-----------135度;2.5ms-----------180度;如下圖所示:
需要解釋的是舵機(jī)原來(lái)主要用在飛機(jī)、汽車、船只模型上,作為方向舵的調(diào)節(jié)和控制裝置。所以,一般的轉(zhuǎn)動(dòng)范圍是45°、60°或者90°,這時(shí)候脈沖寬變一般只有1ms-2ms之間(比如你做一個(gè)遙控小車,用舵機(jī)控制方向,那么舵機(jī)轉(zhuǎn)的角度肯定不是180度,對(duì)吧。因?yàn)槟阋?jiàn)過(guò)你開(kāi)的車方向能轉(zhuǎn)180度嗎?)。而后舵機(jī)開(kāi)始在機(jī)器人上得到大幅度的運(yùn)用,轉(zhuǎn)動(dòng)的角度也在根據(jù)機(jī)器人關(guān)節(jié)的需要增加到-90°至90°之間,甚至還有-135°至135°之間,脈沖寬度也隨之有了變化。對(duì)于機(jī)器人控制而言,我們一般通過(guò)單片機(jī)產(chǎn)生PWM信號(hào)控制舵機(jī)。
4.STM32控制舵機(jī)代碼
0.5ms---------0度0.6ms---------9度0.7ms---------18度0.8ms---------27度0.9ms---------36度1.0ms---------45度1.1ms---------54度1.2ms---------63度1.3ms---------72度1.4ms---------81度1.5ms---------90度1.6ms---------99度1.7ms---------108度1.8ms---------117度1.9ms---------126度2.0ms---------135度2.1ms---------144度2.2ms---------153度2.3ms---------162度2.4ms---------171度2.5ms---------180度|/---|---/|/|/|/--------------------------------------------------------------20ms的時(shí)基脈沖,如果想讓舵機(jī)轉(zhuǎn)63度,就應(yīng)該發(fā)生一個(gè)高電平為1.2ms,周期為20ms的方波,duty=1.2/20=6%,而定時(shí)器自動(dòng)重裝載寄存器arr的值為1000,所以令duty=60,時(shí)占空比才為60/1000=6%.20ms的時(shí)基脈沖,如果想讓舵機(jī)轉(zhuǎn)90度,就應(yīng)該發(fā)生一個(gè)高電平為1.5ms,周期為20ms的方波,duty=1.5/20=7.5%,而定時(shí)器自動(dòng)重裝載寄存器arr的值為1000,所以令duty=75,時(shí)占空比才為75/1000=7.5%.20ms的時(shí)基脈沖,如果想讓舵機(jī)轉(zhuǎn)126度,就應(yīng)該發(fā)生一個(gè)高電平為1.9ms,周期為20ms的方波,duty=1.9/20=9.5%,而定時(shí)器自動(dòng)重裝載寄存器arr的值為1000,所以令duty=95,時(shí)占空比才為95/1000=9.5%.-----------------------------------------------------------------voidSERVO_Init(void){GPIO_InitTypeDefGPIO_InitStruct;TIM_TimeBaseInitTypeDefTIM_TimeStructure;TIM_OCInitTypeDefTIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO__Mode=GPIO_Mode_AF_PP;//配置為復(fù)用推挽輸出GPIO__Pin=GPIO_Pin_7;GPIO__Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStruct);TIM__Period=1000;//1000自動(dòng)重裝載寄存器的值,周期為50000Hz/1000=50Hz,即輸出PWM波形的頻率為20ms。TIM__Prescaler=1440-1;;//1400時(shí)鐘預(yù)分頻系數(shù)為3600,72000000Hz/1400=50000Hz=50KHZ。TIM__ClockDivision=TIM_CKD_DIV1;TIM__CounterMode=TIM_CounterMode_Up;TIM__RepetitionCounter=0;TIM_TimeBaseInit(TIM3,TIM_TimeStructure);TIM_ARRPreloadConfig(TIM3,ENABLE);//使能ARR預(yù)裝載寄存器(影子寄存器)TIM__OCMode=TIM_OCMode_PWM1;TIM__OutputState=TIM_OutputState_Enable;TIM__Pulse=0;//占空比大小TIM__OCPolarity=TIM_OCPolarity_High;TIM_OC2Init(TIM3,TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);TIM_Cmd(TIM3,ENABLE);TIM_CtrlPWMOutputs(TIM3,ENABLE);}//舵機(jī)角度控制voidSERVO_Angle_Control(uint16_tCompare2){TIM_SetCompare2(TIM3,Compare2);//設(shè)置通道2為可變的pwm}
配置號(hào)上面的程序,如果你想讓舵機(jī)旋轉(zhuǎn)90度,只需要在你程序的某個(gè)位置放上這句話就可以了
SERVO_Angle_Control(75);//舵機(jī)旋轉(zhuǎn)90度
原因就是20ms的時(shí)基脈沖,如果想讓舵機(jī)轉(zhuǎn)90度,就應(yīng)該發(fā)生一個(gè)高電平為1.5ms,周期為20ms的方波,duty=1.5/20=7.5%,而定時(shí)器自動(dòng)重裝載寄存器arr的值為1000,所以令duty=75,時(shí)占空比才為75/1000=7.5%。以此類推,你想讓舵機(jī)轉(zhuǎn)多大的角度按照這個(gè)方法設(shè)置就行了。
原文標(biāo)題:STM32驅(qū)動(dòng)舵機(jī)原理和實(shí)現(xiàn)
省分揀機(jī)器人廣州分揀機(jī)器人操作說(shuō)明落地式分揀機(jī)器人