基于電磁四輪小車的距離積分算法
基金項目:無錫學院優秀本科畢業論文(設計)支持計劃,項目編號BSZC2023039
本文引用地址:http://www.ex-cimer.com/article/202308/449337.htm0 引言
智能車輛技術的實現主要依靠車內以計算機系統為主的智能駕駛儀來實現無人駕駛,涵蓋智能控制、模式識別等學科前沿熱點的研究領域,其研究與應用具有巨大的理論和現實意義[1]。智能車輛的研究體現了車輛工程、人工智能、自動控制、計算機等多個學科領域理論技術的交叉和綜合,是未來汽車發展的趨勢[2]。智能小車是智能車輛的微縮模型,具有自動尋跡、尋光、避障等功能[3]。
通過采用先進的電磁感應傳感器技術,智能循跡小車控制系統可以實現精準的轉向,并且可以通過閉環控制實現自動跟蹤,以確保車輛沿著預先設定的路線行駛。本文將深入探討智能循跡小車的硬件、軟件以及控制算法,以期望更好地實現其功能。這個硬件系統由四個部分組成:LQBLEV3M 藍牙模塊、STC16F128K單片機模塊、電機驅動模塊和電感檢測模塊。通過使用電感來檢測路面的電磁狀態,并將測量數據傳輸到STC16F128K單片機,從而實現小車的自動循跡和無線遙控等多種功能。
目前主要的智能車控制算法有,PID 控制[4]、MPC模型預測[5]、LQR 控制[6]等。本文所研究的距離積分算法相較于上述循跡方法實現更加簡單方便,也能夠依靠智能車的實時狀態進行人工的調控,其實驗數據的有效范圍主要依靠編碼器讀取實現,有一定的魯棒性。
1 硬件系統設計
電磁智能小車系統分為五大模塊:主控制器模塊、電源模塊、電磁傳感器模塊、舵機驅動模塊、電機驅動模塊,整個系統的設計框圖如圖1所示。
圖1 系統框圖
1.1 電源模塊
電源模塊是硬件設計中的重要組成部分,它主要是對7.4 V、3 000 mA 蓄電池進行電壓調節。由于各模塊需要的工作電壓和電流不盡相同,所以在實際中我們設計了多種穩壓電路,用來滿足各模塊的實際工作電壓需要。其中7.4 V 電壓給驅動電路供電,3.3 V 電壓給運放、編碼器、藍牙、OLED、電機驅動使能端等供電,5 V電壓給舵機供電。
1.2 電機驅動模塊
驅動電路的主要作用是給小車的驅動電機提供控制和動力,本文采用兩片 BTN7971 組成一個 H 全橋電動機驅動電路,電路圖如圖 2 所示。我們可以改變從主控芯片輸入到 BTN7971 的PWM 的占空比來控制電動機的供電電壓的大小,從而實現了對轉速的控制。
圖2 驅動電路圖
1.3 電磁檢測模塊
電磁檢測模塊的主要作用是通過小車前瞻上的電感檢測賽道上電磁的強弱。將電磁轉換為數字信號再通過軟件算法來實現小車在電磁線上的循跡。
圖3 電感排布方式
1.4 編碼器測速模塊
本文采用的是LQ512線編碼器。這款3相Mini增量式旋轉編碼器具有高精度的旋轉特性, 可以通過3V~5V 的寬電壓輸出旋轉方向和脈沖,從而實現高精度的編碼功能。該編碼器有6 個引腳,分別對應為:
1)電源地;
2)3.3 V~5 V寬電壓;
3)步進脈沖;
4)旋轉方向;
5)機械零位;
6)懸空。
圖4 為輸出信號時序圖,圖5 為編碼器各引腳輸入輸出圖。
圖4 輸出信號時序圖
圖5 編碼器各引腳輸入輸出
2 軟件部分設計方案
2.1 距離積分控制算法
2.1.1 測量并計算單位路程的脈沖數(pulse/m)
下面給出兩種測量方法。
編碼器距離積分是一種用于測量旋轉軸的位置和速度的方法,它通過計算編碼器輸出的脈沖數來換算成實際距離。不同類型的編碼器有不同的脈沖數和換算公式,需要根據編碼器的參數和電機的特性來確定。一般來說,可以通過以下步驟來實現編碼器距離積分:
1)以正常速度將車推出大于1 m 的距離,然后測量出實際距離以及編碼器脈沖積分
2)根據單位距離的脈沖數= 實際距離 / 脈沖積分從而計算出單位距離的脈沖數
3)開電機并記錄開始時間和開始時的脈沖積分
4)在每個采樣周期內讀取當前時間和當前時的脈沖積分
5)根據當前時的脈沖積分減去開始時的脈沖積分,再乘以單位距離的脈沖數,得到當前時刻行駛過的總路程
圖6 預圓環判斷
2.1.2 距離積分在智能車循跡中的直接應用
在環島處我們可以清晰看出在入環區電磁強度大于其他地方,因為會有四根電磁線經過入環區。直接循跡通過強制打角入環成功率低且容易在路肩處發生碰撞。但經過距離積分的處理,入環率會大大提高,入環會顯得更加絲滑。
1)判斷預圓環及第1 段距離積分判斷預圓環然后開始通過編碼器去計路程,當路程達到一個定值之后就通過舵機固定打角,執行入環程序。(注:在編碼器計路程的過程中,為了防止高速情況下因為電感值的變化過大導致舵機小幅度的擺動進而導致車身姿態不穩,可以在這過程中讓差比和的誤差手動置零,讓舵機保持在中值狀態。)
圖7 第一段距離積分
2)環島內2段距離積分
環島內當執行入環程序之時,在圓環里不能一直保持固定打角,所以在入環之后,開啟積分標志位,同時工字電感引導入環,當距離積分數值大于閾值,則代表入環程序結束,執行環內尋跡。這里環內尋跡切換到第2個和5個電感尋跡,因為第一個電感已經在賽道之外了,無法計算出正確的差比和值。
圖8 第二段距離積分
3)出環島第3段距離積分
給定一個電感閾值,其值略小于入環閾值,在識別到后實現出環,由于在接下來相當一段長距離內電感出環采集值的波動不會太大且會和入環閾值重合,為了程序進入入環程序,在識別到出環閾值后,編碼器走一段距離積分,直到小車完全走出圓環再切到正常循跡。直到遠離圓環,最后把圓環標志位、距離積分執行標志位數值置零,等待下一次圓環。
圖9 第三段距離積分
通過多次在賽道上實驗,本文將小車使用距離積分入環和強制打角入環進行了對比。每個算法實驗百次,以成功出環入環為標準,記實驗數成功一次。具體實驗數據如下:
圖10 實驗數據對比圖
實驗過程中發現以強制打角進行圓環處理,小車在出環處容易再次識別入環程序,導致小車難以走出圓環以至于不能完成整個賽道的循跡。而距離積分的使用則大大提高了出圓環的成功率,使小車的完賽率大大提高。
同時小車在出庫時,程序里面運用距離積分可以屏蔽小車在啟停點的檢測,防止多次檢測影響入庫,而且在小車入庫時,距離積分與延時的同時使用能夠讓小車入庫更加穩定。
系統軟件采用C 語言編寫,通過 KEIL 編譯。C 語言被廣泛應用于各種領域,其語言結構緊湊,語言規范,編碼流暢,具有高效率、高精度、高穩定性、高兼容性等優點,并具有良好的可擴展性,可實現匯編語言的各種任務,還支持快速、高效的編碼,支持 KEIL 編譯,支持快速、高效的編輯。因此可以減少程序員對硬件的操作,功能性和可移植性很強。
圖11 圓環距離積分控制流程圖
3 結束語
本文介紹了距離積分在四輪電磁小車中的應用,通過距離積分的應用,電磁小車實現了穩定的出庫及環島的優化處理,在實際的應用中,電磁小車行進速率較之前未使用距離積分時有了明顯提升。
參考文獻:
[1] 張琨,崔勝民,王劍鋒.基于自適應RBF網絡補償的智能車輛循跡控制[J].控制與決策,2014,29(4): 627-631.
[2] 劉源,張文斌,劉雪揚,等.電磁導航智能車檢測和控制系統的研究[J].傳感器與微系統,2012,31(4):63-66.
[3] 程志江,李劍波.基于模糊控制的智能小車控制系統開發[J].計算機應用,2008,28(S2):350-353.
[4] 何文威.基于卡爾曼濾波器和PID控制的逆變器研究與設計[D].廣州:華南理工大學,2013.
[5] 李國勇.智能預測控制及其Matlab實現[M].北京:電子工業出版社,2010:255-268.
[6] 徐明澤,劉清河.基于LQR和PID的智能車軌跡跟蹤控制算法設計與仿真[J].太原理工大學學報,2022,53(5):877-885.
(本文來源于《電子產品世界》雜志2023年7月期)
評論