李富鋼
(樂山師范學(xué)院 電子與材料工程學(xué)院,四川 樂山 614000)
自行車作為一種交通工具,具有體積小巧、避障靈活、能源利用率高、綠色環(huán)保等特點(diǎn)。在人工智能和5G 物聯(lián)網(wǎng)引領(lǐng)的時(shí)代有較大的應(yīng)用前景。國內(nèi)許多學(xué)者開展了平衡自行的研究和設(shè)計(jì)工作。在黨新安[1]等人提出的以慣性輪系統(tǒng)為物理模型的自平衡自行車方法,通過增加飛輪裝置,利用角動量守恒原理進(jìn)行平衡,使得自行車在靜止情況下完成平衡。由于添加了機(jī)械裝置,使得工程實(shí)現(xiàn)難度增加。王志龍[2]等提出的積分分離算法,系統(tǒng)收斂慢,主動抗擾薄弱。王涵[3]等提出的切換PID 控制算法,能夠完成平衡效果,但控制參數(shù)整定較為復(fù)雜,不同的硬件條件環(huán)境下PID 切換臨界點(diǎn)參數(shù)難以整定。針對自行車平衡控制已有較多研究[4-11],這些研究側(cè)重介紹方法,沒有給出具體的實(shí)現(xiàn)過程。本研究有效地解決了以上問題,同時(shí)引入自動尋跡功能,有助于推動自行車的個(gè)性化,智能化服務(wù)應(yīng)用。在傳統(tǒng)的共享單車應(yīng)用中,需要到指定的地點(diǎn)進(jìn)行騎車,并在指定的地點(diǎn)還車。自平衡自行車可以實(shí)現(xiàn)根據(jù)用戶的定位,自動尋找到用戶。還可以讓自行車自動跟隨人行使。大大提升了自行車服務(wù)效率和服務(wù)質(zhì)量。該平衡自行車的實(shí)現(xiàn)需要解決自行車平衡控制及OPENMV 路徑識別相結(jié)合的控制算法。本文講述了平衡自行車的軟硬件的設(shè)計(jì)原理及實(shí)現(xiàn)方法。系統(tǒng)硬件電路設(shè)計(jì),介紹了STM32最小系統(tǒng),系統(tǒng)電源,驅(qū)動等模塊。軟件設(shè)計(jì)著重介紹數(shù)據(jù)采集及濾波及平衡自行車的平衡控制算法。記錄系統(tǒng)數(shù)據(jù),進(jìn)行PID 參數(shù)的整定和數(shù)據(jù)曲線分析。經(jīng)過反復(fù)的參數(shù)整定,平衡自行車的穩(wěn)定性得到較大的提升,該方案移植到現(xiàn)實(shí)的自行車上同樣適用,下面將對以上內(nèi)容進(jìn)行詳細(xì)的闡述。
硬件系統(tǒng)的構(gòu)成包括電源模塊、MCU 模塊、傳感器模塊、舵機(jī)模塊、電機(jī)驅(qū)動模和速度采集模塊,以及人機(jī)交互模塊。STM32F103 作為控制核心負(fù)責(zé)傳感器數(shù)據(jù)的采集和計(jì)算,同時(shí)對各模塊進(jìn)行控制。舵機(jī)負(fù)責(zé)連接“龍頭”實(shí)現(xiàn)轉(zhuǎn)向,電機(jī)驅(qū)動和數(shù)據(jù)采集實(shí)現(xiàn)自行車的速度閉環(huán)。所有系統(tǒng)控制都在以上硬件平臺上進(jìn)行。在電子元件和模塊選型的過程中需要考慮其芯片性能,運(yùn)行的穩(wěn)定性,以及性價(jià)比。系統(tǒng)控制框圖如圖1 所示。
圖1 控制框
車模設(shè)計(jì)方案,首先通過CAD 構(gòu)圖建模軟件進(jìn)行車模的主體結(jié)構(gòu)進(jìn)行設(shè)計(jì),然后再根據(jù)設(shè)計(jì)參數(shù)購買車架零件進(jìn)行組裝和調(diào)試,在需要用到特殊結(jié)構(gòu)連接件的地方,我們采用3D 打印技術(shù)進(jìn)行機(jī)械上的補(bǔ)短和優(yōu)化。車模設(shè)計(jì)的原則是,整車重量要輕,重心靠后利于轉(zhuǎn)向。車模3D建模如圖2所示。
圖2 車模3D 設(shè)計(jì)
STM32F103 作為計(jì)算和控制的核心,首先利用STM32F103 的SPI 總線接口讀取MPU6050 的姿態(tài)數(shù)據(jù),將獲取的X 軸的角度數(shù)據(jù)和Y 軸的角速度數(shù)據(jù)進(jìn)行數(shù)據(jù)融合,得到一個(gè)穩(wěn)定的角度數(shù)據(jù)。將角度數(shù)據(jù)進(jìn)行PID 算法。輸出控制到舵機(jī)和電機(jī),根據(jù)我們實(shí)際生活中騎自行車的經(jīng)驗(yàn),車往那邊倒,“龍頭”就往那邊偏轉(zhuǎn),同時(shí)給予一定的加速。利用輪子轉(zhuǎn)動的陀螺效應(yīng)以及“龍頭”偏轉(zhuǎn)所帶來的重心調(diào)整,可以閉環(huán)控制自行車轉(zhuǎn)向,并在行駛狀態(tài)下的直立不倒。自行車受力模型 如圖3 所示。
圖3 自行車受力模型
硬件設(shè)計(jì)主要是電路原圖和PCB 電路板的設(shè)計(jì)與制作。在設(shè)計(jì)上需要考慮電路原理的功能和性能參數(shù)。PCB 電路設(shè)計(jì)需要在電路布局和元件擺放過程中考慮信號干擾,及人性化接口等因素。經(jīng)過反復(fù)的優(yōu)化最終完成電路設(shè)計(jì)圖,如圖4所示。
圖4 電路原理設(shè)計(jì)
盡量減小PCB 設(shè)計(jì)板子尺寸,布局緊湊,定位孔與車模匹配,其中MPU6050 模塊的電路盡量放置在板子中心,以便板子安裝到車模上面以后。傳感器正處于車模中心,可以更為準(zhǔn)確的測量車身姿態(tài)數(shù)據(jù),如圖5 所示。
圖5 PCB 效果
電源模塊的設(shè)計(jì),決定著整個(gè)系統(tǒng)運(yùn)行穩(wěn)定性。首先計(jì)算出整個(gè)系統(tǒng)的極限電流。再選擇滿足的DC-DC 穩(wěn)壓芯片,進(jìn)行電源設(shè)計(jì)。由于本系統(tǒng)采用的是7.2V 鋰電池供電,所以采用DC-DC降壓方案。芯片型號為TPS7350 和LM2941。前者主要用于控制系統(tǒng)和傳感器供電,后者為可調(diào)電壓,用于舵機(jī)。如圖6 所示。
圖6 系統(tǒng)電源模塊
自平衡自行車系統(tǒng),是一種欠驅(qū)動,內(nèi)部發(fā)散的不穩(wěn)定系統(tǒng)。對MCU 的數(shù)據(jù)運(yùn)算速度及輸出控制的實(shí)時(shí)響應(yīng)性能,提出了很高的要求。對比市面上應(yīng)用于嵌入式系統(tǒng)的MCU 如樹莓派、TI、英飛凌、STM32 等核心控制器,最終選擇STM32F103。該控制器基于ARM 內(nèi)核架構(gòu),32 位數(shù)據(jù)總線。最高總線頻率可以達(dá)到72 MHZ,內(nèi)部FLASH容量16 k~512 k,擁 有 睡眠、停機(jī)和待機(jī)模式。集成 IIC,UART,SPI,CAN,USB 等通信模式。支持SLINK 以及DAM下載模式,MCU 與姿態(tài)傳感器采用SPI 四線制進(jìn)行傳感器數(shù)據(jù)采集,最高達(dá)到72MHZ 的I/O輸入輸出速率,以及(NVIC) 和處理器內(nèi)核接口緊密配合,可以實(shí)現(xiàn)低延遲的中斷處理和晚到中斷的高效處理,保證了系統(tǒng)的算力及實(shí)時(shí)控制。如圖7 所示。
圖7 STM32 最小系統(tǒng)
自行車搭載OPENMV 模塊進(jìn)行巡線,者指定人物,形狀跟隨行駛。OPENMV 采用圖像識別算法,搭配720P攝像頭,使用PYTHON語言進(jìn)行二次開發(fā)。通過配置和調(diào)用巡線功能,能夠?qū)崟r(shí)進(jìn)行閉環(huán)路徑位置信息反饋。獲取的路徑信息通過UART 接口傳輸給STM32 控制器用于自行車轉(zhuǎn)向控制依據(jù)。該模塊性能穩(wěn)定,易于開發(fā)和移植,已經(jīng)在很多領(lǐng)域進(jìn)行應(yīng)用。OPENMV 實(shí)物圖,如圖8 所示。
圖8 OPENMV 巡線模塊實(shí)物
進(jìn)行驅(qū)動電路設(shè)計(jì)時(shí)需要考慮匹配平衡自行車自重和驅(qū)動電機(jī)的功率。自行車模型重量712 g,匹配380 電機(jī)及減速齒輪組。該電機(jī)最高轉(zhuǎn)速16200轉(zhuǎn)/分,最大功率16 W,最大扭矩82 mN,堵住電流21 A。經(jīng)過計(jì)算,該動力組合足以保障自行車行駛動動力。
驅(qū)動電路的設(shè)計(jì)采用英飛凌的BNT7971。該驅(qū)動芯片內(nèi)部集成MOS 半橋驅(qū)動.驅(qū)動電路的設(shè)計(jì)主要考慮與電機(jī)參數(shù)的匹配,以及系統(tǒng)的供電電壓。該芯片的電源輸入5~18 V,最大工作電流50 A.信號驅(qū)動主要采用10 KHZ 的PWM 信號占空進(jìn)行電機(jī)功率控制。脈沖寬度調(diào)制(PWM),簡稱脈寬調(diào)制,是利用STM32F103 的PMW 模塊輸出來對模擬電路進(jìn)行控制的一種功率控制技術(shù),通過控制固定電壓的直流電源的開關(guān)時(shí)間,從而改變負(fù)載兩端的有效電壓,進(jìn)而達(dá)到控制要求的一種電壓調(diào)整方式。并根據(jù)需要改變一個(gè)周期內(nèi)“接通”和“斷開”的時(shí)間,改變直流電機(jī)電樞上電壓的“占空比”改變平均電壓的大小,從而達(dá)到控制電動機(jī)的轉(zhuǎn)速目的,電路設(shè)計(jì)圖如圖9 所示。
圖9 BTN7971 原理
系統(tǒng)中采用的是MPU6050 姿態(tài)傳感器,該傳感器可以檢測3 軸加速度及3 軸陀螺儀。控制通過IIC 總線方式與MPU6050 進(jìn)行數(shù)據(jù)通信,進(jìn)而讀取姿態(tài)數(shù)據(jù)。通過不通的寄存器設(shè)置,可以讀取數(shù)據(jù)。0x3B,加速度計(jì)的X 軸分量ACC_X,0x3D,加速度計(jì)的Y 軸分量ACC_Y,0x3F,加速度計(jì)的Z 軸分量ACC_Z,0x41,當(dāng)前溫度TEMP,0x43,繞X 軸旋轉(zhuǎn)的角速度GYR_X,0x45,繞Y軸旋轉(zhuǎn)的角速度GYR_Y,0x47,繞Z 軸旋轉(zhuǎn)的角速度GYR_Z,MPU6050 如圖10 所示。
圖10 MPU6050 實(shí)物
舵機(jī)是由齒輪組、電機(jī)、電位器、電機(jī)控制板、殼體組成的一套自動控制系統(tǒng)。通過發(fā)信號,控制輸出軸的旋轉(zhuǎn)角度,進(jìn)而帶動機(jī)械部件進(jìn)行轉(zhuǎn)動。比如機(jī)器人的關(guān)節(jié),航模的機(jī)翼,車模的轉(zhuǎn)向系統(tǒng),如圖11 所示。
圖11 舵機(jī)內(nèi)部結(jié)構(gòu)
控制信號進(jìn)入信號調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為 20 ms,寬度為1.5 ms 的基準(zhǔn)信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。電壓差的正負(fù)輸出到電機(jī)驅(qū)動芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)動時(shí),通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為0 V,電機(jī)停止轉(zhuǎn)動。如圖12 所示。
圖12 舵機(jī)控制信號
根據(jù)舵機(jī)控制的信號要求,首先要對STM32F103 內(nèi)部PWM 模塊進(jìn)行配置,用于輸出周期為20 ms 的PWM 調(diào)制波形,然后再通過對占空比寄存器賦值,改變輸出波形的占空比,達(dá)到控制舵機(jī)角度的目的。
圖13 控制角度與脈沖寬度
將電路板和電池安放在自行車模的后座上。這樣可以減輕轉(zhuǎn)向的阻力。使得方向的調(diào)整很敏捷,同時(shí)需要將陀螺儀的位置盡量安裝在中心,盡量降低重心。上電開機(jī)的時(shí)候首先觀察車模靜態(tài)平衡狀態(tài)下的角度信息,記錄并重新設(shè)置在系統(tǒng)里面。默認(rèn)的舵機(jī)中心值可能沒有使得輪子方向回正??梢酝ㄟ^軟件修改中心值,也可以通過重新安裝擺臂的方式進(jìn)行修正,自行車實(shí)物如圖14 所示。
圖14 車模實(shí)物
整個(gè)系統(tǒng)上電啟動以后,首先進(jìn)行系統(tǒng)初始化,包括IO 初始化,中斷初始化,以及PWM 模塊初始化等,然后從Flash 讀出相應(yīng)的設(shè)置參數(shù),再通過按鍵進(jìn)行設(shè)置更改后并寫入Flash。進(jìn)入主循環(huán)以后,開始讀取MPU6050 的數(shù)據(jù),如果數(shù)據(jù)有效,進(jìn)行濾波,PID 控制,同時(shí)檢查停車。軟件流程圖如圖15 所示。
圖15 軟件流程
MPU6050 獲取角度信息的原理是當(dāng)傳感器發(fā)生傾斜時(shí),重力加速度g 在Z 軸方向形成加速度分量,從而引起該軸輸出電壓變化。變化規(guī)律如式(1)。
當(dāng)傾角比較小的時(shí)候,那么電壓的變化就可以近似與傾角成正比。陀螺儀是利用了旋轉(zhuǎn)坐標(biāo)系中的物體會受到科里奧利力的原理,在器件中利用壓電陶瓷做成振動單元。當(dāng)旋轉(zhuǎn)器件時(shí)會改變振動頻率從而反映出物體旋轉(zhuǎn)的角速度。
加速度計(jì)在運(yùn)動中存在較大的毛刺信號,取瞬時(shí)值計(jì)算傾角誤差比較大。陀螺儀在靜態(tài)的時(shí)候是無法測量角度的,必須在運(yùn)動的過程中,做積分運(yùn)算才能準(zhǔn)確測量角度。那么二者的特性正好可以互補(bǔ)。采用一階互補(bǔ)濾波,也可以理解是加權(quán)平均。即在短時(shí)間內(nèi)相信采用陀螺儀的角度,長時(shí)間相信相信加速計(jì)的角度。使用兩者的數(shù)據(jù)進(jìn)行互補(bǔ)濾波運(yùn)算。也可以理解為加速度計(jì)要濾掉高頻信號,陀螺儀要濾掉低頻信號,然后再相加得到整個(gè)頻帶的信號。
需要注意的是由于陀螺儀是取積分運(yùn)算如果信號存在飄逸和偏差,那么積分所到的角度信息隨時(shí)間的累計(jì)誤差將變大,將無法得到準(zhǔn)確的角度信息。所以需要在啟動濾波器之前對陀螺儀的零偏值進(jìn)行采集,運(yùn)算的時(shí)候減去零偏值。如果陀螺儀靜止情況下本身就為零,就無須在處理,這樣就可以得到準(zhǔn)確的積分角度。互補(bǔ)濾波算法如公式(2):
Wm 為陀螺儀輸入?yún)?shù),acc_angm 為加速度輸入?yún)?shù),K 為加權(quán)系數(shù),Ts 為積分時(shí)間常數(shù),att 為融合角度。經(jīng)過調(diào)試取Ts=0.02、K=0.02 看出濾波后的曲線(紅色)與原始角度曲線(黃線)的跟隨是比較緊密的。同時(shí)也濾掉了其噪聲,保持曲線平滑。
自行車在有一定速度的情況下,車身在行駛的過程中發(fā)生傾斜,為了保持平衡,我們需要往傾斜的方向進(jìn)行轉(zhuǎn)彎,利用加速度將重心調(diào)整回到平衡位置,再將方向回正。在平衡控制程序中,我們使用PD 控制,即比例項(xiàng)和微分項(xiàng)。入口參數(shù)是完成濾波以后的傾角和角速度。如圖16 所示。有了平衡控制只能完成小車的直線行走,并不能再轉(zhuǎn)向控制。這時(shí)我們引入轉(zhuǎn)向閉環(huán)控制。這里使用轉(zhuǎn)向PI 控制,I 量夠幫助在轉(zhuǎn)向過程中對轉(zhuǎn)向偏差的積分進(jìn)而達(dá)到理想的轉(zhuǎn)向角度公式如(3)。以當(dāng)前的傾角作為平衡傾角,重新計(jì)算形成理想的轉(zhuǎn)向角度。最終體現(xiàn)出來的效果就是轉(zhuǎn)向的過程中依然保持平衡,無限循環(huán)轉(zhuǎn)圈而不會摔倒。
圖16 互補(bǔ)濾波曲線
圖17 PID 控制示意
平衡自行車完成搭建和代碼編寫后,需進(jìn)行平衡參數(shù)的調(diào)試。調(diào)試步驟分為平衡參數(shù)調(diào)試和轉(zhuǎn)向參數(shù)調(diào)試。表1 和表2 是調(diào)試參數(shù)的記錄數(shù)據(jù)及現(xiàn)象描述。平衡參數(shù)的調(diào)節(jié)主要是起到響應(yīng)傾斜的控制,幫助快速改變重心。但是無法持續(xù)的維持重心位置。轉(zhuǎn)向參數(shù)的加入可以進(jìn)行累積誤差,起到維持轉(zhuǎn)向過程中的重心位置保持,巡線調(diào)試如圖18 所示。
圖18 自行車彎道巡線視頻連拍
表1 平衡系數(shù)
表2 轉(zhuǎn)向閉環(huán)參數(shù)
最終確定參數(shù):Ban_KP=7.1、Ban_KD=5.6、Velocity_Kp=0.6、Velocity_Ki=0.7
經(jīng)過對自平衡小車的設(shè)計(jì)和制作,最終完成功能實(shí)現(xiàn),完善了系統(tǒng)參數(shù),使小車的整體平衡和巡線效果良好。該系統(tǒng)的設(shè)計(jì)為后續(xù)進(jìn)一步實(shí)現(xiàn)自平衡自行車的廣泛應(yīng)用和拓展提供了一定的技術(shù)參考。但在該系統(tǒng)設(shè)計(jì)中,依然存在一些不足,比如針對不同的機(jī)械構(gòu)造,要調(diào)試出相應(yīng)的一套系統(tǒng)參數(shù)。為該應(yīng)用的量產(chǎn)增加了工作難度。所以后面的研究將針對采用機(jī)器學(xué)習(xí)的方式教會自行車如何自適應(yīng)駕駛并自動校正參數(shù),完成參數(shù)與系統(tǒng)的匹配。