趙磊

摘要:本文以STM32單片機為核心控制器,以MPU-6050為姿態讀取模塊,實現兩輪自平衡小車的設計,能夠使小車的控制效果得到提高,以電池為電源,設計兩輪自平衡小車的硬件和軟件設計;用卡爾曼濾波算法作為數據的平衡濾波,用PID算法作為控制算法,提高控制精度,從而設計和實現了小車的自平衡。
關鍵詞:STM32;自平衡;卡爾曼濾波;PID
中圖分類號:TP273+.4 文獻標識碼:A 文章編號:1007-9416(2017)01-0035-02
微控制器STM32的內核為Cortex-M3,CPU為32位,存儲器為SRAM,大小為6-64kB。以STM32為基礎,實現對姿態檢驗傳感器等系統各方面數據的控制,能夠使小車的姿態更加合理,控制精度高,控制速度快。
1 基于STM32的兩輪自平衡小車的硬件設計
基于STM32的兩輪自平衡小車的硬件設計包括電源模塊、主控制器模塊、姿態讀取模塊與驅動模塊四個部分。
1.1 電源模塊
電源提供是兩輪自平衡小車行駛的動力支撐。本設計以電池作為電源,為小車的行駛提供能量[1]。小車電機電壓須要12V,擬用3節3.6V的鋰電池作為電源。
控制器STM32和MPU-6050均需要3.3V電壓支撐。本設計以3節鋰電池的12電壓進行降壓供電。采用LM2596-3.3設計降壓穩壓電路。
1.2 主控制器模塊
主控制器為STM32,是ST公司突出的一款微控制器。內核為Cortex-M3,CPU為32位,存儲器為SRAM,6-64 kB。其增強型系列處理速度能達到72MHz,具有高性能,低成本等特點。在上述主控制器的支持下,實現對兩輪自平衡小車的控制,使其能夠在控制下平衡行駛[2]。
1.3 姿態讀取模塊
姿態讀取的目的在于將兩輪自平衡小車的姿態控制在合理的范圍,保證其在控制下能夠平衡行駛。系統以MPU-6050為姿態讀取模塊與STM32內的運動處理器程序相結合。為了保證姿態讀取時實性,將陀螺儀與加速計聯合使用,兩者均選為3軸,共同構成姿態讀取模塊,可以有效提高姿態讀取的實時性。
1.4 電機驅動模塊
電機驅動模塊的功能在于實現驅動。小車采用L298N組成的雙H橋作為電機驅動模塊。對兩輪自平衡小車可以起到良好的自動化控制。為了使電機驅動模塊的功能能夠得到有效發揮,以直流電機作為驅動的來源。
2 基于STM32的兩輪自平衡小車的軟件設計
在硬件設計完成之后,以STM32作為核心控制,實現對兩輪自平衡小車軟件的設計。用卡爾曼濾波算法做姿態數據的平滑濾波;用PID控制算法做控制數據輸出。
2.1 系統初始化
在程序正式開始運行之前,需要完成系統的初始化過程。系統初始化包括的流程如圖1所示。
時鐘初始化:由于主程序的運行過程中,需要判斷定時是否已經達到了5ms,因此系統中需要設置時鐘,且時鐘功能的發揮十分重要。鑒于主程序的上述特點,在系統初始化過程時,需要首先進行時鐘的初始化。
NVIC中斷初始化:為了保證按時中斷的準確性,并使5ms到達之后,能夠實現中斷,并開始讀取MU-6050所采集的小車姿態數據的過程,必須保證將定時中斷初始化。
定時器初始化:該初始化實現的目的同樣在于保證在5ms時間達到時,使定時中斷能夠順利實現,并開始姿態數據讀取過程。
通信初始化:又稱I2C初始化,其功能在于使數據采集能夠有效的實現,并使所采集的數據,能夠被有效傳輸。
測速模塊初始化:為了保證兩輪自平衡小車在被控制的環境下行駛的穩定性與可靠性,提高姿態控制的準確度以及時實性非常重要,而測速模塊的功能,便在于保證上述功能的順利實現。對于小車的行駛與控制非常重要。
MPU-6050初始化:MPU-6050為姿態讀取模塊,初始化的意義在于實現對小車的姿態檢驗。
電機PWM初始化:電機PWM輸出,為系統主程序的最后一個流程,保證電機能實現不同速度的輸出。
2.2 定時中斷設計
基于STM32的兩輪自平衡小車在完成系統的初始化過程后等待定時中斷產生調整姿態的實現流程。
讀取姿態:如果5ms時間已到,則可以直接讀取MU-6050這一姿態控制模塊所采集的小車姿態數據,與此同時,完成電機速度檢測(編碼器)。
數據濾波:在小車姿態數據讀取完成之后,需要利用卡爾曼濾波算法對傳感器數據進行平滑濾波。
PID控制:將數據濾波之后的結果,與電機速度檢測結果相結合,采用PID控制算法,輸出控制數據。
PWM輸出:在計算完成過后,輸出PWM波,控制電機的數度,并再次等待定時中斷。
2.3 卡爾曼濾波算法與PID控制算法
卡爾曼濾波算法的功能在于將陀螺儀與加速度計所采集的數據進行融合,并通過計算,得出其最優值。兩者的各方面數據能夠達到平衡的狀態,使小車在被控制的環境下,實現更加平穩的行駛。因此在動態測量過程中,其數值與實際情況相比,必定存在偏差。采用卡爾曼濾波算法的意義在于充分利用兩者的優勢,得出最優值,消除缺陷。為小車的行駛提供良好環境。與卡爾曼濾波算法的功能相同,PID控制算法的功能同樣在于消除偏差,使控制效果達到最好,使小車姿態更加合理。
2.4 電機控制
電壓大小決定轉速大小,電機控制的意義在于保證其電壓合理,進而使小車的速度能夠得到實時控制。電機輸出模塊輸出兩路PWM信號,分別控制兩個電機的速度。與此同時,通過其他設置,使電機控制得以實現,進而達到提高小車可控制性的目的,這對于小車運行狀態的良好調整具有重要意義。
3 設計結果與分析
以STM32為基礎,以MPU-6050為姿態讀取模塊,實現兩輪自平衡小車的設計,能夠使小車的控制效果得到提高。在做好系統初始化后,利用卡爾曼濾波算法與PID控制算法兩種算法,可以使小車的姿態達到合理化的水平,對于提高小車運行的穩定性具有重大意義。
參考文獻
[1]楊莘,劉海濤.基于STM32的兩輪自平衡小車[J].數字技術與應用,2014,05:151-152.
[2]季鵬飛,朱燕,程傳統,杜曉.基于STM32的兩輪自平衡小車控制系統設計[J].電子科技,2014,11:96-99+105.