材料清單:車體:一張板(木板、塑料板、甚至是雪糕棒拼接的),萬向輪或小軸承、銅柱、車輪、電機; 硬件:Arduino Uno或Arduino Nano,電機驅(qū)動模塊、紅外傳感器*3、電源、杜邦線。 軟件:一個安裝了Arduino程序的電腦 在講解如何制作循跡小車之前,我們先了解一下它的結(jié)構(gòu)組成和運行原理,理清軟件硬件實現(xiàn)的思路,對我們后期制作循跡小車會更有幫助。宏觀上看主要包括車體、硬件電路和軟件編程三部分。它的整個運行原理就是前端的紅外傳感器檢測黑線的存在,并將它的位置信號反饋給主控板,主控程序?qū)π≤囄恢眠M行分析,從而控制兩個電機的速度(差速運行),達到直行、左轉(zhuǎn)、右轉(zhuǎn)、倒車等操作效果。 那么具體的制作和零件選擇,我們來依次分析一下。 車體部分:首先來拆解循跡小車的車體結(jié)構(gòu)。循跡小車的車體可以做得非常簡單,也可以設(shè)計的很復(fù)雜但更美觀。一張板子配上電機和車輪就可以做好,如果想要設(shè)計出可愛的造型,那你就要費點時間和精力了。 (1)這里不在設(shè)計上過于糾結(jié),通過一個簡單的結(jié)構(gòu)說清楚車體的制作: 這是一個簡單的車體結(jié)構(gòu),一張塑料洞洞板,通過螺釘、螺母、電機固定架將電機固定在洞洞板上,再將與電機軸尺寸合適的車輪直接插到電機軸上,最后在洞洞板前端用鐵絲固定一個小軸承充當前輪,車體部分就完成了。 型號: 電機:N20減速電機(購物網(wǎng)站很容易搜到,大概在10元左右) 車輪:與電機軸配套的D型孔的橡膠輪(搜索N20電機橡膠輪) 電機固定架:搜索N20電機固定架。 底板:搜索固位板可以找到很多,這個比較隨意。 軸承:外徑10mm左右都可以,或者也可以選擇其他圓形結(jié)構(gòu)替代。 綜上,重點是選定電機,車輪和固定架匹配電機就可以,至于底板可以自由選擇,考慮好如何固定電機和前輪就可以。 (2)另外介紹一種常見的可以買到的車體,如圖: 這種類型的車體是平時最常見的車體結(jié)構(gòu),在網(wǎng)上搜索智能車套件,會有很多選擇。當然,想動手自己嘗試設(shè)計組裝的也可以買好配件自由發(fā)揮。對于這個底板,看上去很復(fù)雜,其實上面預(yù)留的孔也是隨意切割,只要匹配電機和萬向輪的固定孔位就可以。家里有木工工具的也可以自己鋸一塊木板,打幾個孔也能搞定?;蛘邥﨏AD設(shè)計的,把圖紙拿到街邊的廣告制作店鋪,分分鐘也可以加工出來漂亮的亞克力底板。 電機:TT電機,相對N20電機要便宜一半左右 輪子:選擇與電機軸配套的孔型,這個電機軸是扁的,網(wǎng)上搜索TT電機橡膠輪可以找到。 萬向輪:網(wǎng)上很容易找到,重點關(guān)注螺絲固定孔與底板上對應(yīng)孔的匹配。 總結(jié):車體部分實際上并不難,重點是要做好各個組件的安裝匹配。同時,不要忘記后面主控板、傳感器的安裝位置,需要提前確定好,并預(yù)留孔位。 硬件電路部分:硬件電路部分主要包括主控板、電機驅(qū)動模塊、紅外循跡傳感器、電源等。 (1)主控板以Arduino Uno為例進行講解,對于沒有編程經(jīng)驗的會簡單一些,它還可以實現(xiàn)圖形化編程界面(Mixly),更是適合兒童編程學(xué)習(xí)。板子價格相對便宜,20元左右,一個板子+一條數(shù)據(jù)線就可以用起來了。 主控板的外形如下圖所示,它的學(xué)習(xí)不是一下可以說清楚的,我后面會給大家提供部分資料,也會把跟小車相關(guān)的用法講清楚。 從圖上看到,這塊板子有14個數(shù)字輸入/輸出端口,6個PWM端口。數(shù)字端口主要用于傳遞高低電平,高電平為1,低電平為0;紅外傳感器就是連接到這些端口上,通過高低電平來傳遞消息;PWM端口是在板子上標有“~”符號的端口,電機驅(qū)動的邏輯輸入端口就是跟PWM端口連接,它是用來給電機設(shè)定速度的,一般值在0-255之間。 USB接口通過數(shù)據(jù)線與電腦連接,便于下載程序到主板上。 電源接口可以與外部5V或3.3V電源連接,要注意看板子上的標識,不可以隨意接,也可以用來給傳感器供電。如果電源接口不夠用,可自行連接導(dǎo)線擴展,但也要注意不能過多,電流太大容易燒芯片。 注意:主控板供電只能是3.3V或5V,我們直接用后面的電機驅(qū)動模塊中的5V供電便可以。 板子的資料和對應(yīng)軟件下載都羅列出來: 1. 插上UNO開發(fā)板,驅(qū)動會自動安裝 2.在die里面選擇板卡 UNO 3. 選擇COM端口,這個可以在我的電腦里查詢,剛剛你的UNO開發(fā)板里面端口。 這里把軟件安裝完成后的板卡選擇和COM端口選擇截圖演示,以便不懂的朋友參閱。這兩個端口的設(shè)置是為了將程序傳輸?shù)街骺匕迳希仨氝x擇對應(yīng)的板卡(主控板型號)和電腦連接端口。如下圖: 2)紅外循跡傳感器模塊:就像人的眼睛,是用于判斷黑線的。紅外循跡傳感器上有兩個二極管,一個是發(fā)射紅外信號,另一個可以接收紅外信號。當傳感器下方是黑線時,黑色可以大量吸收紅外信號,從而導(dǎo)致返回的紅外信號非常微弱;當傳感器下方不是黑色時,,大量的紅外信號被反射回來,被接收端接收。從而可以判斷黑線的存在了,這就是紅外循跡傳感器的作用原理。 網(wǎng)上的紅外循跡傳感器也是多種多樣,不過使用都是一樣的,最主要的就是判斷在掃描到黑線時,返回的是高電平還是低電平,這個在產(chǎn)品介紹那都會有介紹。紅外循跡傳感器模塊大概如下圖所示: 圖上看出傳感器上有4個接線端和3個接線端的區(qū)別,它們都會有電源正極Vcc、負極GND、數(shù)字輸出口D0,而多出那一個端口是A0,也就是模擬輸出端,這個對我們使用并不影響,我們只使用數(shù)字輸出端(D0)就可以。 在使用時,只需將電源端接好,把數(shù)字輸出端接到主控板的數(shù)字輸入/輸出端口,便完成連接。具體連接圖在后面展示。 在購買時注意購買紅外循跡傳感器模塊,而不能直接購買紅外傳感器。因為單獨的紅外傳感器是用不了的,需要其他芯片配合使用。模塊上都是集成好的,可以直接使用。 (3)電機驅(qū)動模塊,是用于對電機速度和轉(zhuǎn)向的控制模塊。費用大概在10元左右,其端口連接會多點,但并不復(fù)雜。我來依次說明,如下圖,左右兩端藍色的輸出A和輸出B是連接兩個電機的,把左側(cè)電機的兩條線接到輸出A,同理,右側(cè)接到輸出B。外部供電可以選擇5-35v,但一般12v或9v就足夠。電源正極接在下圖的12v供電端,負極接在供電GND端,而圖中5V供電可以用于給控制板和紅外循跡傳感器進行供電,注意負極都是要接到供電GND。最后就是邏輯輸入這四個端口,需要跟控制板上的數(shù)字輸入/輸出端口相連接,左側(cè)兩個是控制左側(cè)電機,而右側(cè)兩個是控制右側(cè)電機。 具體的連接圖示在最后展示。 (4)電源部分則可以直接買12V鋰電池,或者比較簡單的就購買9v電池,配上連接頭就能直接使用。 由于篇幅有限,僅對用到的硬件部分進行簡單介紹,但足以完成循跡小車的制作。下面我就把整體的硬件連接圖展示出來。 軟件編程部分:該部分應(yīng)該是整個循跡小車的核心,它賦予小車思想,讓小車智能化。對于該部分的實現(xiàn),方式方法都有很多種,比如利用Arduino IDE界面直接代碼編程,還可以通過圖形化界面進行拖拽編程,如Mixly。方法上有直接法,就是對電機的控制人為設(shè)定參數(shù),簡單粗暴;還有會結(jié)合PID算法的高級控制,這種方法對于小車的響應(yīng)速度更快,也更合理,但是難度會高一些。 該文章就是科普性質(zhì),所以先通過最簡單的方式,實現(xiàn)小車的循跡功能。編程的整體思想是先判斷黑線的位置,當中間傳感器掃描到黑線時,小車位置正確,電機繼續(xù)按原始速度行走;當左側(cè)傳感器掃描到黑線時,此時小車已經(jīng)偏右,需要及時向左校正,左側(cè)電機減速,右側(cè)電機加速,完成左轉(zhuǎn);當右側(cè)傳感器掃描到黑線時,此時小車已經(jīng)偏左,需要及時向右校正,左側(cè)電機加速,右側(cè)電機減速,完成右轉(zhuǎn);下面列出上述電路連接對應(yīng)的程序: static int initial_motor_speed=100; const int IN_A1=6; const int IN_A2=9; const int IN_B1=10; const int IN_B2=11; const int sensor2=2; const int sensor3=3; const int sensor4=4; void setup() { pinMode(IN_A1,OUTPUT); pinMode(IN_A2,OUTPUT); pinMode(IN_B1,OUTPUT); pinMode(IN_B2,OUTPUT); pinMode(sensor2,INPUT); pinMode(sensor3,INPUT); pinMode(sensor4,INPUT); } void loop() { char num2,num3,num4; num2=digitalRead(sensor2); num3=digitalRead(sensor3); num4=digitalRead(sensor4); if(num4==0){ analogWrite(IN_A1,150); analogWrite(IN_A2,0); analogWrite(IN_B1,50); analogWrite(IN_B2,0); }else if(num2==0){ analogWrite(IN_A1,50); analogWrite(IN_A2,0); analogWrite(IN_B1,150); analogWrite(IN_B2,0); }else{ analogWrite(IN_A1,100); analogWrite(IN_A2,0); analogWrite(IN_B1,100); analogWrite(IN_B2,0); } } 將程序拷貝并上傳到主控板中,就完成程序輸入了。如果你的電路連接跟圖示的一樣,那這個程序可以實現(xiàn)小車的循跡功能。如果你購買的循跡傳感器檢測到黑線輸出高電平,只需要把程序中num4==0,nm2==0改成num4==1,nm2==1即可。對于程序部分不作詳細的講解,如有需要可以自行查閱資料或私信交流。 到此為止,小車的車體、電路、軟件均已完成,靈魂戰(zhàn)車可以出發(fā)了! |
|