張偉偉 丁宇豪
摘 要
本設(shè)計(jì)以安徽省機(jī)器人競(jìng)賽為背景,采用STM32單片機(jī)為核心微處理器。本設(shè)計(jì)采用模塊化的設(shè)計(jì)方法,對(duì)應(yīng)用于接力賽的智能小車軟件部分進(jìn)行設(shè)計(jì),主要設(shè)計(jì)內(nèi)容包括:信息采集模塊,尋跡模塊,接力模塊,電機(jī)驅(qū)動(dòng)模塊以及控制算法的設(shè)計(jì)。在實(shí)際比賽過(guò)程中,智能小車能夠自動(dòng)適應(yīng)直道、彎道、接力區(qū)、停止區(qū)等各種路況。通過(guò)PID算法實(shí)現(xiàn)智能變速,在實(shí)際行駛過(guò)程中的行進(jìn)速度達(dá)到1.2m/s,達(dá)到智能小車接力賽的設(shè)計(jì)目標(biāo)和要求。
關(guān)鍵詞
智能小車;單片機(jī);PID;STM32
中圖分類號(hào): TP242 ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.19694/j.cnki.issn2095-2457.2020.07.052
0 引言
智能小車是機(jī)器人的一個(gè)分支,是一項(xiàng)涉及到計(jì)算機(jī)技術(shù)、傳感器技術(shù)、自動(dòng)控制技術(shù)、通信技術(shù)、人工智能技術(shù)等相關(guān)技術(shù)的綜合性系統(tǒng)。它是輪式機(jī)器人的一種,很適合在人類無(wú)法生存的環(huán)境下工作。本課題 “應(yīng)用于接力賽的智能小車軟件部分設(shè)計(jì)”,是針對(duì)于“恩智浦智能車大賽”的要求所設(shè)計(jì)的軟件系統(tǒng),希望在比賽之外它也可以用于眾多領(lǐng)域解決現(xiàn)實(shí)問(wèn)題。
1 本課題研究的內(nèi)容
本設(shè)計(jì)所述的智能車是一種循跡小車,能夠在一定的區(qū)域內(nèi)沿著給定的軌跡自動(dòng)行駛(采用與白色地毯相反的黑色引導(dǎo)線作為行駛軌跡),運(yùn)行過(guò)程由信息采集模塊、循跡控制模塊和電機(jī)控制模塊三個(gè)部分完成。此外,還需要完成兩輛小車之間的接力棒傳遞過(guò)程。小車的硬件控制核心選用的是STM32F103VET6微處理器。軟件平臺(tái)為Keil MDK開(kāi)發(fā)環(huán)境。在本次設(shè)計(jì)中使用了數(shù)字PID軟件算法來(lái)調(diào)節(jié)左右輪的轉(zhuǎn)速差,實(shí)現(xiàn)智能小車的平滑轉(zhuǎn)彎與平穩(wěn)循跡。一號(hào)智能小車沿著黑色軌跡線運(yùn)行,并在接力區(qū)域傳遞接力棒,由二號(hào)車完成到終點(diǎn)的運(yùn)行。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 開(kāi)發(fā)環(huán)境
本設(shè)計(jì)選用的微控制芯片是STM32F103VET6,該芯片基于ARM核,所以有很多基于ARM嵌入式的開(kāi)發(fā)環(huán)境都適用于本設(shè)計(jì)的軟件程序開(kāi)發(fā)。本設(shè)計(jì)選擇由德國(guó)ARM公司開(kāi)發(fā)的微控制軟件開(kāi)發(fā)平臺(tái)Keil MDK作為軟件開(kāi)發(fā)環(huán)境。MDK-ARM軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設(shè)備提供了一個(gè)完整的開(kāi)發(fā)環(huán)境。下面介紹軟件開(kāi)發(fā)的整個(gè)過(guò)程:
2.1.1 USB接口
智能車通過(guò)USB接口將程序下載到主控制芯片。使用一個(gè)連接PC機(jī)USB接口與智能車的USB接口相連。通過(guò)此接口將程序下載到智能車中。支持下載目標(biāo)程序、檢查內(nèi)車寄存器、單步運(yùn)行程序、在程序中插入斷點(diǎn)運(yùn)行等一系列操作。
2.1.2 Keil MDK環(huán)境下的軟件開(kāi)發(fā)
首先在Keil MDK中創(chuàng)建一個(gè)新的工程,在新的工程中選擇智能車使用的主控制芯片,并進(jìn)行相關(guān)配置;然后開(kāi)始編寫(xiě)程序;程序編寫(xiě)完成后,在MDK中進(jìn)行程序編譯;如果有錯(cuò)誤發(fā)生,則修改源程序文件,直到程序無(wú)誤,此時(shí)將程序文件燒錄到芯片中。
2.2 系統(tǒng)程序設(shè)計(jì)
智能小車的控制主程序的主要任務(wù)是完成系統(tǒng)的初始化、處理信息采集、小車的循跡控制、電機(jī)的控制、舵機(jī)轉(zhuǎn)動(dòng)、紅外對(duì)管檢測(cè)。當(dāng)檢測(cè)到一號(hào)車到達(dá)接力區(qū)的時(shí)候應(yīng)該停在接力區(qū),將接力棒傳給二號(hào)車。當(dāng)檢測(cè)二號(hào)車接收到接力棒的時(shí)候,二號(hào)車啟動(dòng)循跡前進(jìn)。當(dāng)檢測(cè)到二號(hào)車到達(dá)停止區(qū)時(shí),二號(hào)車停在停止區(qū)內(nèi)。
2.3 信息采集模塊
智能車要實(shí)現(xiàn)循跡功能,就需要采集賽道上的黑色引導(dǎo)線的軌跡信息,這部分就需要信息采集模塊來(lái)實(shí)現(xiàn)。通過(guò)光電傳感器采集道路上的黑白線位置信號(hào),根據(jù)采集到的信號(hào)將不同的信號(hào)的電壓值輸入到主控制器內(nèi),在主控制器內(nèi)將輸入的電壓信號(hào)轉(zhuǎn)化為所需要的工程值,根據(jù)不同的工程值大小判斷黑白線。
2.4 循跡控制模塊
該模塊根據(jù)道路信息模塊所采集的道路信息和判斷的黑白線信息來(lái)判斷小車在賽道中的位置,根據(jù)小車在賽道中的位置通過(guò)調(diào)節(jié)左右輪電機(jī)的轉(zhuǎn)速差來(lái)控制小車的行動(dòng)方向從而調(diào)節(jié)小車位置。當(dāng)檢測(cè)到小車在賽道偏左位置時(shí),左電機(jī)的轉(zhuǎn)速大于右電機(jī);當(dāng)檢測(cè)到小車在賽道偏右位置時(shí),右電機(jī)的轉(zhuǎn)速大于左電機(jī);當(dāng)檢測(cè)到小車位置在賽道中間位置時(shí),左右電機(jī)轉(zhuǎn)速一致。
2.5 接力模塊
整個(gè)設(shè)計(jì)中接力模塊分為兩個(gè)部分。
第一部分為一號(hào)車的舵機(jī)控制模塊:當(dāng)一號(hào)車檢測(cè)已經(jīng)到達(dá)接力區(qū)并穩(wěn)定停車時(shí),控制舵機(jī)的轉(zhuǎn)動(dòng),當(dāng)舵機(jī)轉(zhuǎn)動(dòng)到一定的角度的時(shí)候,接力棒完成投遞動(dòng)作。
第二部分為二號(hào)車的紅外對(duì)管檢測(cè)模塊:在二號(hào)車沒(méi)有接收到接力棒的時(shí)候紅外對(duì)管是導(dǎo)通的,這個(gè)時(shí)候程序中該位為高電平,二號(hào)車在接力區(qū)處于停止?fàn)顟B(tài);當(dāng)二號(hào)車檢測(cè)到接收到接力棒時(shí),紅外對(duì)管是不導(dǎo)通的,這個(gè)時(shí)候程序中該位為低電平,二號(hào)車啟動(dòng)。
2.6 電機(jī)控制模塊
在實(shí)際的軟件算法設(shè)計(jì)中,需要對(duì)參數(shù)進(jìn)行先比例,后積分,再微分的整定步驟[1]。首先整定比例部分,如果調(diào)節(jié)比例調(diào)節(jié)器參數(shù),系統(tǒng)控制的效果沒(méi)有達(dá)到設(shè)計(jì)要求的時(shí)候,需要使用積分環(huán)節(jié),若同時(shí)使用比例和積分環(huán)節(jié),能消除靜差,但調(diào)試過(guò)程仍達(dá)不到設(shè)計(jì)要求時(shí),就需要加入微分環(huán)節(jié)。調(diào)速程序中采用的是增量式PID算法。
本設(shè)計(jì)的PID算法選取比例控制單元(Kp)和微分控制單元(Td),所以在算法程序中只需要設(shè)置比例放大系數(shù)(P)和微分時(shí)間常數(shù)(D),實(shí)際算法程序如下:
PID算法程序:
wucha_d=loc-lastloc[4];//誤差計(jì)算
pwm_out=P*loc+wucha_d*D;//誤差處理
PWM輸出:
pwm_final_L=pwm_max+pwm_out;//左電機(jī)PWM輸出
pwm_final_R=pwm_max-pwm_out;//右電機(jī)PWM輸出
一號(hào)車的參數(shù)設(shè)置:P=330,D=900,pwm_max=900;
二號(hào)車的參數(shù)設(shè)置:P=200,D=720,pwm_max=900;
首先對(duì)比例放大系數(shù)(P)進(jìn)行整定,將P的值從零開(kāi)始逐步增大,觀察小車循跡時(shí)翻譯的快速性,當(dāng)小車循跡時(shí)反應(yīng)的快速性良好時(shí),開(kāi)始對(duì)微分時(shí)間常數(shù)(D)進(jìn)行整定,最終得到上述的P、D參數(shù)。
3 系統(tǒng)調(diào)試
通電檢查:給智能車通電,檢測(cè)各模塊是否供電正常,尤其是電機(jī)的驅(qū)動(dòng)電壓和電流,需要時(shí)電機(jī)的驅(qū)動(dòng)電壓和電流保持在額定范圍內(nèi),才能使電機(jī)保持正常工作。
程序調(diào)試:檢查程序是否已經(jīng)燒錄到芯片中,在各模塊中能否正常運(yùn)行。
整機(jī)調(diào)試:整體調(diào)試智能車的各個(gè)參數(shù)。
(1)光電傳感器的參數(shù)調(diào)節(jié):分別讓光電傳感器在黑色和白色的區(qū)域工作采集此時(shí)7個(gè)通道的各路參數(shù),共采集10組計(jì)算平均值,用平均值作為所需要的參數(shù)。
(2)PID參數(shù)調(diào)節(jié):PID的參數(shù)調(diào)節(jié)需要根據(jù)參數(shù)PID參數(shù)整定的步驟一步步進(jìn)行調(diào)節(jié),直至智能車的循跡效果和轉(zhuǎn)彎效果達(dá)到設(shè)計(jì)要求。
通過(guò)優(yōu)化和完善,智能車基本實(shí)現(xiàn)了設(shè)計(jì)和比賽的要求,在賽道上能夠正常運(yùn)行,并且實(shí)現(xiàn)了平均1.2m/s的行駛速度。
4 結(jié)論
本文從信息采集模塊,尋跡模塊,接力模塊,電機(jī)驅(qū)動(dòng)模塊以及控制算法等幾個(gè)方面完成了應(yīng)用于接力賽的智能小車的軟件部分設(shè)計(jì),給出了軟件設(shè)計(jì)流程,詳細(xì)闡述了設(shè)計(jì)思路。光電傳感器采集道路上的黑白線位置信號(hào),通過(guò)左右電機(jī)的PWM控制來(lái)實(shí)現(xiàn)控制電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止,通過(guò)PID的參數(shù)整定一步步進(jìn)行調(diào)節(jié),直至智能車的循跡效果和轉(zhuǎn)彎效果達(dá)到設(shè)計(jì)要求。經(jīng)過(guò)模塊調(diào)試和整機(jī)調(diào)試,本設(shè)計(jì)控制精確度高,可靠性強(qiáng),具有一定的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]雷慧杰.基于STM32的直流電機(jī)PID調(diào)速系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù)2016.08:165-167.
[2]劉松斌,王海星,李碩恒.基于STM32的直流電機(jī)PWM調(diào)速系統(tǒng)[J].化工自動(dòng)化及儀表2016.08:834-837.
[3]朱向慶,何昌毅,朱萬(wàn)鴻,et al.基于STM32單片機(jī)的通信技術(shù)實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2019(8).