版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Arduino編程控制與應(yīng)用能力模塊五掌握Arduino智能控制的應(yīng)用任務(wù)二
完成入門級線控底盤功能的實(shí)現(xiàn)導(dǎo)入在車輛行駛中電機(jī)的控制、舵機(jī)的控制、編碼器計(jì)數(shù)、定速巡航等功能是不是聽起來就很炫酷,今天我們就將會學(xué)習(xí)如何使用Arduino來實(shí)現(xiàn)這些功能,來由自己編寫出控制底盤的代碼事件。新授Newteaching1目錄一、電機(jī)轉(zhuǎn)速控制二、電機(jī)轉(zhuǎn)速的讀取三、PID控制基礎(chǔ)知識一、電機(jī)轉(zhuǎn)速控制
直流有刷電機(jī)主要由定子、轉(zhuǎn)子、換向器等部件組成。如圖所示。當(dāng)整個電樞繞組即轉(zhuǎn)子將按逆時針旋轉(zhuǎn),輸入的直流電能就轉(zhuǎn)換成轉(zhuǎn)子軸上輸出的機(jī)械能。直流有刷電機(jī)的好處是比較容易控制速度和方向。
1.直流有刷電機(jī)的組成一、電機(jī)轉(zhuǎn)速控制
一般可以通過PWM(Pulsewidthmodulation,脈沖寬度調(diào)制)的方式來實(shí)現(xiàn)輸出模擬信號的效果。Arduino輸出的PWM信號頻率固定(約490Hz)的方波,而通過改變信號每個周期高低電平所占的比例(占空比),可以得到近似輸出不同電壓的效果,如圖所示。2.脈沖寬度調(diào)制(PWM)一、電機(jī)轉(zhuǎn)速控制
直流有刷電機(jī)不宜在高溫、易燃易爆等環(huán)境下使用,而且由于電機(jī)使用了電刷作為電流變換的部件,所以需要定期更換或清理接觸部位磨擦所產(chǎn)生的污物。3.直流有刷電機(jī)的維護(hù)一、電機(jī)轉(zhuǎn)速控制
一些常見的微型直流有刷電機(jī)如圖所示。4.常見的微型直流有刷電機(jī)二、電機(jī)轉(zhuǎn)速的讀取
電機(jī)轉(zhuǎn)速的讀取,使用到了Arduino的外部中斷功能。如下圖所示,中斷函數(shù)的第1個參數(shù)是中斷號,中斷號為0時,表示使用2號管腳;中斷號為1時,表示使用3號管腳。第2個參數(shù)是中斷時被調(diào)用的子函數(shù)名,一般將中斷時需要執(zhí)行的指令都放在該子函數(shù)中。第3個參數(shù)是觸發(fā)類型,一般有RISING、FALLING和CHANGE。1.電機(jī)轉(zhuǎn)速的讀取二、電機(jī)轉(zhuǎn)速的讀取
如下圖所示,當(dāng)檢測到指定管腳的輸入電動勢從5V降到0V時,屬于FALLING條件;當(dāng)檢測到指定管腳的輸入電動勢從0V升到5V時,屬于RISING條件;而CHANGE條件則是包含了上述兩種條件。2.電機(jī)轉(zhuǎn)速的讀取條件二、電機(jī)轉(zhuǎn)速的讀取
實(shí)訓(xùn)套件中的直流電機(jī)尾部都安裝了一個編碼器模塊,按要求連接好線束后,電機(jī)每旋轉(zhuǎn)一圈,2號或3號管腳就會收到11個類似上圖的脈沖,通過計(jì)算單位時間內(nèi)的脈沖個數(shù)就可以求得電機(jī)的旋轉(zhuǎn)速度。3.求取電機(jī)的旋轉(zhuǎn)速度三、PID控制基礎(chǔ)知識
將偏差的比例、積分和微分通過線性組合構(gòu)成控制量,用該控制量對受控對象進(jìn)行控制,稱為PID算法,實(shí)際中也有P、PI和PD控制算法。其中Kp、Ki、Kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù)。PID控制適用于溫度、壓力、流量、液位等幾乎所有場合,不同場合僅僅是PID參數(shù)應(yīng)設(shè)置不同,只要參數(shù)設(shè)置得當(dāng)均可以達(dá)到很好的效果。(一)PID控制概述三、PID控制基礎(chǔ)知識
比例系數(shù)Kp的作用:反應(yīng)系統(tǒng)當(dāng)前最基本的誤差,能提高系統(tǒng)的動態(tài)響應(yīng)速度;能迅速反映誤差,從而減少誤差,但是不能消除誤差。比例系數(shù)Kp的調(diào)節(jié):范圍一般是:0.1--100。(1)如果增益值取0.1,PID調(diào)節(jié)器輸出變化為十分之一的偏差值。(2)如果增益值取100,PID調(diào)節(jié)器輸出變化為一百倍的偏差值。(3)初調(diào)時,選小一些,然后慢慢調(diào)大,直到系統(tǒng)波動足夠小時,再調(diào)節(jié)積分或微分系數(shù)。(二)各系數(shù)作用分析1.比例系數(shù)Kp的作用及調(diào)節(jié)三、PID控制基礎(chǔ)知識
積分系數(shù)Ki的作用:反映系統(tǒng)的累積誤差,理論上能消除系統(tǒng)穩(wěn)態(tài)誤差,提高無差度。積分系數(shù)Ki的調(diào)節(jié):積分時間常數(shù)的定義是,偏差引起輸出增長的時間。(1)積分時間設(shè)為1秒,則輸出變化100%所需時間為1秒。(2)初調(diào)時要把積分時間設(shè)置長些,然后慢慢調(diào)小直到系統(tǒng)穩(wěn)定為止。(二)各系數(shù)作用分析2.積分系數(shù)Ki的作用及調(diào)節(jié)三、PID控制基礎(chǔ)知識
微分系數(shù)Kd的作用:反應(yīng)系統(tǒng)誤差的變化率,具有預(yù)見性,們可以預(yù)見偏差的變化趨勢,產(chǎn)生超前的控制效果。微分系數(shù)Kd的調(diào)節(jié):微分值是偏差值的變化率。如果通過比例、積分參數(shù)的調(diào)節(jié)還是收不到理想的控制要求,就可以調(diào)節(jié)微分時間。初調(diào)時把這個系數(shù)設(shè)小,然后慢慢調(diào)大,直到系統(tǒng)穩(wěn)定。(二)各系數(shù)作用分析3.微分系數(shù)Kd的作用任務(wù)實(shí)施2TaskImplementation一、任務(wù)準(zhǔn)備(一)軟件及硬件準(zhǔn)備一、任務(wù)準(zhǔn)備(二)場地設(shè)備準(zhǔn)備任務(wù)實(shí)施前需要做好場地防護(hù)準(zhǔn)備以及檢查實(shí)訓(xùn)場地和設(shè)備設(shè)施是否及存在安全隱患,如不正常請匯報(bào)老師并進(jìn)行處理方可實(shí)施任務(wù)。(三)安全防護(hù)準(zhǔn)備11.注意Arduino控制開發(fā)套件與電腦的連接;22.注意連接端口的匹配;
33.注意Arduino控制開發(fā)套件的供電;
44.注意使用含有庫文件的程序時,檢查ArduinoIDE中是否存在該庫文件,若無則要添加。
二、實(shí)施步驟(一)控制電路連接
步驟1:首先給Arduino控制開發(fā)套件供上220v電,通過旋鈕使內(nèi)部電源B輸出的電壓為12V左右,再將線控小車驅(qū)動板與電源B接通,最后將連接線的方頭端接口連接ArduinoUNO開發(fā)板,另一端USB接口連接電腦。
二、實(shí)施步驟(二)控制程序編寫與上傳
步驟1:打開ArduinoIDE軟件,進(jìn)入界面。
二、實(shí)施步驟(二)控制程序編寫與上傳
步驟2:在工具-端口-選擇對應(yīng)的端口。若分不清端口,先把開發(fā)板連接上,查看端口,有COM1、COM3、COM4、COM5、COM6;斷開開發(fā)板連接,查看端口,有COM3、COM4、COM5、COM6;少了一個COM10端口,那么COM10就是對應(yīng)的端口。
二、實(shí)施步驟(三)電機(jī)的控制
步驟1:新建一個文檔,//后的代號可刪除;在【代碼編寫區(qū)域】中的輸入如圖所示代碼。
二、實(shí)施步驟(三)電機(jī)的控制
步驟2:在“voidsetup(){”的下方輸入如圖所示代碼。
二、實(shí)施步驟(三)電機(jī)的控制
步驟3:最后在“voidloop(){”的下方輸入如圖所示代碼。
二、實(shí)施步驟(三)電機(jī)的控制
步驟4:點(diǎn)擊上傳,如果操作順利,就會顯示上傳成功,然后電機(jī)進(jìn)行工作??筛某绦蛑蠵WM的值(范圍0-255)來改變電機(jī)的轉(zhuǎn)速,達(dá)到控制電機(jī)的效果。
二、實(shí)施步驟(三)電機(jī)的控制
步驟5:控制程序解析:分別定義四個整數(shù)型常量motor_left、motor_left1、motor_right、motor_right1并分別賦值為6/9/10/11。6/9控制小車左輪電機(jī)的正反轉(zhuǎn),10/11控制小車右輪電機(jī)的正反轉(zhuǎn)。定義一個整數(shù)型變量PWM并賦值50,該值代表電機(jī)轉(zhuǎn)速的控制量,范圍為0~255。
二、實(shí)施步驟(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)
步驟1:新建一個文檔,//后的代號可刪除;在【代碼編寫區(qū)域】中的輸入如圖所示代碼。
二、實(shí)施步驟(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)
步驟2:再輸入如圖所示代碼。
二、實(shí)施步驟(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)
步驟3:在“voidsetup(){”下方輸入如圖所示代碼。
二、實(shí)施步驟(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)
步驟4:最后在“voidloop(){”下方輸入如圖所示代碼。
二、實(shí)施步驟(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)
步驟5:點(diǎn)擊上傳,如果操作順利,就會顯示上傳成功,然后打開串口監(jiān)視器,波特率選擇9600,串口發(fā)送“L”是測試左輪,發(fā)送“R”是測試右輪。選擇好測試的輪子后,將輪子勻速轉(zhuǎn)動一圈,然后串口發(fā)送“P”,串口就會打印出輪子轉(zhuǎn)動一圈的脈沖數(shù)。操作流程就是:發(fā)送L或R——然后轉(zhuǎn)動輪子一圈——發(fā)送P。二、實(shí)施步驟
步驟6:控制程序解析:(1)定義兩個整數(shù)型常量encoder_Left1、encoder_Right1并分別賦值為2、3。定義兩個易變變量encoder_Left、encoder_Right,定義一個布爾變量K。(2)在自定義函數(shù)InitPin中設(shè)置encoder_Left1、encoder_Right1為輸入模式。在初始化函數(shù)中定義串口波特率為9600,調(diào)用自定義函數(shù)InitPin,開啟0、1號外部中斷,觸發(fā)方式為電平發(fā)生變化,中斷服務(wù)函數(shù)分別為counter0、counter1,最后在串口監(jiān)視窗口打印兩行測試方法提醒文本。(3)在loop函數(shù)中定義一個字符型變量cmd,讀取串口監(jiān)視器的值保存在cmd中,將K賦值為true,使用while循環(huán)函數(shù)來判斷cmd的值。(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)二、實(shí)施步驟(四)編碼器計(jì)數(shù)的實(shí)現(xiàn)程序運(yùn)行流程圖二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)
步驟1:新建一個文檔,//后的代號可刪除;在【代碼編寫區(qū)域】中的輸入如圖所示代碼。
二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)
步驟2:在“voidsetup(){”下方輸入如圖所示代碼。
二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)
步驟3:在“voidloop(){”下方輸入如圖所示代碼。
二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)
步驟4:再輸入如圖所示的voidencoderLeftISR、voidencoderRightISR、intreadEncoder函數(shù)代碼,以及圖所示的voidpwmPI、voidmotorDrive函數(shù)代碼。
二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)
步驟5:點(diǎn)擊上傳,如果操作順利,就會顯示上傳成功,隨后兩個電機(jī)都進(jìn)行工作,兩后輪驅(qū)動行駛,速度為設(shè)定的目標(biāo)速度值(因各類誤差影響,速度值會維持在一定范圍內(nèi)有所波動)。
二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)
步驟6:控制程序解析(1)首先使用宏定義#define定義電機(jī)控制管腳和編碼器管腳與ArduinoUNO板的對應(yīng)關(guān)系。還定義了左右輪的對應(yīng)的布爾值,方便在程序中判斷選擇左右輪。(2)接著定義程序需要使用到的變量:包括觸發(fā)時間、PID相應(yīng)偏差、計(jì)數(shù)器、編碼器、脈沖寬度、定時器時間、目標(biāo)值和PID參數(shù)等變量。(3)進(jìn)行初始化設(shè)置。首先設(shè)置編碼器管腳模式并開啟外部中斷,接著設(shè)置串口通信波特率,設(shè)置電機(jī)驅(qū)動控制管腳模式。(4)在loop函數(shù)中,使用if選擇結(jié)構(gòu),每隔30ms調(diào)用pwmPI計(jì)算函數(shù)處理數(shù)據(jù)(同時驅(qū)動電機(jī)轉(zhuǎn)動),使電機(jī)保持設(shè)定的轉(zhuǎn)速運(yùn)行,車輛定速巡航。(5)定義程序需要使用到的子函數(shù):包括左右輪中斷服務(wù)函數(shù)、編碼器值讀取函數(shù)、PI計(jì)算函數(shù)和電機(jī)驅(qū)動函數(shù)。二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)二、實(shí)施步驟(五)定速巡航的實(shí)現(xiàn)程序運(yùn)行流程圖二、實(shí)施步驟(六)舵機(jī)的控制
步驟1:新建一個文檔,//后的代號可刪除;在【代碼編寫區(qū)域】中的輸入如圖所示代碼。
二、實(shí)施步驟(六)舵機(jī)的控制
步驟2:分別在“voidsetup(){”和“voidloop(){”的下方輸入如圖所示代碼。
二、實(shí)施步驟(六)舵機(jī)的控制
步驟3:點(diǎn)擊上傳,如果操作順利,就會顯示上傳成功,隨后舵機(jī)會根據(jù)程序中設(shè)定的角度進(jìn)行轉(zhuǎn)向??煽刂圃诔绦蛑懈亩鏅C(jī)轉(zhuǎn)向的角度(范圍0-180°)。
二、實(shí)施步驟(六)舵機(jī)的控制
步驟4:控制程序解析(1)首先定義整型常量servopin對應(yīng)Arduino板5號管腳,用來控制舵機(jī)。同時定義整型變量myangle來儲存相應(yīng)的角度值,pulsewidth來存儲經(jīng)計(jì)算得到的脈沖寬度值。(2)自定義子函數(shù)servoRun來控制舵機(jī),利用脈沖的持續(xù)時間(脈寬)來驅(qū)動舵機(jī)控制其轉(zhuǎn)角。高電平時間為pulsewidth對應(yīng)值,單位為μs;低電平時間為(20000-pulsewidth)μs,即delay(20-pulsewidth/1000)ms。其中pulsewidth=(my
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國高折射玻璃微珠市場現(xiàn)狀分析及發(fā)展前景規(guī)劃研究報(bào)告
- 2025-2030年中國鐵道用鋼材市場深度調(diào)研及投資戰(zhàn)略規(guī)劃分析報(bào)告
- 2025-2030年中國鋼筋加工設(shè)備行業(yè)市場運(yùn)行狀況及未來發(fā)展趨勢分析報(bào)告
- 2025-2030年中國采鹽市場發(fā)展?fàn)顩r及投資前景規(guī)劃研究報(bào)告
- 2024物業(yè)管理費(fèi)項(xiàng)目服務(wù)合同(含綠化養(yǎng)護(hù)專項(xiàng))3篇
- 絲網(wǎng)印刷在包裝行業(yè)的應(yīng)用考核試卷
- 生物的進(jìn)化歷程課程設(shè)計(jì)
- 除冰機(jī)課程設(shè)計(jì)
- 針織課程設(shè)計(jì)課每課總結(jié)
- 翼墻式洞門課程設(shè)計(jì)
- 2020年上海市高考英語二模試卷(a卷)
- 對賬單標(biāo)準(zhǔn)模板
- 小學(xué)科學(xué)教科版四年級下冊第二單元《電路》復(fù)習(xí)教案(2023春新課標(biāo)版)
- 創(chuàng)業(yè)計(jì)劃書(成人用品店)
- 電機(jī)的結(jié)構(gòu)及工作原理
- GB 6245-2006消防泵
- 空調(diào)維修保養(yǎng)服務(wù)突發(fā)事件應(yīng)急處置方案
- 東岸沖沙閘及進(jìn)水閘施工方案
- 寵物入住酒店免責(zé)協(xié)議
- 2022年滬教版(全國)九年級化學(xué)下冊第6章溶解現(xiàn)象章節(jié)測試試卷(精選含答案)
- 河南省地圖含市縣地圖矢量分層地圖行政區(qū)劃市縣概況ppt模板
評論
0/150
提交評論