這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
歡迎回到ArduRover系列的第二部分!在Arduino 探索漫游車1—底盤中我們構(gòu)建了一個可以在崎嶇地形行駛的六輪驅(qū)動大型越野機器人。在本文中,我們將把重點放在電子設(shè)備上——我們需要大量的傳感器,巨型電池以及一些無線控制的工具。好,讓我們開始吧!
硬件
? 第一部分制作的ArduRover底盤
? 12 V 鉛酸電池(容量越大越好,我使用的是8.5Ah)
? Arduino Mega
? 帶串行接口的GPS模塊
? 帶串行接口的VC0706 JPEG相機
? 2x 9 g 微型伺服器
? 2x Pololu VNH5019 電機驅(qū)動器(驅(qū)動模塊,非開發(fā)板)
? ROHM 傳感器評估套件
? LoRenz 開發(fā)板 + SX1278模塊
? 將所有設(shè)備連接在一起的電纜和跨接線
工具
3D 打印機(推薦)
3D打印部件
? 相機支架–可在Thingiverse上獲取
? 傳感器盒–可在Thingiverse上獲取
在進行布線之前,我們需要一個地方安置所有的電子設(shè)備—最好是一些防水的盒子。為了把這些盒子安裝到底盤上,我們需要一些輔助零件。那么,就讓我們回到車庫去來制作這些東西吧。完成后,我們還需要對底盤做一些最后的調(diào)整。
第六步:安裝電子設(shè)備的支架
在上一篇文章中,我詳細(xì)介紹了用鋁型材制作部件的過程,所以在本文中,我就將這一部分做一下簡短介紹。畢竟,這些支架本身也都比較簡單:它們由與控制臂相同的U型材制成,并且有兩個10mm的孔,可將其滑動到兩個10mm的中央螺紋桿上。下圖是支架的照片:
圖1:放置電子設(shè)備盒的支架
這是將支架安裝到底盤后的樣子,兩側(cè)均用一個M10螺母將其進行固定,為電子設(shè)備和電池提供了一個穩(wěn)定而堅固的平臺。
圖2:安裝在框架上的支架
您可能已經(jīng)注意到了,我沒有提供支架的設(shè)計圖紙。那是因為您可能會使用不同的盒子來放置電子設(shè)備。比如,我使用的盒子尺寸是105 x 170 x 112 mm,所以我的支架長170mm,兩端有兩個4mm的孔。您需要在這里進行一些自定義的設(shè)計,并且對方案進行調(diào)整來滿足自己的需求。盡管如此,我還是建議您使用具有較高IP編碼的盒子。IP編碼代表的是防塵等級(第一個數(shù)字)和防水等級(第二個數(shù)字)。例如,我的盒子防護等級是IP65,這就意味著6級固態(tài)顆粒防護(防塵外殼)以及5級液體侵入防護(外殼可防噴水)。除了機器人要浸沒入大量水體中(或者駛?cè)胂窜囬g)的情況,我想這個等級就足夠了。
圖3:我用來裝電子設(shè)備的IP65盒
第七步:底盤的最后調(diào)整
由于我們的機器人將在自然環(huán)境中進行移動,如果它安裝有一些傳感器來測量周邊環(huán)境的所有特征,那就太酷了。為了達到這個目的,我將使用ROHM 傳感器評估套件,可以幫助我們更加容易的實現(xiàn)對環(huán)境中物理特性的感知。用于各個傳感器的Arduino庫可以點擊下面的鏈接下載。在本項目中,我將使用以下傳感器:
? BM1422GMV– 磁力計
? RPR-0521RS – 環(huán)境光傳感器
? KX022-1020 – 加速度計
? BM1383GLV – 壓力傳感器
? ML8511A – 紫外線傳感器
? BD1020HFV – 溫度傳感器
但是有一個問題:所有傳感器都被設(shè)計為在插入開發(fā)板上的接口后工作。因為在密封盒子內(nèi)的開發(fā)板將會被封閉,這樣一些傳感器,比如紫外線傳感器,將無法測量出任何有意義的物理量。另外,諸如加速度計和磁力計這樣的傳感器需要安裝在一個很穩(wěn)定的平臺上,如果僅僅將其插入開發(fā)板中,它們往往會發(fā)生大幅度的前后移動,這將會嚴(yán)重影響這些傳感器的測量性能。
解決這些問題的方法很簡單。我們只需要一些用于這些傳感器的外殼即可,某種可以輕松地安裝在底盤任何部位,并且可以提供足夠的覆蓋力卻又不阻礙感知我們想要測量的環(huán)境特征的東西。這就是為什么我為所使用的傳感器設(shè)計了這些小外殼的原因。它們可以通過任何3D打印設(shè)備輕松的制造出來。關(guān)于這些小外殼的更多信息,請參加另一篇文章:ROHM傳感器評估套件的3D打印案例。
圖4:傳感器外殼
另一個需要這種外殼的部件是相機。我們也想把相機固定起來,這也是用9g伺服器的原因。起初,我想使用一種可以在網(wǎng)上找到的便宜的相機支架。事實證明這浪費了5美元,因為這個支架在我第一次不小心撞到它時就折成了兩段。我沒有打算再買一個碰碰運氣,而是選擇自己來完成設(shè)計然后用3D打印制作出來!這次制作出的產(chǎn)品比第一個堅固得多,我們可以在它的輔助下拍到一些不錯的照片了。
圖5:相機支架
該模型的相關(guān)文件都可以在Thingiverse上獲取,所以,如果您在任何項目中需要一個小尺寸、堅固的相機支架,就通過3D打印來制作一個吧!
當(dāng)然,所有傳感器和相機必須固定在某些地方。我決定將它們安裝在一個3mm方形亞克力板上,它位于框架前方的頂部。然后,我們將傳感器的電纜連接到放置在它們正后方的電子設(shè)備盒中。
圖6:沒有相機時傳感器的安裝細(xì)節(jié)這些標(biāo)注分別顯示的是特定情況下使用的傳感器
圖7:傳感器和相機的最終安裝位置
您最后可能還要調(diào)整和更改抑制器的強度。因為我使用的是大型鉛酸電池,所以大部分重量會集中在最后的一對懸架上。為了彌補這一點,我將最后一對抑制器設(shè)置為最高強度,第一對設(shè)置為最小強度,中間的設(shè)置為中等強度。
圖8:設(shè)置為最高強度的抑制器(上)和設(shè)置為最低強度的抑制器(下)
該步驟取決于您所使用的電池型號。如果您的電池足夠輕,可能就沒必要更改抑制器強度。但是,我的電池比較龐大:具有8.5Ah的容量,重量達2.7 kg (5.95 lbs)。這是一個反復(fù)試驗并糾錯的過程,所以您需要做的就是把電池放到底盤上,然后修改設(shè)置,反復(fù)幾次后看看哪種設(shè)置的效果最好。理想情況下,底盤在一個平整的表面應(yīng)該是水平狀態(tài),不應(yīng)有向前或向后的傾斜。
第八步:連接邏輯端
現(xiàn)在要介紹的是本文中最具挑戰(zhàn)性的部分:將邏輯端、傳感器和Arduino連接在一起。即使我們使用兩個開發(fā)板(LoRenz開發(fā)板和ROHM傳感器評估套件擴展板),還是有許多模塊需要連接。這里顯示的是接線的Fritzing示意圖。請注意,ROHM擴展板沒有顯示在示意圖中,因為它會覆蓋其他大部分的連線。
圖9:邏輯端連線的Fritzing示意圖
有點混亂是嗎?除了電機驅(qū)動器直接由電池供電,其他所有組件都是由Arduino的5V穩(wěn)壓器來供電的。Arduino本身也是由該穩(wěn)壓器供電。現(xiàn)在,我們來分別看一下那些重要的組件連接。我的建議是一次連接一個模塊,然后每次建立一個新的連接都進行測試。
1. 伺服器。伺服器的信號與Arduino的引腳8和9連接,支持PWM(脈沖寬度調(diào)制)。
2. LoRenz 開發(fā)板。該開發(fā)板使用SPI總線。不好的一點是,在Arduino Mega上總線用的是50、51和52引腳,而這個開發(fā)板設(shè)計的是使用Arduino UNO,所以SPI總線應(yīng)該用13、12和11引腳。我們可以通過直接連接開發(fā)板上U/M接頭的引腳和Arduino Mega上的對應(yīng)引腳來解決這個問題。同時,從機選擇引腳將會保留在默認(rèn)位置(引腳7)。
3. SD 卡模塊。和LoRenz開發(fā)板一樣,該模塊使用SPI總線。所以我們應(yīng)該直接將它連接到引腳50、51和52以及一些作為從機選擇的通用數(shù)字引腳就可以了,是這樣嗎?好吧,其實沒有那么簡單。我們的Arduino具有5V邏輯電平—這意味著電壓電平5V(有一定的容差)會被釋義為邏輯1,而電壓0V(有較大容差)被視為邏輯0。LoRenz使用的無線模塊具有3.3V邏輯電平,但是已被適當(dāng)?shù)霓D(zhuǎn)為5V,來實現(xiàn)與Arduino之間的可靠通信。SD卡模塊也具有3.3V邏輯電平,但是,它只能在一個方向進行轉(zhuǎn)換(因為這樣制造成本較低)。這意味著從模塊發(fā)出的所有信號仍然是3.3V邏輯電平。這使總線上的通信變得非常不可靠,或者有可能會直接破壞通信。這些話的含義是,如果您要處理的總線上的邏輯電平不同,而該總線上可能有兩個以上的設(shè)備,則正確的做法始終是對它們進行轉(zhuǎn)換,確保避免在一個總線上混合使用不同的電壓電平。
幸運的是,SPI通信非常簡單,可以通過軟件來進行。所以我們只需要把SD模塊連接到任何3個數(shù)字引腳,然后通過代碼進行處理即可。我選擇的引腳是13、12和11。
4. VC0706 相機。相機使用RS-232(串行)總線進行連接。再強調(diào)一下,相機具有3.3V的邏輯電平。因為一次只能將兩個設(shè)備連接到RS-232,所以只需要在Arduino RX線上使用一個簡單的分壓器就夠了。相機使用的是Mega引腳16和17上的第三個硬件串行線(Arduino代碼中的Serial2)。
5. GPS 模塊。這是第二個使用串行線的模塊,因此我們可以將其放置在第四個串行端口(Serial3)的引腳14和15上。我故意略去了第二個端口(Serial1),因為引腳18和19都可用于觸發(fā)中斷,我們之后會需要將其用到傳感器上。
6. ROHM 傳感器擴展板。該擴展板位于LoRenz開發(fā)板上方。這里,我們需要把傳感器和中斷引腳連接起來。我按照以下方式對傳感器進行連接:
傳感器名稱 | 擴展板插槽 |
BM1422GMV | I2C_1 |
KX022-1020 | I2C_2 |
RPR-0521RS | I2C_4 |
BM1383GLV | I2C_5 |
BD1020HFV | ANALOG_1 |
ML8511A | ANALOG_2 |
因為LoRenz已經(jīng)使用了中斷引腳2和3,我們不能簡單地通過將擴展板上的一些引腳短路來選擇它們(有關(guān)ROHM傳感器擴展板上中斷工作方式的更多信息,請參閱RohmMultiSensor wiki)。BM1422GMV位于插槽I2C_1,該插槽連接到INT1。因此,我們將會把INT1連接到Arduino可以觸發(fā)中斷的引腳18。類似地,KX022-1020位于連接到INT3的插槽I2C_2,我們會將其連接到Arduino的引腳19上。
7. VNH5019 電機驅(qū)動器。這些驅(qū)動器不需要用專門的總線進行連接,只需要兩個數(shù)字引腳控制方向、一個PWM引腳控制速度、一個模擬引腳(可選)來讀取流經(jīng)電機的電流即可。左側(cè)驅(qū)動器連接到引腳41、43和45(PWM)以及A15(模擬),右側(cè)驅(qū)動器連接到引腳40、42和44(PWM)以及A14(模擬)。
到目前為止您已經(jīng)都完成了嗎?太棒了,因為這是本文中最難的一部分!當(dāng)您完成布線后,應(yīng)該看到類似以下的內(nèi)容:
圖10:所有已完成連接的電子設(shè)備
第九步:電源端接線
下一步是連接電源:電池和電機。底盤上有六個電機,但是我們僅有兩個VNH5019電機驅(qū)動器。這樣一來,每個驅(qū)動器需要用于三個電機。我們現(xiàn)在有兩種方式來連接這三個電機:串聯(lián)或并聯(lián)。
1. 串聯(lián)連接
電機驅(qū)動器提供的電流直接流經(jīng)三個電機。但是,每個電機上的電壓僅為驅(qū)動器輸出電壓的三分之一(假設(shè)所有電機完全相同)。驅(qū)動器的輸出電壓為12V,那么每個電機上分配的電壓為4V,這是不夠的,因為每個電機的額定電壓是12V。
2. 并聯(lián)連接
驅(qū)動器的輸出電壓均等的施加到每個電機上,所以每個電機都有12V的電壓。在這種情況下,電流被分成了三部分,所以每個電機僅能得到驅(qū)動器輸出電流的三分之一。電機的額定堵轉(zhuǎn)電流為5A。驅(qū)動器可以提供持續(xù)電流12A以及峰值電流30A。這并不是十分理想,因為這種情況下驅(qū)動器無法提供足夠的電流使三個電機都轉(zhuǎn),但是對于這個項目來說,不會影響工作的正常進行。
因此,我們將進行并聯(lián)連接。需要記住一點,當(dāng)對負(fù)載進行并聯(lián)連接時,總電阻值將會下降。在我們的項目中,因為我們連接的電機大致相同,所以并聯(lián)之后的總電阻值恰好是一個電機電阻值的三分之一。這可能會導(dǎo)致一些有最小負(fù)載要求的電機驅(qū)動器出現(xiàn)問題。幸運的是,VNH5019沒有最小負(fù)載要求,所以我們可以順利地進行工作。
這里是一個電源連接的示意圖。非常簡單,在+12V線上有一個開關(guān),我們可以將其關(guān)閉來停止機器人的工作。電池連接到了驅(qū)動器和LoRenz開發(fā)板上,后者上有螺旋式接線端子,可以直接連接到Arduino VIN和GND引腳。
圖11:電源接線原理圖
我認(rèn)為,這一步中最困難的部分是選擇將連接線放在底盤的什么位置。您需要將它們放置在不會干擾其他運動部件的位置。另外,應(yīng)該對這些連接線進行一定程度的遮蓋,因為當(dāng)機器人在戶外探索時我們不希望這些線被其他東西絆住。
當(dāng)您把所有的電機連接好后,就可以將它們放回電機模塊中了。然后將連接線固定在底盤上,并與調(diào)節(jié)器連接。
圖13:載有電子設(shè)備的ArduRover底盤成品
結(jié)論
現(xiàn)在,該進行最后的接線測試了。使用萬用表仔細(xì)地對所有的連接進行測量,確保每一根線連接到正確的位置。這一步的重要性再怎么強調(diào)都不為過,因為只要一根連接錯誤而造成電源與一個引腳之間短路的電纜,您的Arduino器件就會在煙霧中化為烏有,或者可能會造成使機器人工作的某些部件遭到毀壞。請記住,我們使用的是鉛酸電池,所有的電池都是為了—您知道的—啟動機器!這意味著如果發(fā)生了短路,將會輸出大量電流,關(guān)于這種情況的后果,您可以在YouTube上搜索一下“鉛酸電池短路”就知道了。
當(dāng)把所有的電子設(shè)備和電池安裝好后,機器人的最終重量也確定了。由于使用了巨型電池,現(xiàn)在機器人的重量達到驚人的13公斤—接近29磅!實際上,我對懸架在這種負(fù)載下也可以正常工作而感到驚訝。但是既然這樣沒問題,那我們就終于可以把這臺機器人帶到戶外去,看看我們辛苦工作之后的成果了。
為了測試電機在自然環(huán)境中的運行情況,我寫了一個簡單的應(yīng)用程序,可以由我直接設(shè)置所有電機的轉(zhuǎn)速和轉(zhuǎn)向!該應(yīng)用程序在一臺計算機上運行,通過一個串行端口向Arduino發(fā)送指令。然后Arduino通過LoRenz開發(fā)板將指令無線傳輸給機器人。坦率地說,用這種方式來控制機器人極具挑戰(zhàn)性。在上文中,您可以看到我嘗試控制漫游車的視頻,大多數(shù)情況是失敗的。非常感謝我的朋友Jan Karásek幫助我拍攝照片和錄制視頻。
下一個目標(biāo)是對機器人進行編程,以收集所有傳感器相關(guān)的數(shù)據(jù)。目前為止,在機器人上運行的程序僅能控制電機,我需要寫出更好的控制程序。因為通過鍵盤這種控制裝置來對機器人進行操控比較困難,尤其是在崎嶇地形上,我可能需要用一些其他的輸入設(shè)備,可能是一種可用于計算機的外接游戲機手柄風(fēng)格的控制器,甚至可能是一個Android手機。有關(guān)這些內(nèi)容以及更多的信息將會在下一部分中進行介紹,請繼續(xù)關(guān)注!
Jan Gromes
Jan 目前在布爾諾工業(yè)大學(xué)學(xué)習(xí)電氣工程。他有多年使用Arduino和其他微控制器來構(gòu)建項目的經(jīng)驗,對于機器人系統(tǒng)的機械設(shè)計十分感興趣。
審核編輯黃宇
-
機器人
+關(guān)注
關(guān)注
211文章
28613瀏覽量
207894 -
布線
+關(guān)注
關(guān)注
9文章
775瀏覽量
84392 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187543
發(fā)布評論請先 登錄
相關(guān)推薦
評論