楊風(fēng)健 王永歡
摘 要:為驗(yàn)證角動(dòng)量守恒定律,設(shè)計(jì)完成了單輪自平衡機(jī)器人的軟硬件實(shí)現(xiàn)方案?;诮莿?dòng)量守恒定理,以STM32單片機(jī)為主控制器,通過MPU6050陀螺儀加速度傳感器檢測(cè)機(jī)器人姿態(tài)信息,利用PID算法計(jì)算出PWM驅(qū)動(dòng)電機(jī)的占空比,進(jìn)而驅(qū)動(dòng)直流電機(jī)和無刷電機(jī)轉(zhuǎn)動(dòng)來保持機(jī)器人平衡。實(shí)驗(yàn)表明,本方案可以實(shí)現(xiàn)單輪自平衡機(jī)器人的自啟動(dòng)、站立及行進(jìn)功能。
關(guān)鍵詞:角動(dòng)量守恒;STM32單片機(jī);PID算法;MPU6050*基金項(xiàng)目:吉林省高等教育教學(xué)改革研究課題,項(xiàng)目編號(hào)JLJY202337849316
角動(dòng)量是描述物體轉(zhuǎn)動(dòng)特征的一個(gè)物理量,角動(dòng)量守恒定律是自然界的基本守恒定律之一[1],是大學(xué)物理課程教學(xué)的重點(diǎn)和難點(diǎn)[2]。在日常生活中,經(jīng)常會(huì)遇到質(zhì)點(diǎn)或質(zhì)點(diǎn)系圍繞某一定點(diǎn)或定軸轉(zhuǎn)動(dòng)的情況。例如,地球的自轉(zhuǎn)、飛機(jī)機(jī)翼的轉(zhuǎn)動(dòng)等[3],以往角動(dòng)量守恒多采用陀螺儀實(shí)驗(yàn)進(jìn)行演示,趣味性一般。本文利用角動(dòng)量守恒原理進(jìn)行單輪自平衡機(jī)器人的設(shè)計(jì)與研究,并實(shí)現(xiàn)機(jī)器人的站立與行進(jìn)等操作,可極大提升學(xué)生的學(xué)習(xí)興趣,演示效果更加直觀,并通過機(jī)械結(jié)構(gòu)設(shè)計(jì)、電路設(shè)計(jì)及編程控制等操作,有助于學(xué)生理解其理論實(shí)質(zhì)。
1 角動(dòng)量守恒定律
動(dòng)量是反映質(zhì)點(diǎn)運(yùn)動(dòng)狀態(tài)的物理量,而角動(dòng)量是反映剛體轉(zhuǎn)動(dòng)狀態(tài)的物理量,角動(dòng)量守恒定律是物理學(xué)中一種普遍的定律[4]。在不受外力的作用下,或所受諸外力對(duì)某定點(diǎn)(或定軸)的合外力矩始終等于零的質(zhì)點(diǎn)和質(zhì)點(diǎn)系圍繞該點(diǎn)(或軸)運(yùn)動(dòng)的普遍規(guī)律。質(zhì)點(diǎn)角動(dòng)量圖,如圖1 所示。
2 硬件設(shè)計(jì)
硬件設(shè)計(jì)包括電路設(shè)計(jì)與機(jī)械結(jié)構(gòu)設(shè)計(jì)2 個(gè)部分,電路設(shè)計(jì)部分需要重點(diǎn)考慮電源設(shè)計(jì)及電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)。機(jī)械結(jié)構(gòu)部分根據(jù)電機(jī)與電路的大小進(jìn)行裝配,需要考慮行進(jìn)輪與慣量輪的安裝及位置。
2.1 電路設(shè)計(jì)
電路設(shè)計(jì)部分采用stm32f103c8t6 作為核心控制器,用于系統(tǒng)的整體協(xié)調(diào)控制與PID 算法實(shí)現(xiàn),MPU6050傳感器用于采集當(dāng)前機(jī)器人的角度狀態(tài),OLED12864用于顯示各項(xiàng)指標(biāo)參數(shù),如:車輪轉(zhuǎn)速、電池電量、角速度顯示、角度顯示等信息,電機(jī)驅(qū)動(dòng)電路需要驅(qū)動(dòng)1個(gè)直流電機(jī)和1 個(gè)無刷電機(jī),無刷電機(jī)帶動(dòng)慣量輪轉(zhuǎn)動(dòng),直流電機(jī)帶動(dòng)行進(jìn)輪轉(zhuǎn)動(dòng),電機(jī)的驅(qū)動(dòng)電壓為12 V,該電源由鋰電池直接提供,單片機(jī)及其余電路均在3.3 V電壓下工作,因此需采用DC-DC 變換電路將電壓轉(zhuǎn)換至3.3 V。
2.2 電機(jī)驅(qū)動(dòng)電路
TB6612FNG 芯片能耗相對(duì)較低,具有大電流MOSFET-H 橋結(jié)構(gòu),雙通道電路輸出。系統(tǒng)有兩個(gè)電機(jī),分別是位于上方的無刷電機(jī)和位于下方的直流電機(jī),無刷電機(jī)驅(qū)動(dòng)慣性輪控制機(jī)器人的左右方向平衡,直流電機(jī)驅(qū)動(dòng)行進(jìn)輪控制機(jī)器人的前后方向平衡。具體驅(qū)動(dòng)電路如圖3 所示。
2.3 機(jī)械結(jié)構(gòu)設(shè)計(jì)
機(jī)械結(jié)構(gòu)部分的設(shè)計(jì)主要是各個(gè)器件之間的裝配,需要盡量在重量上保持前后方向和水平方向上的平衡,圖4 為機(jī)器人整體設(shè)計(jì)結(jié)構(gòu)的示意圖,主要由慣量輪、行進(jìn)輪,2 個(gè)電機(jī),電池、以及電路板組成,行進(jìn)輪與慣量輪均與電機(jī)連接,慣量輪的尺寸參數(shù)如圖4 所示。
3 程序設(shè)計(jì)
3.1 軟件總體結(jié)構(gòu)圖
軟件部分包括4 個(gè)部分,分別是姿態(tài)信息采集程序、PID 控制程序、電機(jī)驅(qū)動(dòng)程序、OLED 顯示程序,軟件總體結(jié)構(gòu)圖如圖5 所示。
3.2 機(jī)器人平衡控制原理
如圖6 所示為行進(jìn)輪與慣量輪的PID 控制框圖,結(jié)合框圖說明機(jī)器人保持平衡的原理。行進(jìn)輪用于控制機(jī)器人的俯仰角度,相當(dāng)于一個(gè)倒立擺的模型,最終的目標(biāo)是要保持?jǐn)[桿的角度達(dá)到90°,也就是垂直的狀態(tài),這是理想狀態(tài),實(shí)際上很難達(dá)到,因此需要借助PID控制來實(shí)現(xiàn),通過MPU6050 實(shí)時(shí)采集姿態(tài)信息,結(jié)合PID 算法,驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),進(jìn)而控制行進(jìn)輪轉(zhuǎn)動(dòng),保持?jǐn)[桿角度在90°左右擺動(dòng)。慣量輪用于控制機(jī)器人的橫滾角度,理想狀態(tài)是要達(dá)到慣量輪的轉(zhuǎn)速為0 m/s,也就是慣量輪不轉(zhuǎn)動(dòng),處于動(dòng)量守恒狀態(tài),實(shí)際上很難達(dá)到,需要借助PID 控制不斷修正慣量輪的轉(zhuǎn)速,借助慣量輪旋轉(zhuǎn)的反作用了使機(jī)器人保持平衡[5]。
3.3主程序設(shè)計(jì)
單片機(jī)的主程序流程圖如圖7 所示。STM32 單片機(jī)每5 ms 中斷1 次獲取MPU6050 信息,采集到角速度、加速度信息,再通過PID 算法控制,先計(jì)算出偏差,將采集到的角度信息,計(jì)算傾角偏差,即平衡的角度中值和機(jī)械中值之差,再求偏差的微分,進(jìn)行微分控制,最后計(jì)算出傾角控制的機(jī)PWM 值并進(jìn)行返回。將得到的控制量作用于電機(jī),實(shí)現(xiàn)PID 控制,并不斷循環(huán)往復(fù)。
3.4 PID計(jì)算
位置閉環(huán)控制是根據(jù)電機(jī)的實(shí)時(shí)位置信息與機(jī)械中值做差得到位置偏差,然后對(duì)偏差進(jìn)行比例、積分、微分控制,使偏差趨向于零的過程[6,7]。機(jī)械中值是設(shè)定在平衡狀態(tài)下的一個(gè)值,有前后平衡和左右平衡的機(jī)械中值。利用式(4)計(jì)算PWM 值,derivative 為微分項(xiàng),integral 為積分項(xiàng),error 為誤差。
pwm_ control = Kp * error + Ki * integral + Kd *derivative; (4)
4 系統(tǒng)測(cè)試
設(shè)計(jì)完成的作品實(shí)物如圖8 所示,PID 參數(shù)的具體數(shù)值需要根據(jù)具體的單輪自平衡小車的機(jī)械結(jié)構(gòu)、電路特性以及環(huán)境條件等因素來確定。通常情況下,PID 參數(shù)的調(diào)整需要進(jìn)行一定的試驗(yàn)和優(yōu)化,以達(dá)到最佳的控制效果。比例系數(shù)Kp:根據(jù)經(jīng)驗(yàn)數(shù)據(jù),可以設(shè)置為車身重心高度與車輪半徑之比的2~3 倍。積分系數(shù)Ki:一般可以設(shè)置為Kp 的1/10 或1/20。微分系數(shù)Kd:一般可以設(shè)置為Kp 的1/5 或1/10。