























摘要:為進一步提高平衡小車的精度、穩定性及運行安全性,研制了一款自動避障雙輪平衡小車,其核心處理器采用STM32F103C8T6芯片,使用MPU6050傳感器采集小車運動過程中的車身姿態,并通過編碼器獲取小車的角度和加速度,然后采用PID算法獲取合適的PWM值作用到電機驅動芯片上,通過控制電機的正反轉以及轉動速度來實現小車運動過程中車身的平衡及轉向。利用超聲波和舵機模塊實現小車的避障功能,使其在遇到障礙物時自主選擇方向,從而實現轉向。通過調試分析表明,該平衡小車能夠在保持平衡移動的基礎上準確感知和避開障礙物。該平衡小車運動靈活、成本低,適合在危險狹小的空間里工作,對促進智能機器人的發展和應用具有重要的意義。
關鍵詞:平衡小車;PID控制;超聲波避障;STM32單片機
中圖分類號:TP242.6 文獻標志碼:A doi:10.3969/j.issn.1006-0316.2024.08.009
文章編號:1006-0316 (2024) 08-0059-07
Development of an Automatic Obstacle Avoidance Double-wheeled Balancing Vehicle
ZHOU Xiaoyuan,ZHOU Hongyan
( School of Intelligent Manufacturing, Nanyang Institute of Technology, Nanyang 473000, China )
Abstract:In order to further improve the accuracy, stability and operation safety of the balancing vehicle, this paper designs and develops an automatic obstacle avoidance double-wheeled balancing vehicle. Taking STM32F103C8T6 chip as the core processor, the MPU6050 sensor is used to collect the body attitude during the vehicle movement. The angle and acceleration of the vehicle are obtained through the encoder. Then the appropriate PWM value obtained by PID algorithm is acted on the motor drive chip. The balance and steering of the body during the vehicle movement can be realized by controlling the forward-reverse rotation and the rotation speed of the motor. In addition, ultrasonic and servo modules are used to realize the obstacle avoidance function of the vehicle, so that it can choose the direction independently when encountering obstacles, and then the steering is achieved. Finally, through debugging and analysis, the results show that the balancing vehicle can accurately perceive and avoid obstacles while keeping balanced movement. The balancing vehicle designed and developed in this paper is more flexible in movement and lower in cost, and it is more suitable for working in dangerous and narrow space. It is of great significance to the development and application of intelligent robot.
Key words:balancing vehicle;PID control;ultrasonic obstacle avoidance;STM32 microcontroller
如今越來越多的平衡小車走進了人們的日常生活中。平衡小車是集機械、數據處理、電子為一體,具有較復雜的非線性系統,是眾多做控制算法的最理想平臺。我國首次出現雙輪平衡車是在2004年,由中國科學技術大學研制,該平衡車通過傾角傳感器、速度傳感器、加速度傳感器等采集信息,并傳到主控芯片中進行處理計算,輸出合適的PWM(Pulse Width Modulation,脈沖寬度調制)波形對小車進行平衡控制[1]。隨后,西安電子科技大學、哈爾濱工業大學等相繼研發出雙輪平衡車。此外,一些大型科技公司,如谷歌、特斯拉等,也在研究和開發智能避障小車[1]。
目前,平衡車仍是機器人領域里最重要的研究課題之一?;赟TM32的兩輪自平衡小車具有功耗低、尺寸小、可靠性高等特點,可以在密閉狹小的空間內工作[2],為智能移動機器人的發展提供技術支持和實踐經驗。
因此,本文研制一種以STM32F103C8T6芯片為主控制器的雙輪平衡小車,利用超聲波測距技術和舵機的轉向功能實現小車的自動避障功能。該小車具有靈活性高、智能化控制、節能、環保、轉彎半徑為零等優點,在狹小空間內進行操作非常方便,從民用、科研以及軍事來看都極具發展潛力。
1 主要研究內容
首先,通過分析小車的平衡原理及避障原理,設計出小車的硬件電路并完成相應元器件的選型,確定小車整體布局。然后,對姿態檢測模塊MPU6050、編碼器、舵機、超聲波等硬件進行原理分析,設計出合理的外圍電路,完成小車的硬件設計。最后,在keil uVision5軟件上編寫相關程序,配合使用PID(Proportional- Integral-Derivative,比例-積分-微分)算法使其實現相關功能,完成小車的控制系統軟件設計,并進行系統調試分析。
1.1 平衡原理
小車平衡控制受力如圖1所示??梢钥闯?,小車站立時當向前傾斜一定角度,小車的車輪會向傾斜的另一側運動。
a為小車運動的加速度;m為小車質量;F為小車受力;
θ為小車傾斜角度。
由圖1推導可得:
(1)
式中:為加速度對應比例系數。
實際中還需加上阻尼力,則:
(2)
式中:為考慮了阻尼力時的小車受力;為阻尼力對應比例系數;為角速度。
進而得:
(3)
式中:為考慮了阻尼力的小車加速度。
即,當平衡小車運動時,其加速度為,且保證>g、>0,就可實現小車的自平衡。
本設計中采用直立閉環控制和速度閉環控制共同構成串極PID控制,如圖2所示。
增量式離散PID一般公式為:
(4)
式中:為PWM增量輸出;為比例項參數;為積分項參數;為微分項參數;為本次偏差;為上一次的偏差;為上上次的偏差。
速度環使用比例與積分控制,需要調節比例項參數和積分項參數來實現控制,且比例控制與積分控制的極性相同[3]。其中,比例控制用于實現快速響應,積分控制用于消除穩態誤差。其增量式離散PID一般公式簡化為:
(5)
把速度環和直立環串聯后,速度環的輸出量為直立環的輸入量,經過系統計算后直立環的輸出量再作用到直流減速電機上,使得平衡小車運動之后產生傾角。對應關系為:
(6)
(7)
式中:為直立環的輸出量,即輸出于小車的PWM;為小車當前的傾角;為速度環的輸出量;為速度環中目標速度與當前速度的偏差;為偏差的積分項;、分別為速度環所采用的比例項參數、積分項參數。
為使平衡小車能夠自主轉向,應在控制系統中加入轉向環,經過轉向環計算后,輸出到電機驅動芯片,來調整左右電機的轉速大小。當兩個電機的轉速不同時,車輛會繞著中心軸線旋轉。控制系統根據障礙物的位置和車輛的運動狀態來計算所需的轉向角度,并相應調整左右輪的轉速,使平衡車能夠繞過障礙物。
1.2 避障原理
小車上的傳感器可以感知周圍環境,然后根據感知到的信息進行決策和控制,從而達到避開障礙物的目的。當超聲波識別到前方有障礙物時,要先調用中斷子程序,從而實現對小車的精確控制以及避障[4]。小車在運動過程中根據超聲波發出與接收的時間差來測量高電平的持續時間,再計算距離[5]為:
(8)
式中:S為小車與障礙物之間的距離;為高電平持續時間;為聲速,取340 m/s。
自動避障雙輪平衡車的避障模塊運行程序框圖如圖3所示。
所設定的檢測距離為20 cm。小車前進過程中,當檢測到前方障礙物與小車的距離小于20 cm時,小車停止運動,并且測量各個角度上小車與障礙物的距離,同時將測量到的數據存到數組中,使用冒泡法對比找出距離障礙物的最大值。然后將采集到的數據傳輸到小車的主控系統,確定自主避障模式。最后電機驅動模塊接收到信號,驅動電機運動,實現相應動作,使平車實現自主避障功能[6]。
1.3 系統方案設計
平衡小車的電路模塊設計分為STM32模塊、電機驅動模塊、超聲波模塊、MPU6050姿態模塊和電源供電模塊。微處理器STM32采集并處理MPU6050和編碼器等傳感器數據,經過系統計算輸出到電機驅動,完成小車的自動平衡和轉向;電機驅動模塊根據STM32F103C8T6芯片輸出的PWM方波來控制直流減速電機;MPU6050模塊檢測小車的角度和加速度,再將數據傳到STM32;電源供電模塊負責為整個控制系統電路提供穩定的電源;超聲波模塊檢測小車與前方障礙物的距離[7]。該系統的總體設計方案如圖4所示。
2 硬件設計
2.1 單片機模塊
小車所用芯片為STM32F103C8T6,該控制器的內核為Cortex-M3,CPU(Central Processing Unit,中央處理器)為32位,其處理速度可達72 MHz。該芯片上具有豐富的外設,且具有性能高、功耗低、成本低等特點,因此非常適合用于平衡小車。
2.2 電機驅動模塊
小車采用TB6612芯片做直流電機的驅動芯片,可以有效避免沖擊電流對電機繞組的影響[8]。用這種芯片做電機驅動,其穩定性高且外圍電路簡單,有利于減小系統尺寸,同時可通過定時器產生4路PWM信號,然后通過設置CCR(Capture Compare Register,捕獲/比較寄存器)的值來控制占空比以控制速度大小。TB6612FNG電路接線圖如圖5所示,其中A和B分別為一組電機的輸入端和輸出端。
2.3 編碼器模塊
編碼器輸出的A、B相方波相位差為90°,因此可以通過相位差判斷電機的正反轉。若A相超前B相90°,則電機正轉;若B相超前A相90°,則電機反轉。具體轉速計算為:
(9)
式中:N為電機轉速;為電源頻率;Z為電機旋轉磁場的極對數;為編碼器脈沖數;為統計時間。
2.4超聲波模塊
超聲波模塊選用HC-SR04,可通過發送超聲波信號并接收回波信號來測量物體與傳感器之間的距離,其震動頻率高于20 kHZ。
超聲波采用的是IO口TRIG觸發測距,也可以接收到回波信號,并根據接收到回波信號的時間差計算出超聲波的傳播時間,然后利用傳播時間計算出小車與障礙物之間的距離。由于超聲波測距的精度受多種因素影響,因此在使用時需要根據具體情況選擇合適的超聲波傳感器,并進行適當的校準和調試。
2.5 舵機模塊
180°舵機采用SG90,使能電壓為3.3 V,SG90的控制需要周期為20 ms的時基脈沖。
舵機與超聲波模塊進行配合以完成避障功能,舵機在0°、45°、90°、135°、180°位置上進行循環轉動,超聲波模塊則檢測各個角度上小車與障礙物之間的距離,當距離小于20 cm,則小車需要避開障礙物。程序指令根據距離值控制電機轉向,使小車完成停止、左轉、右轉等指令,從而使小車避開障礙物。舵機控制要求示意圖如圖6所示。
F為一個脈沖周期,18 ms≤F<20 ms;1 ms≤脈寬≤2 ms;
1 ms為脈沖右轉極限位置,2 ms為脈沖左轉極限位置,
1.5 ms舵機停止轉動。
2.6 姿態測量模塊
姿態傳感器采用MPU6050,可以測量六個物理量(小車在X、Y、Z三個軸上的傾斜程度和三個軸上速度的變化率),其精度高、功耗低,被廣泛應用于自動平衡小車等領域。此外,為滿足實時獲取姿態信息的要求,需要聯合陀螺儀與加速度計共同構成姿態讀取模塊[9]。
2.7 電源供電模塊
使用航模3S電池,其輸出電壓為12 V。系統中,電機、芯片、微控制器需要不同的驅動電壓,因此需經過降壓后輸出3.3 V和5 V的穩定電壓來給系統供電,即還需選用降壓芯片LMS2596。LMS2596是一種高效的降壓穩壓器芯片,能夠將高電壓降低到較低的電壓,同時還能保持輸出電壓的穩定性。電源電路另一側選用芯片AMS1117降壓,再把5 V電壓降壓為穩定的3.3 V電壓給STM32微控制器使用。
3 軟件設計
3.1 平衡車主程序設計
采用STM32F103C8T6作為主控芯片,系統主程序的流程圖如圖7所示。
3.2 電機驅動模塊及編碼器模塊程序設計
電機驅動程序設計主要用于檢測左右電機的轉速。由于電機驅動電壓為12 V,所以需要使用電機驅動芯片TB6612FBG,而單片機用于驅動電機芯片[10]。以右輪電機為例說明AIN1與AIN2驅動電機方向的真值表,如表1所示。
本設計中,編碼器模塊能檢測直流減速電機的速度。所使用的編碼器為雙路編碼器,A相和B相的脈沖信號相差90°,通過檢測A、B相的關系,可以快速確定旋轉方向。該編碼器精度為13線,電機減速比為30。編碼器初始化流程圖如圖8所示。
3.3 超聲波模塊功能實現
所用超聲波模塊型號為HC-SR04,使用時需給觸發引腳一個至少10 μs的脈沖信號,此時模塊發出超聲波,回波引腳由低電平變為高電平,當模塊接收到彈回來的超聲波,則回波引腳從高電平變為低電平。通過測量高電平的持續時間,即可計算出距離[11]。
在中斷中計算出小車與五個方向上的距離,利用冒泡法比較出小車與障礙物距離的最大值是在0~90°內還是在90°~180°內。若在0~90°內,則小車右轉;若在90°~180°內,則小車左轉。
3.4 運動控制算法設計
主要使用PID算法。PID控制是通過對比目標值與當前值得到控制偏差,并對偏差的比例、微分與積分進行控制,使偏差趨向于零的過程[12]。PID公式為:
(10)
式中:為輸出的控制量;為當前值與期望值的偏差。
為方便計算機處理,作離散化處理,得:
(11)
反饋公式為:
(12)
式中:P為計算反饋的PWM信號;為直立環的目標角度,要使小車保持在水平位置,將期望值設置為0;為直立環的當前角度。
為使小車在前進過程中能自主保持平衡,需要加入速度環。本設計使用串極PID控制算法,即速度控制和直立控制共同作用于直流減速電機。PI控制器中要求速度盡量變化緩慢和平穩,所以在速度環中應用了一階低通濾波[13]。一階低通濾波器時域表達式為:
(13)
式中:為濾波系數;n為第n次采樣。
3.5 系統硬件及軟件調試結果分析
平衡小車實物如圖9所示。由于小車運動過程中需要保持平衡,因此小車上模塊的布局應盡量對稱。對上電后的小車進行多次測試,小車上OLED屏幕可顯示相關數據。
行駛過程中,小車會對周圍障礙物進行檢測,從而選擇合適的方向進行左轉或右轉。舵機復位后起始位置在90°方向,檢測到前方有障礙物時,小車停止運動,隨即舵機檢測0°~180°方向上小車與周圍障礙物的距離,并選擇距離最大值的方向轉彎。檢測實物圖如圖10所示。
小車運動過程中,手動前后晃動小車時,MPU6050模塊測得的角度波形如圖11所示。
小車真實運動過程中對測得的角度進行濾波后的波形如圖12所示。可以看出,小車剛開始運動時,MPU6050可以檢測到角度波動,經過濾波算法后,小車能夠保持平衡。
4 結論
為了進一步提高自動避障雙輪平衡小車的精度、穩定性以及運行安全性,研制了一種以STM32F103C8T6芯片為主控制器的自動避障雙輪平衡小車樣機,采用超聲波測距技術使其實現自動避障功能。主要完成了以下工作:
(1)分析了小車的受力情況、平衡原理以及避障原理,確定了控制系統的整體設計方案。
(2)設計系統硬件,以STM32、MPU6050、電機驅動電路和超聲波避障電路作為整個硬件電路的核心。其中超聲波測量小車與障礙物間的距離,MPU6050采集小車傾斜角度。
(3)對小車的各個模塊進行了程序編寫。主要包括姿態傳感器的信息采集與主控制器的通信程序,卡爾曼濾波對采集到的信息進行抗干擾處理程序。主控制器內部使用PID算法,并通過算法計算占空比,進一步輸出PWM波驅動電機程序。
(4)對整個系統進行硬件和軟件調試,結果表明,小車可以平穩運行,并可以自主對前方障礙物做出相應的轉向處理,完成預期目標。
參考文獻:
[1]許亞朝. 兩輪平衡車控制系統的設計與研究[D]. 太原:太原科技大學,2016.
[2]賈樹林,馬雙寶. 基于STM32F429兩輪平衡車的研制[J]. 武漢紡織大學學報,2020,33(5):57-63.
[3]秦新林,陳伯亨. 單片機的應用-STM32智能小車[J]. 農家參謀,2019(19):194.
[4]LIU K,BAI M,NI Y H. Two-wheel self-balanced car based on Kalman filtering and PID algorithm[C]. 2011 IEEE 18th International Conference on Industrial Engineering and Engineering Management,IEEE,2011.
[5]王良成,楊志民,胡聰聰,等. 兩輪自平衡小車的設計與實現[J]. 實驗室科學,2012,15(6):52-55.
[6]龔道燦. 基于STM32的兩輪平衡車設計[J]. 電腦迷,2017(11):161.
[7]鐘科,陳向東. 智能家居服務網關的設計[J]. 通信技術,2012(8):65-67.
[8]任航. 雙輪自平衡車控制[J]. 無線互聯科技,2014(10):149.
[9]魏雅. 基于單片機的兩輪自平衡小車的設計[J]. 計算機與數字工程,2017,45(9):1870-1873.
[10]李帥男. 基于STM32控制的雙輪自平衡小車的設計[J]. 現代工業經濟和信息化,2018,8(13):34-35.
[11]王磊,寧欣. 基STM3的兩輪自平衡小車控制系統設計[J]. 山東工業技術,2018,267(13):54.
[12]李冠奎,秦云翔. 基于STM32的自平衡小車結構和系統設計[J]. 信息與電腦(理論版),2021,33(9):84-86.
[13]李姿景,張具琴,于俊杰,等. 基于單片機的兩輪平衡車設計[J]. 電子測量技術,2020(43):1-5.