南京師范大學電氣與自動化學院 李彥倫 吳啟宇 吳奕之 沈世斌
智能車以技術先進、功能強大、成本低廉、適用面廣等優(yōu)點,在多個行業(yè)、場合都得到了很好的應用;受道路、環(huán)境等多種因素影響,小車在爬坡、轉彎等環(huán)節(jié)方面還有眾多問題需要研究和解決。本文根據(jù)大學生電子競賽“坡道行駛電動小車”的題目要求,設計了基于MSP430單片機為核心控制器的智能小車,可使小車根據(jù)圖像信息和光電傳感器數(shù)據(jù),由線陣CCD傳感器檢測路徑,自動檢測彎道和終點線,由單片機處理后向舵機輸出PWM波形,實現(xiàn)小車轉向與停止;由編碼器檢測速度并反饋到單片機,經運算后進行速度控制,從而對行駛時間進行設定。通過實驗,小車運行符合預期設想,較好的實現(xiàn)了自動循跡運行等功能,具有較好的實際應用價值。
隨著計算機、電子等技術的迅猛發(fā)展,智能產品的研究與開發(fā)愈發(fā)受到人們的重視,智能化程度越來越高,智能車技術發(fā)展日新月異,在國防軍工、工業(yè)生產、民用生活等領域有著重要的作用。智能小車,即常說的輪式機器人,它以電子技術為背景,綜合了計算機、機械、傳感器等多學科技術,在眾多領域得到了廣泛應用。能夠替代人類在一些特定環(huán)境下工作,例如美國的“勇氣”和“機遇”號火星探測機器人為人類探索火星做出了極大的貢獻;智能車也應用于無人駕駛、自動貨運等場合。
世界各國都高度重視智能車技術的研究,智能車技術也能反映一個國家綜合技術的高低,我國在這方面也作了大量的研究和應用,并取得了相當不錯的成績,其應用正逐步滲入到工業(yè)和生活的各個層面,有利于提高生產效率、提升生活品質、減少人為失誤。
實際應用中,路況、環(huán)境等情況多樣,如坡度不同、轉彎角度不同等,受其影響,小車在此類環(huán)節(jié)方面還有眾多問題需要研究和解決。針對實際路況,開發(fā)自適應、自主循跡運行智能車很有必要,大學生電子競賽“坡道行駛電動小車”的題目正切合了這一主題,本文為此作了一定的嘗試。
大學生電子競賽“坡道行駛電動小車”的題目要求設計制作一個四輪電動小車(含電池小車重量小于1.5kg),要求小車能沿著指定路線在坡道上自動循跡騎線行駛,小車必須獨立運行,車外不能使用任何設備(包括電源),在指定帶彎道、可變坡度的行駛線路上完成精確定點啟/停;同時要求能夠設定行駛時間,并自動控制小車勻速通過一定長度的行駛線路。
本文根據(jù)要求設計并制作了由光學傳感器探測的坡道行駛電動小車。傳感器包括線陣CCD、光電傳感器、編碼器,由線陣CCD傳感器檢測路徑,經由MSP430單片機處理,運用經典PID控制,通過串口傳輸給驅動電路,輸出PWM波,驅動電機運行,實現(xiàn)小車前進與運動,做到循線行駛。根據(jù)圖像信息和光電傳感器數(shù)據(jù),檢測彎道和終點線,由單片機處理后,向舵機輸出PWM波形,實現(xiàn)小車轉向與停止。由編碼器檢測速度并反饋到單片機,運算后進行速度控制,從而對行駛時間進行設定。
循跡小車系統(tǒng)采用MSP430單片機作為控制核心,連接的外圍電路有TPS7333、TPS7350供電電路,TSL1401線陣CCD,ST188漫反射開關,mini1024絕對式編碼器,PWM波控制的S3010舵機、380電機、130電機組成的這樣一個系統(tǒng)。硬件設計的主要部分框圖見圖1所示。
圖1 硬件設計框圖
在完善硬件系統(tǒng)設計后,通過設計軟件框架協(xié)調每個硬件模塊,使其正常工作并實現(xiàn)既定的功能。軟件設計主要包含循跡程序、速度控制程序、時間控制程序、PWM波程序等。
智能循跡小車的硬件系統(tǒng)主要包括以下部分:單片機MSP430、電源模塊、電機驅動模塊、傳感器模塊、電機等。
循跡小車車模整體分為兩大部分,包括后輪驅動模塊和前輪轉向模塊。底板使用亞克力板進行連接。底板需打孔固定其他部件,增加PCB鋼板以增加強度并降低重心。后輪驅動模塊采用3D打印構件,給輪軸、減速齒輪、電機、懸掛編碼器設計合理安裝位置和螺絲過孔;前輪轉向模塊由舵機、連桿組成;舵機采用立式安裝。目前舵機安裝主要有臥式安裝和立式安裝兩種安裝方式,臥式安裝方式會使左右兩邊輪子連桿不等長,易造成舵機對左右兩邊轉向響應時間不一樣,所以使用較少;而立式安裝方式具有負載力矩大,響應區(qū)間廣,控制精度高的特點,故采用此方式。同時對前輪進行外傾和前向處理,以增加輪胎與地面接觸面積,增加穩(wěn)定性。
根據(jù)系統(tǒng)需求,需要配置3.3V、5V、7.2V、12V的直流穩(wěn)壓電源,其中3.3V給編碼器、蜂鳴器供電,5V給線性CCD和光電管供電,7.2V給舵機供電,12V和5V共同給IR2104供電。電池電壓(7.2V)經過一個穩(wěn)壓二極管給舵機供電,且舵機電壓越高,反應越靈敏。每個穩(wěn)壓模塊由一個TPS7333或TPS7350芯片、一個大小為10uf的電容與一個0.1uf的電容組成。
穩(wěn)壓模塊具有過流、過壓、電壓反接保護功能,可以將7.2V的電池電壓穩(wěn)定到3.3V和5V。采用TPS系列穩(wěn)壓芯片可以固定輸出3V、3.3V、5V等電壓,內置集成的精密電源電壓監(jiān)控器可對穩(wěn)壓器的輸出電壓進行監(jiān)控。該芯片低電平有效的復位信號脈沖寬度為200ms,在溫度范圍內固定輸出型器件的誤差范圍為2%,輸出電流最大500mA。電源模塊圖見圖2所示。
圖2 電源模塊圖
本設計采用四輪后驅小車,左后輪單電機驅動,前輪處舵機轉向;右后輪的電機僅輸出恒值PWM波,使電機無法反轉,保證小車在坡道上不下滑。系統(tǒng)選用直流電機,直流電機力量大、調速范圍廣、動態(tài)特性好、傳遞函數(shù)較為簡單,一個電機足以驅動小車運動。舵機具有較高的穩(wěn)定性、控制簡單、扭力大,根據(jù)杠桿原理,將轉向傳動桿連接在加長的輸出盤的末端,可以在舵機輸出較小的轉角下,取得更大的前輪轉角,提高舵機的響應的速度;但缺點是舵機轉角有限,在車長較長、前后輪相距較遠的情況下,轉彎半徑過大;故前后輪距離應盡可能縮短,并在底部加裝PCB板提高車體強度,以減小轉彎半徑。
電機驅動電路設計使用了N溝道MOSFET LR7843和專用柵極驅動芯片IR2104組成的驅動電路。用LR7843 MOS管搭建H橋電路,配合使用IR2104控制MOSFET柵極導通,構成直流電動機可逆雙極型橋式驅動電路。
LR7843導通時最大內阻僅為3.3mΩ,通過電流較大。由于流過電機的電流相對較大,在繪制驅動電路PCB時,通過MOS管的電路會做開窗處理,進行加粗。防止電流過大燒毀。驅動電路原理見圖3所示。
圖3 驅動電路原理圖
單片機P3.5~P3.8給出PWM波,控制電機正轉、反轉與速度變化;P1.9給出PWM波,控制舵機,轉彎時舵機采用PID控制,主要使用以下兩個公式:
(1)err=target-measure(偏差=設定值-實際值)。
(2)out(控制量)=P*err+I*err的累積+D*(err-pre_err)。
在舵機中,err就是攝像頭計算的中線與中線的偏差值,控制量則是舵機引腳的電壓值,也就是舵機打角角度大小。比如都是單純的P(比例)控制,假設target(設定值)不變,measure(實際值)小于target的情況下,舵機的P輸出會使得err逐漸減小,并隨之時間的推移趨近于0,理論上單純的P控制是不會達到target的,然而現(xiàn)實中的系統(tǒng)是個連續(xù)的,但程序上控制是一個差分系統(tǒng)。
舵機會在保持上一個時間的狀態(tài)直到下一個狀態(tài)的輸出,假設小車一開始是直線行駛,但中線在小車右側,那么P輸出會讓舵機向右打角,越接近中線,舵機打角越小直到達到中心線。
直流電動機控制相對比較簡單,對直流電動機而言,只需通過控制其兩條電源線的電壓就能實現(xiàn)對其旋轉方式的控制。對直流電動機的調速也可直接通過調整其工作電壓或者通過調節(jié)PWM波占空比實現(xiàn)。左后輪使用130直流電機驅動。電機轉速可在200rpm至300rpm間穩(wěn)定調節(jié),電機加入壓敏電阻抗干擾電路,可以過濾電機啟動瞬間的尖峰電壓,降低對控制器的電源干擾。配備1 : 48減速齒輪箱,速度控制更加穩(wěn)定,適用于本實驗的低速場景。并且增加1 : 4的傳動齒輪,進一步降低速度,提高控制精度。
右后輪使用380直流電機。電機空載轉速可達15000rpm,最大功率可達20W,動力強勁,在坡上可以提供足夠的動力。缺點是轉速過高,小車速度過快,易導致傳感器誤判丟線。所以僅用于避免反轉,防止滑落。
本實驗采用的傳感器主要包括兩個TSL1401線陣CCD和一個ST188漫反射開關,以及一個mini 1024絕對式編碼器。
TSL1401CL線性傳感器陣列由一個128x1的光電二極管陣列,相關的電荷放大器電路和一個內部的像素數(shù)據(jù)保持功能組成,提供了同時集成起始和停止時間的所有像素。該陣列128PPI,其中一個具有光敏面積3524.3μm2。像素的間距是8μm。操作簡化,內部控制邏輯簡單,只需要一個串行輸入端(SI)的信號和時鐘CLK。兩個CCD的SI分別接單片機P0.8和P3.1,CLK分別接P1.6和P3.7。
兩個CCD并排放置,鏡頭中心相距約1cm。線陣CCD一幀圖像包含128位數(shù)據(jù),每位數(shù)據(jù)是0-4095之間的值,表示當前像素的亮度值,顏色越暗,其像素值越低。首先對數(shù)據(jù)濾波,消除偏離過大的離散數(shù)據(jù)點,得到純凈的CCD數(shù)據(jù)。然后使用大津法動態(tài)計算閾值,進行二值化處理。然后搜索黑白交界線,計算黑色方塊相對于傳感器中心的位置。兩個CCD前后放置,其中一個CCD位于黑塊中間的白塊時,使用另一個CCD的數(shù)據(jù)。兩者均無有效數(shù)據(jù)的情況僅發(fā)生在黑白方塊交替的間隔處,其持續(xù)時間相對于車輛運行速度而言可以忽略,因此延續(xù)上一次計算的黑塊位置,以此獲得連續(xù)的黑塊位置信息,如此,可以做到循線行駛。
ST188漫反射開關由兩個獨立的器件發(fā)光二極管和光敏三極管組成,兩個部件分別相當于反射模塊和接收模塊。ST188光電傳感器循跡原理就是利用不同的顏色對紅外線的反射能力不同,發(fā)光二極管發(fā)出光線,遇到不同顏色的物體,返回來的紅外線光線強弱也不同。光電傳感器接單片機普通IO口,主要用于檢測終點線,既一條寬1cm,長5cm的黑線。
當舵機打角先增大超過閾值,后減小低于閾值,說明小車已經通過90°。之后,開啟終點標志線檢測。當線陣CCD計算出的黑線寬度大于閾值,或位于車身前端的光電傳感器
檢測到黑線,則發(fā)出運行終止信號,進入終止程序。由于線陣CCD位于光電傳感器前方1cm左右,因此線陣CCD檢測到終點標志線時,需要延遲一定時間再停止。兩個傳感器其中任一檢測到終點線,則進入停止程序。
mini 1024絕對式編碼器分辨率高。AB相正交輸出256線、步進+方向輸出512線、絕對式輸出1024線;采用霍爾檢測技術,抗擾性好。此外絕對式編碼器抗抖動性好。增量式編碼器存在抗抖動性差的問題,而絕對式編碼器能夠克服這個問題。
由于路程是固定的,所以可以通過控制車輛速度來控制小車運行時間,根據(jù)設定時間計算出所需速度,然后通過旋轉編碼器數(shù)據(jù)計算得出小車當前速度,然后通過經典增量式PID控制器調整電機PWM值,使小車運行在恒定的速度下,達到定時運行的效果。
本系統(tǒng)軟件設計采用模塊化結構,由循跡程序、速度控制程序、時間控制程序等組成。本文簡要介紹主程序的設計思路,主程序流程圖見圖4所示。
圖4 主程序流程圖
開啟MCU電源,系統(tǒng)各I/O口和外設初始化,隨后進入定時和坡度設置界面,等待開始按鍵按下。按下按鍵后,開啟總中斷。
50ms一次的總中斷分為3個時間片,時間片1讀取線陣ccd、光電管、旋轉編碼器等傳感器的數(shù)值,時間片2進行PID控制計算轉向偏差、速度偏差及電機和舵機PWM輸出。時間片3進行終點線檢測。若檢測到終點線,則立即停車,同時蜂鳴器鳴響1s。
小車實物圖如圖5所示,總共分為6個模塊。1處為線陣CCD模塊,用于檢測路面信息;2處為漫反射開關模塊,用于檢測終點線;3處為舵機模塊,用于小車轉向;4處為編碼器測速模塊,用于檢測小車速度;5處為電機驅動模塊;6處為單片機控制模塊。
圖5 小車實物圖
調試中,在設定不同時間的情況下調整坡道角度下,記錄實際運行時間和小車運行情況,結果如表1所示。
表1 小車運行結果
本文設計并實現(xiàn)了基于MSP430單片機和光電傳感器的智能循跡小車,該系統(tǒng)結構簡單、功耗低、可靠性高,解決了循線行駛的問題,能夠在一定坡度的情況下穩(wěn)定運行,可以手動設定時間,誤差在0.5s以內且能夠勻速行駛。
結束語:智能車正逐步進入我們的生活,對人們的工作、生活產生了極大的影響,不斷改進和完善智能車技術意義重大。本文設計的智能循跡爬坡小車基本實現(xiàn)了預期功能,雖不盡完善,但總體設計方案簡單、運行可靠,具有一定的參考價值,為進一步探索智能車設計和應用提供了一定的研究基礎。