第5章-智能小車設計_第1頁
第5章-智能小車設計_第2頁
第5章-智能小車設計_第3頁
第5章-智能小車設計_第4頁
第5章-智能小車設計_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章智能小車設計目錄5.1制作智能小車5.2采用驅動模塊進行控制5.3材料清單5.4機械零件設計5.5實物拼裝5.6成品實物圖5.7項目拓展-智能巡線避障小車

5.1制作智能小車

大部分同學小的時候都夢想有一臺屬于自己的四驅車,并且好奇為什么通電四驅車就會跑起來,接下來的章節(jié)將介紹四驅車的工作原理以及帶領同學們了解電機的類型并且讓同學們制作出屬于自己的智能小車。5.1.1直流電機直流電機(directcurrentmachine)是指能將直流電能轉換成機械能(直流電動機)或將機械能轉換成直流電能(直流發(fā)電機)的旋轉電機。它是能實現(xiàn)直流電能和機械能互相轉換的電機。當它作電動機運行時是直流電動機,將電能轉換為機械能;作發(fā)電機運行時是直流發(fā)電機,將機械能轉換為電能。直流電機示意圖如圖5-1所示。圖5-1常見的直流電機5.1.2直流無刷電機的控制原理直流無刷電機的控制原理,要讓電機轉動起來,首先控制部就必須根據(jù)hall-sensor感應到的電機轉子所在位置,然后依照定子繞線決定開啟(或關閉)換流器(inverter)中功率晶體管的順序,inverter中之AH、BH、CH(這些稱為上臂功率晶體管)及AL、BL、CL(這些稱為下臂功率晶體管),使電流依序流經(jīng)電機線圈產(chǎn)生順向(或逆向)旋轉磁場,并與轉子的磁鐵相互作用,如此就能使電機順時/逆時轉動。當電機轉子轉動到hall-sensor感應出另一組信號的位置時,控制部又再開啟下一組功率晶體管,如此循環(huán)電機就可以依同一方向繼續(xù)轉動直到控制部決定要電機轉子停止則關閉功率晶體管(或只開下臂功率晶體管);要電機轉子反向則功率晶體管開啟順序相反。

基本上功率晶體管的開法可舉例如下:AH、BL一組→AH、CL一組→BH、CL一組→BH、AL一組→CH、AL一組→CH、BL一組,但絕不能開成AH、AL或BH、BL或CH、CL。此外因為電子零件總有開關的響應時間,所以功率晶體管在關與開的交錯時間要將零件的響應時間考慮進去,否則當上臂(或下臂)尚未完全關閉,下臂(或上臂)就已開啟,結果就造成上、下臂短路而使功率晶體管燒毀。

當電機轉動起來,控制部會再根據(jù)驅動器設定的速度及加/減速率所組成的命令(Command)與hall-sensor信號變化的速度加以比對(或由軟件運算)再來決定由下一組(AH、BL或AH、CL或BH、CL或……)開關導通,以及導通時間長短。速度不夠則開長,速度過頭則減短,此部份工作就由PWM來完成。PWM是決定電機轉速快或慢的方式,如何產(chǎn)生這樣的PWM才是要達到較精準速度控制的核心。

高轉速的速度控制必須考慮到系統(tǒng)的CLOCK分辨率是否足以掌握處理軟件指令的時間,另外對于hall-sensor信號變化的資料存取方式也影響到處理器效能與判定正確性、實時性。至于低轉速的速度控制尤其是低速起動則因為回傳的hall-sensor信號變化變得更慢,怎樣擷取信號方式、處理時機以及根據(jù)電機特性適當配置控制參數(shù)值就顯得非常重要?;蛘咚俣然貍鞲淖円詄ncoder變化為參考,使信號分辨率增加以期得到更佳的控制。電機能夠運轉順暢而且響應良好,P.I.D.控制的恰當與否也無法忽視。之前提到直流無刷電機是閉回路控制,因此回授信號就等于是告訴控制部電機轉速距離目標速度還差多少,這就是誤差(Error)。知道了誤差自然就要補償,方式有傳統(tǒng)的工程控制如P.I.D.控制。但控制的狀態(tài)及環(huán)境其實是復雜多變的,若要控制的堅固耐用則要考慮的因素恐怕不是傳統(tǒng)的工程控制能完全掌握,所以模糊控制、專家系統(tǒng)及神經(jīng)網(wǎng)絡也將被納入成為智能型P.I.D.控制的重要理論。5.1.3直流電機的控制直流電機控制方法較為簡單,可以采用Arduinouno直接控制,具體控制連接原理圖如圖5-2所示。控制代碼也相對簡單,具體如下文所示。圖5-2直流電機控制連接圖簡單控制的示例:voidsetup(){pinMode(3,OUTPUT);}voidloop(){digitalWrite(3,HIGH);delay(2000);pinMode(3,OUTPUT);}intmotorpin=3;voidsetup(){}voidloop(){for(intfadeValue=0;fadeValue<=255;fadeValue+=50){analogWrite(motorpin,fadeValue);delay(2000);}for(intfadeValue=255;fadeValue>=0;fadeValue-=50){analogWrite(motorpin,fadeValue);delay(2000);}}5.2采用驅動模塊進行控制驅動模塊根據(jù)功能、性能分為很多種類,本節(jié)根據(jù)實際需求將介紹L298N驅動模塊。L298N是一種高電壓、大電流電機驅動芯片。該芯片采用15腳封裝。內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流電動機和步進電動機、繼電器線圈等感性負載;采用標準邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用L298N芯片驅動電機,該芯片可以驅動一臺兩相步進電機或四相步進電機,也可以驅動兩臺直流電機。接口定義如圖5-3所示,Arduino+L298N驅動直流電機接線方式如圖5-4所示,接線方法如圖5-5所示。圖5-3

接口定義(1)簡單示例圖5-4Arduino+L298N驅動直流電機接線方式*當ENA使能IN1IN2控制OUT1OUT2

*當ENB使能IN3IN4控制OUT3OUT4

由于本模塊是2路的H橋驅動,所以可以同時驅動兩個電機,使能ENAENB之后,

*可以分別從IN1IN2輸入PWM信號驅動電機1的轉速和方向

*可以分別從IN3IN4輸入PWM信號驅動電機2的轉速和方向圖5-5接線方法(2)接線方式IN1-4分別接Arduinomega2560的PIN4-7,將L298N上的ENA、ENB插口上的插銷拔掉,隨后,將ENA與Arduinomega2560的PIN11腳相連,ENB與Arduinomega2560的PIN8相連。連線示意圖如圖5-6所示。

IN1接PIN4;IN2接PIN5;IN3接PIN6;IN4接PIN7;

ENA接PIN11;ENB接PIN8;圖5-6連線示意圖示例:#definemotor1pin14//定義IN1引腳#definemotor1pin25//定義IN2引腳#definemotor1pwm11//定義ENA引腳(我的是Mega2560的板子)#definemotor2pin16//定義IN3引腳#definemotor2pin27//定義IN4引腳#definemotor2pwm8//定義ENB引腳voidmotor(intmotorpin1,intmotorpin2,intmotorpwm,intval){pinMode(motorpin1,OUTPUT);//輸出第一個引腳pinMode(motorpin2,OUTPUT);//輸出第二個引腳digitalWrite(motorpin2,0);//將第二個引腳置低digitalWrite(motorpin1,1);//將第一個引腳抬高analogWrite(motorpwm,val);//給EN引腳設定模擬值,設定轉速}voidsetup(){}voidloop(){inti;for(i=100;i<=255;i++)//讓電機的轉速從100到255轉動,A,B轉速不一樣,完成轉向{motor(motor2pin1,motor2pin2,motor2pwm,255);//電機B保持255勻速轉動motor(motor1pin1,motor1pin2,motor1pwm,i);//電機A從100到255轉動delay(500);//間隔500ms

}for(i=100;i<=255;i++)//讓電機從100到255轉動,功能同上{motor(motor1pin1,motor1pin2,motor1pwm,255);motor(motor2pin1,motor2pin2,motor2pwm,i);delay(500);}motor(motor1pin1,motor1pin2,motor1pwm,255);//電機A以最大轉速轉動delay(5000);motor(motor1pin2,motor1pin1,motor1pwm,255);//電機A反向轉動delay(5000);}程序效果:直流電機B電機勻速轉動,A電機從100加速到255轉動.5.3材料清單材料清單序號元器件名稱型號參數(shù)規(guī)格數(shù)量參考實物圖1ArduinoMega25601個2萬向輪1寸全局從動轉向輪1個3語言模塊非特定人聲語音識別模塊1個4銅柱M3*64個5螺絲M3*8126螺母M3127杜邦線20cm公對母18電池盒四節(jié)電池盒19小車底盤網(wǎng)購(有條件可自己3d打印,或者使用洞洞板代替)110橡膠車輪直徑65mm軸孔長5.3mm211電機DC3V-6V直流減速電機212開關小型開關113驅動板L298N114藍牙串口模塊HC-051個2.上述清單中的材料中有幾處需要特別注意:(1)第11項直流減速電機,一定要按照要求購買減速電機,否則將會像市面上的玩具賽車一樣一經(jīng)上電就具有很高的速度。這樣及其容易燒毀電路。(2)第3項是本項目的語音識別、對話功能實現(xiàn)的模塊。之所以選擇這個型號是因為其內置了較大的存儲空間,用戶可以自行定義2000句的對話??梢詫崿F(xiàn)人和機器人的對話交流,也能實現(xiàn)用戶對機器人的語音控制功能。該語音模塊有三個版本,分別是核心板、升級版和完全版。核心板的價錢相對較低,本項目建議使用該版本。如果有同學想額外增加語音方面的功能和有這方面需求,可以選擇后面兩個版本。(3)項目2中萬向輪亦可以用牛眼輪來替代。(4)項目14中需購買HC-05種類的藍牙串口模塊,HC-05主從端一體,可以進行信號的轉化。比較出色的完成遙控任務5.4機械零件設計下車底板零件圖如圖5-7所示,立體圖如圖5-8所示。圖5-7小車底板零件圖圖5-8小車地板立體圖本節(jié)所提供的零件都是3D建模,自行打印完成的,在打印時需要注意小車地板上的螺絲口以及細小的口,以免后期因為當時的馬虎而造成不必要的損失。5.5實物拼裝底板拼裝實物圖如圖5-9所示。圖5-9底板拼裝實物圖5.5.1電路設計智能聲控小車主要由轉向機構、驅動機構、驅動控制模塊(Mega2560)、語音控制模塊四大部分組成小車為輪式結構,機械部分分為轉向機構和驅動機構(Mega2560)轉向機構主要由轉向電機、轉向架和萬向輪輪組成驅動機構采用玩具小車常用的雙電機驅動方案,包括兩個減速電機和Mega2560,其原理為:轉向時由控制語音者向小車發(fā)出轉向信號,語音控制模塊向Mega2560發(fā)送指令信息,Mega2560再發(fā)送信號給轉向電機,轉向電機根據(jù)轉向信號正向或反向旋轉一定角度,電機通過齒輪、齒條系統(tǒng)帶動轉向架擺動一定角度,最終帶動與轉向架固定在一起的前輪偏擺一定角度小車在轉向時由于內、外側的車輪的轉彎半徑不同,所以內外側車輪的轉速也不相同前輪為從動輪,會根據(jù)轉彎角度的大小自動調節(jié)內、外側車輪的轉速;而后輪為主動輪,其轉速分別由兩個電機獨立驅動,不會根據(jù)轉彎半徑自動調節(jié)轉速因此小車轉彎時,控制系統(tǒng)在控制轉向電機的同時還需要根據(jù)轉向角度的大小向兩個驅動電機發(fā)出控制信號。連接圖如圖5-10所示。圖5-10連接圖5.5.2語音識別模塊連接1.本項目語言識別模塊使用了WEGASUN-M6核心板。該模塊一款集語音識別、語音合成、語音(MP3)點播、RF(射頻)功能、紅外功能于一體的多功能模塊。目前主要應用在智能家居、對話機器人、車載調度終端、高端智能語音交互玩具、樓宇智能化、教育機器人等方面。主打傻瓜式的簡易操作、優(yōu)越的語音識別和語音合成性能,應用領域十分廣泛。2.模塊連接方法語音識別模塊與Arduino2560接線方法:語音模塊TXD---2560RX1語音模塊RXD---2560TX1語音模塊GND---2560GND語音模塊3V3---25603.3V

同時,注意語音識別模塊的供電。如果發(fā)現(xiàn)語音識別模塊的3.3V電壓從2560的3.3V引腳取電無法進行語音識別或者播放語音,那請將語音識別模塊的5V電源輸入端接到UNO的VIN引腳端,并且選擇外部9V的電源適配器給2560供電,這樣就有充足的電流和電壓了。實物連接圖如圖5-11所示。圖5-11實物連接圖3.程序代碼1.核心板代碼@KeyWordBuf02#前進001|后退002|$@KeyWordBuf04#左轉003|右轉004|$

@KeyWordBuf04#停止005|$@WriteKeyWordBuf#$@WriteFlashText#|001!|002!|003!|004!|005!|$2.ArduinoMega2560代碼voidsk(){val=Serial2.read();if(-1!=val){if(1==val){digitalWrite(4,HIGH);digitalWrite(7,HIGH);analogWrite(5,250);analogWrite(6,250);}if(2==val){digitalWrite(4,LOW);digitalWrite(7,LOW);analogWrite(5,250);analogWrite(6,250);}if(3==val){digitalWrite(4,LOW);digitalWrite(7,HIGH);analogWrite(5,240);analogWrite(6,240);}if(4==val){digitalWrite(4,HIGH);digitalWrite(7,LOW);

analogWrite(5,240);analogWrite(6,240);}if(5==val){analogWrite(5,0);analogWrite(6,0);}}}4.藍牙控制藍牙小車原理:

app設定編碼-->通過手機藍牙發(fā)送編碼-->HC05收到編碼,發(fā)送到Arduino2560板子-->板子解析編碼-->控制電機。下圖5-12為藍牙控制手機控制端截圖。圖5-12藍牙控制手機控制端截圖點擊打開app之后,首先會自動彈出提示要求打開手機藍牙,可以看到四個方向箭頭以及中間停止,用來控制小車前進后退左轉右轉,做這些操作前提是要連接上藍牙小車的藍牙模塊HC05.所以需要首先點擊右下角很像螺母的圖標彈出下圖5-13藍牙設備連接示意圖。圖5-13藍牙設備連接示意圖如果沒有圖5-13所示,請點擊搜索藍牙設備,不出意外應該會看到一個HC06,沒有的話請確保你的藍牙模塊電源連接正確??吹紿C06,點擊一下,如果是第一次配對,是需要輸入密碼:默認是0000或者1234.如果配對過,點擊就自動連接了。藍牙小車前進后退左轉右轉停止,都是一種狀態(tài),所以我們用編碼去區(qū)分。在我的app里,我默認設置為:前進3

后退4

左轉1

右轉2

停止0。當然,也可以自定義編碼,點擊左下角進入設置頁面、如圖5-14、5-15所示。圖5-14設置界面

編碼只能是0-9數(shù)字以及大小寫26個字母,足夠使用。圖5-15設置自定義說完app端,要說一下怎么測試編碼是否正確。把下面代碼燒入Arduino2560板子:

voidsetup(){

//putyoursetupcodehere,torunonce:

Serial.begin(9600);

}

voidloop(){

//putyourmaincodehere,torunrepeatedly:

if(Serial.available()>0){

charch=Serial.read();

if(ch=='1’){//前進

Serial.println("up");

}elseif(ch=='2’){//后退

Serial.println("back");

}elseif(ch=='3’){//左轉

Serial.println("left");

}elseif(ch=='4’){

//右轉

Serial.println("right");

}elseif(ch=='0’){

//停車

Serial.println("stop");

}else{

//其他編碼

Serial.println(ch);

}

}

}

然后就可以用ArduinoIDE自帶的串口調試器來查看,不出意外應該可以看到類似下面的打印,如圖5-16所示。圖5-16打印結果5.6成品實物圖電路細節(jié)圖如圖5-17所示,側視圖如圖5-18所示,主視圖如圖5-19所示圖5-17電路細節(jié)圖圖5-18側視圖圖5-19主視圖1.材料準備材料清單如表5-2所示,底板實物圖如圖5-20所示,電路連接圖如圖5-21所示,車前實物圖如圖5-22所示,小車與遙控器的電路連接圖如圖5-23所示。5.7項目拓展-智能巡線避障小車元器件名稱參數(shù)規(guī)格數(shù)量參考實物圖巡線傳感器SEN1595-1D7超聲波SRF-041圖5-20實物圖圖5-21電路連接圖圖5-22實物圖圖5-23小車與超聲波的電路連接圖#include<Servo.h>//#definesendServomyservo;intEcho=A1;//Echo回聲腳(P2.0)intTrig=A0;//Trig觸發(fā)腳(P2.1)intin1=5;intin2=4;intin3=3;intin4=2;intrightDistance=0,leftDistance=0,middleDistance=0;voidforward(){digitalWrite(in1,HIGH);digitalWrite(in2,LOW);digitalWrite(in3,HIGH);digitalWrite(in4,LOW);}voidback(){digitalWrite(in1,LOW);digitalWrite(in2,HIGH);digitalWrite(in3,LOW);digitalWrite(in4,HIGH);}voidturnleft(){digitalWrite(in1,HIGH);digitalWrite(in2,LOW);digitalWrite(in3,LOW);digitalWrite(in4,HIGH);}voidturnright(){digitalWrite(in1,LOW);digitalWrite(in2,HIGH);digitalWrite(in3,HIGH);digitalWrite(in4,LOW);}voidstop(){digitalWrite(in1,LOW);digitalWrite(in2,LOW);digitalWrite(in3,LOW);digitalWrite(in4,LOW);}

intDistance_test()//量出前方距離{digitalWrite(Trig,LOW);//給觸發(fā)腳低電平2μsdelayMicroseconds(2);digitalWrite(Trig,HIGH);//給觸發(fā)腳高電平10μs,這里至少是10μsdelayMicroseconds(20);digitalWrite(Trig,LOW);//持續(xù)給觸發(fā)腳低電floatFdistance=pulseIn(Echo,HIGH);//讀取高電平時間(單位:微秒)Fdistance=Fdistance/58;//為什么除以58等于厘米,Y米=(X秒*344)/2//X秒=(2*Y米)/344==》X秒=0.0058*Y米==》厘米=微秒/58return(int)Fdistance;}voidsetup(){myservo.attach(9);Serial.begin(9600);//初始化串口

pinMode(Echo,INPUT);//定義超聲波輸入腳

pinMode(Trig,OUTPUT);//定義超聲波輸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論