精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Arduino機器人開源分享

Arduino機器人開源分享

2022-10-26 | zip | 0.08 MB | 次下載 | 免費

資料介紹

描述

介紹

我想介紹一下 YAAR——又一個 Arduino 機器人。YAAR(ar ar – Lt. Tasha Yar、星際迷航……和 YACC Yet Another Compiler Compiler)旨在作為機器人項目的模塊化硬件和軟件開發平臺。以下是主要特點:

  • Wi-Fi 連接命令和監督控制
  • Wi-Fi視頻監控
  • 用于更高級別處理的 Raspberry Pi
  • 用于低電平控制的 Arduino Mega2560
  • 閉環速度控制
  • 支持直流電機和無刷電機
  • 伺服驅動轉向
  • 軟件差動動力和轉向
  • 帶按鈕開/關的 Pi 兼容電源
  • 支持更大平臺的模塊化硬件

多年來,我已經制造了許多具有不同程度自主性的在地板上跑來跑去的機器人。但我之前的所有機器人項目都受到通信問題的困擾。我使用了帶有 900 MHz / 2.4 GHz / 5.8 GHz 數據鏈路和視頻發射器和接收器的射頻和藍牙鏈路。它們都可以工作,但是要設置所有組件并正常工作總是很麻煩。通過 Wi-Fi 整合所有通信將是一項重大改進。此外,我想到了一些更大的機器人項目,這些項目將受益于 Raspberry Pi 帶來的更高智能。YAAR 就是這樣誕生的。

項目說明

該項目的機械方面是使用 Fusion 360 設計的。這是一個免費(非商業)的 Autodesk 3D CAD 系統。CAD的基本要求是能夠導出用于激光切割的.DXF文件和用于3D打印的.STL文件。某些激光切割機無法正確導入 .DXF 文件。Inkscape 非常擅長解決這些文件不兼容問題。

我使用 DipTrace 進行原理圖捕獲和 PWB 布局。DipTrace 可免費用于非商業用途,以創建最多 500 個焊盤的一層或兩層板。如果需要,DipTrace 可以導出 Eagle 文件。原理圖和 PWB 布局以 DipTrace 文件的形式提供。還提供了 Gerber 文件。盡管我提供了 GBR、DXF 和 STL 格式的文件,但我鼓勵您直接從 Fusion 或 DipTrace 生成這些文件——尤其是 .DXF 文件的結果令人不安。

我通過全球速賣通購買幾乎所有的組件。最小的電阻器和電容器為 0805 尺寸,因此手工焊接很簡單。我還從中國購買了通用集成電路,例如 MCP6001 運算放大器、TCST1103 光斷續器、DRV8833 雙電機控制和 SS34 肖特基二極管。誠然,您必須等待幾周才能交貨(我的平均時間是 3 到 4 周)。Digi-Key 是我購買 Molex C-Grid 連接器等特殊零件的首選來源。我使用 Oshpark 和 JLCPCB 作為 PCB 源。我使用 0.1 英寸 Molex C-Grid 系統進行電線互連和端接。

這是一個項目概述。我不會詳細介紹諸如“下載 Arduino IDE……”之類的所有細節,這需要一本書。但是,我認為我已經為具有基本硬件和軟件技能的人提供了足夠的資源來成功啟動和運行 YAAR。

此處的所有內容以及更多內容均可從文章末尾附近的 .ZIP 文件中獲得。

建筑學

YAAR的硬件由4個主要部分組成;電源、硬件輸入/輸出和相關的微控制器、電機控制和大腦。

Raspberry Pi 的主要目的是充當通信中心并提供高級思考能力。Pi 與運行終端仿真程序 (PuTTY) 的 PC 之間的通信基于 Wi-Fi 上的 SSH 協議。來自攝像機的視頻也由 UV4L 流媒體服務器通過 Wi-Fi 傳輸。UV4L 是根據最佳視頻延遲選擇的,大約半秒。我在這個項目中使用了 Raspberry Pi 3B+,因為我手頭有它,并且所有 Raspberry Pi 目前都缺貨或只能以黃牛價格購買。

pYYBAGNYfSqAfylFAAElDK071CU022.png
雅爾建筑
?

微控制器選擇

Arduino Mega2560 Pro 用作低級硬件控制器。評估了另外兩個微控制器;基于 32U4 的 Pro Micro 和基于 STM32F103 的 Blue Pill。雖然 Pro Micro 有足夠的內部資源,但它沒有足夠的 I/O 引腳來支持該項目。Blue Pill 確實有足夠的 I/O,而且速度相當快,但很容易受到電機產生的噪音的影響。此外,Blue Pill 不是“主流”Arduino。安裝一致的、最新的庫并找到文檔是一項挑戰。

poYBAGNYfS2Ae0TnAAEh-tZhQ7g831.png
微控制器選擇
?

硬件控制單元

Arduino 連接到一個定制板,該板提供板載電源并將電源和信號分配到所有連接的輸入和輸出。一個定制的雙電機控制器板連接到配電板上。該硬件控制單元 (HCU) 共同支持以下功能:

  • 兩個有刷電機的 PWM 輸出
  • 可選,兩個用于無刷電機的 RC 輸出
  • 兩個軸編碼器傳感器輸入
  • 緊急停止保險杠
  • SR-04 聲納障礙物檢測
  • 電源監控
  • 伺服控制轉向
  • 閃爍激光二極管(就像 Picard the Borg)
  • 壓電報警器
  • 與 Raspberry Pi 的串行通信
  • 板載 5 伏開關電源
  • 大量未使用的 I/O 以滿足未來需求

硬件控制單元響應通過連接到 Pi 的串行端口或 Arduino IDE 串行端口發送的命令。HCU 將監視和控制轉向和電機以完成以下任務:

  • 沿直線路徑以規定的速度前進
  • 以規定的速度倒退
  • 停止
  • 遵循規定半徑的彎曲路徑
  • 按規定量向右或向左傾斜路徑
poYBAGNYfTGAFRi1AAOOkg11TBo067.png
示意圖 - 配電板
?

硬件控制單元軟件

Pro Micro 有足夠的內部資源(中斷、定時器、串行端口),但缺少所需數量的 I/O 引腳。Blue Pill 的速度很誘人,但我發現微控制器很容易受到噪音的影響,雖然我成功地讓它運行起來,但我發現 Mega2560 更容易連接,更無故障,軟件支持環境更發達并更好地記錄在案。Arduino 以 100 x/秒的速度管理任務調度程序,并以超過 100k/秒的循環速度運行事件驅動的狀態機,處理器開銷約為 20%。所有事件都盡可能由中斷驅動。雖然沒有藍丸那么快,但也足夠快了。

Arduino 控制方案以兩個主要元素為中心;一個任務調度器和一個狀態機。任務調度器由定時器 5 每 10 毫秒產生的周期性中斷驅動。中斷服務程序設置一個對應于自上次調用以來的時間間隔的標志。標志設置為對應于 10 毫秒、20 毫秒、50 毫秒、100 毫秒、…… 1 秒。主程序循環由任務調度程序組成,檢查每個標志,如果設置,則執行分配給該時隙的任務。最終結果是某些任務(例如閉環速度控制)可以以更高的速率執行,而其他任務(例如電池監控)可以以低得多的速率執行。

poYBAGNYfTOADzHHAABpSPuQaZc559.png
任務計劃程序
?

第二個主要的軟件元素是狀態機。YAAR 始終處于幾種狀態之一,例如,停止、前進或后退。狀態機不斷監控與當前狀態相關的所有輸入,如果有任何變化,則采取適當的措施。許多事件是中斷驅動的,這減少了微控制器開銷并提高了執行率。任務調度器每 10 毫秒執行一次狀態機任務。

poYBAGNYfTWACpztAACB1TYfhkM447.png
狀態機
?

YAAR 的主要功能之一是光學速度編碼器,可為閉環速度控制提供速度信息。如果沒有反饋回路控制方案,速度會受到負載、摩擦、表面和幾何形狀變化的嚴重影響。YAAR 能夠以穩定的 5 厘米/秒(0.1 英里/小時!)的速度爬行。編碼器還支持軌道控制,可以實現受控轉向角,例如“右 20 度”。

轉向是通過伺服控制的前輪和兩個后輪的差速控制來完成的。在機械上,前輪簡單地安裝在伺服系統的前叉上。為了使 YAAR 旋轉到位,前輪伺服必須從中心左右旋轉 90 度。

電機控制

YAAR 的軟件和硬件與機器人大小無關,電機控制除外。HCU 上提供了一個連接器,用于連接外部電機控制。可用的信號有 PWM、RC 伺服、電源和用于啟用和方向的單獨控制。RC 伺服信號支持現成的無刷電機控制器。

pYYBAGNYfTiAPYJGAAGhRX9SFS8840.jpg
DRV8833 雙電機控制板
?
poYBAGNYfTuARsLbAAERyMFBNzw397.png
示意圖
?

這里使用的電機控制是為“Arduino TT”電機設計的,這些電機體積小、容易獲得且價格便宜。Texas Instruments DRV8833 雙電機控制以 11.5 伏的最大輸入電壓為每個電機提供高達 1 安培的電流。跳線選擇 5 伏電源或電池作為電機電源 - 使用電池選項。DRV8833 每個電機只有兩個控制引腳。如果一個用于 PWM 速度控制,另一個成為方向控制,但在反轉方向時,PWM 信號必須反轉。幸運的是,Arduino 中的定時器支持輸出反相的 PWM 信號。兩個輸入信號的狀態控制 DRV8833 如何處理反激電流(電感器關閉后流動的電流)。如果兩個輸入信號均為低電平,電流通過電源再循環,直到消散,然后電機慣性滑行。如果兩個信號都為高電平,則電機對地短路,從而在電機上施加電氣制動。制動效率較低,但會導致低速運行更平穩。我選擇了制動模式進行前進操作,導致平穩的慢速前進運動,但在倒車狀態下以低速移動時運動更加劇烈。兩個示波器捕獲說明了電機兩側的波形。第一個在慢衰減模式下是正向的,第二個在快速衰減模式下是反向的。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。電機對地短路,從而在電機上設置電子制動器。制動效率較低,但會導致低速運行更平穩。我選擇了制動模式進行前進操作,導致平穩的慢速前進運動,但在倒車狀態下以低速移動時運動更加劇烈。兩個示波器捕獲說明了電機兩側的波形。第一個在慢衰減模式下是正向的,第二個在快速衰減模式下是反向的。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。電機對地短路,從而在電機上設置電子制動器。制動效率較低,但會導致低速運行更平穩。我選擇了制動模式進行前進操作,導致平穩的慢速前進運動,但在倒車狀態下以低速移動時運動更加劇烈。兩個示波器捕獲說明了電機兩側的波形。第一個在慢衰減模式下是正向的,第二個在快速衰減模式下是反向的。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。我選擇了制動模式進行前進操作,導致平穩的慢速前進運動,但在倒車狀態下以低速移動時運動更加劇烈。兩個示波器捕獲說明了電機兩側的波形。第一個在慢衰減模式下是正向的,第二個在快速衰減模式下是反向的。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。我選擇了制動模式進行前進操作,導致平穩的慢速前進運動,但在倒車狀態下以低速移動時運動更加劇烈。兩個示波器捕獲說明了電機兩側的波形。第一個在慢衰減模式下是正向的,第二個在快速衰減模式下是反向的。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。明顯的區別在于,在第二次示波器捕獲中,可以看到電機電樞“反沖”到超過電源的電壓。PWM 速率的范圍可以從 30Hz 到 31kHz。我選擇了 4kHz。

電機控制任務是一個簡單的誤差反饋回路,由比例和積分校正項組成(定時器 OCR2A、B 寄存器用作 I 項)。我嘗試過使用 D 項,但沒有發現任何改進。也許隨著更快的編碼器更新率,這會改變。該任務每秒執行 20 次。電機控制軟件編寫在 Arduino IDE 中標有“DRV8833”的單獨選項卡中,以方便更換其他電機控制器。在將診斷報告打印到 IDE 串行監視器時,有時會觀察到電機速度的“打嗝”,因為在較長的報告期間任務會暫停。

編碼器

槽編碼器是一個簡單的電路。盡管您可以在 AliExpress 上以 1 美元的價格購買 Arduino 機器人的插槽編碼器,但我測試過的那些有幾個缺點。最大的問題是它們會反彈。它們很大并且消耗大量電流。該電路消除了運算放大器周圍正反饋的反彈。

插槽編碼器是 YAAR 設計的關鍵。它們可以實現準確的速度控制和跟蹤。所示電路結構緊湊、功耗低且無反彈。該電路的工作電壓為 3V 至 6V。

與編碼器一起改進的編碼器盤有 50 個孔,而不是通常的 10 個。不幸的是,沒有實用的方法將編碼器盤連接到電機軸的末端而不是輪軸。盡快獲取盡可能多的速度信息是實現平穩低速運行的關鍵。五十個孔是我的激光切割機能干凈地切割的最大值。圓盤是從 1/16” 層切割而成的。用 2-56 或 2mm 螺釘將圓盤連接到輪軸的另一端。PWB 應在 2 盎司的 032 英寸庫存上制造。銅。

pYYBAGNYfT6AHMseAAH7OXpiRbM559.jpg
編碼器
?
poYBAGNYfUCAarEWAACMvYc13PU626.bmp
編碼器
?

電源

電源是一個開關模式降壓轉換器,可將 7.4 伏 2S 鋰聚合物電池調節至 5 伏。按下按鈕即可啟動系統電源。關機是用同一個按鈕完成的——就像你的電腦一樣。這很重要,因為就像不建議拔掉 PC 上的插頭一樣,也不建議將其用于 Raspberry Pi。為什么不直接關掉電源?因為 Pi 有很多家務要做才能關閉。如果此過程在錯誤的時間中斷,SD 卡文件可能會損壞。電源直接插入 Pi 的 40 針接頭,由 Arduino 控制。請注意,當按下按鈕時,配電板的電源是通過按鈕提供的,然后通過二極管到配電板上電源的使能引腳。Arduino 啟動后(大約需要一秒鐘),Arduino 將通過第二個隔離二極管控制使能引腳。

  • 直接連接到 Pi 20 排針
  • 20 伏最大電池輸入
  • 3 安培輸出
  • 可調電位器從 4.95 到 5.48 伏輸出
  • 92% 效率
  • 2 芯 LiPo 供應
poYBAGNYfUeAVEwnABBRrS2aUUQ045.jpg
帶有附加電源的 Pi
?
poYBAGNYfUmAHVIYAACYnN_LGnM332.bmp
電源
?
pYYBAGNYfUuAfcn5AAA9PO9WM9Y504.png
電源控制
?

該電源基于 Diodes Inc. 的 3 Amp AP62300T 開關模式穩壓器。最初,我將電源設計為使用 5 Amp Texas Instruments TPS565201 穩壓器。然而,在我最初的原型機開始工作后,我試圖訂購更多,卻發現交貨時間已經延長到一年多。我暗自竊笑,我的小項目助長了汽車行業的“芯片短缺”。幸運的是,AP62300T 幾乎可以直接替代。我對 Raspberry Pi 的所有電流消耗(帶攝像頭)的測量平均不到 1 安培,在 1.75 安培的啟動期間有短暫的偏移,因此 AP62300T 就足夠了。參考電壓和使能引腳控制要求存在細微差別。此外,還有兩個版本;具有不同參考電壓的“T”和“非 T”版本。沒關系——原理圖顯示了每個版本的正確電阻。與從速賣通購買的大多數組件一樣,數據表是一廂情愿的想法。中國采購的電容都沒有爆炸,7x7x3 毫米電感器的額定電流似乎普遍超過 5 安培。顯示電阻值時,輸出范圍為 4.95 V 至 5.48 V(使用“T”版本)。調整微調電位器時要小心,如果您沒有非導電螺絲刀,請勿在插入 Pi 時進行調整 - 將金屬十字螺絲刀插入插槽會改變電壓。安裝R1后,除非EN引腳拉高,否則電源不會打開,因此請在測試和調整單元后安裝R1。我已將設備調整為 5.1 V,負載為 5 Ohm。電源將保持穩定,除非電池電壓低于 6.5 伏,此時 2 節鋰聚合物電池將耗盡 90% 以上。AP62300T 的額定最大輸入電壓為 20 伏。

事實證明,控制連接器的最佳方向是 90 度。這掩蓋了電壓調整微調器,使調整乏味。調整微調器時關閉電源。與硬件控制單元的連接如下:

poYBAGNYfU6AEWMUAAAssXF3Kjc158.png
線路調節
?
pYYBAGNYfVCAUXjwAAAybkA2bcs124.png
負載調節
?

電源還提供 I2C 連接器。將電源連接到 Pi 的連接器掩蓋了 SDA 和 SCL 信號,因此它們在 I2C 連接器上與幾個控制信號一起重新創建。

您可能已經注意到,電池始終連接到系統,這可能會導致大量漏電流。泄漏電流測量為 10 uA,相當于 LiPo 18650 電池的數年。PWB 應在 2 盎司的 032 英寸庫存上制造。銅。最后,因為 Arduino 需要大約一秒鐘才能啟動,所以您必須按住按鈕直到持續的嗶聲開始或激光二極管開始閃爍,這意味著 Arduino 已經啟動。

電源和信號排序

互連電路上電和斷電時必須特別小心。大多數 IC 具有輸入保護二極管,如部分數據表原理圖所示。在我們的例子中,Arduino 首先啟動,這意味著 Pi 仍然處于關閉狀態。如果 Arduino 試圖向 Pi 上的任何引腳輸出數字高電平,結果將是通過輸入保護二極管短路。這將大大超過 Arduino 的最大輸出電流額定值和 Pi 的輸入電流額定值。但問題還不止于此。一些 IC 容易受到“閂鎖”的影響,這意味著如果在上電期間電流流過體二極管,整個 IC 將像 SCR 一樣將電源短路到地,從而導致尖銳的“砰砰”聲,a一小股煙霧和我們極客非常熟悉的刺鼻氣味。關閉電源時必須牢記這些相同的注意事項;所有 Arduino 輸出都處于三態,只有這樣 Pi 才能安全關閉。您可以通過 SSH / PC 終端鏈接發送“(K)ill”命令或按下按鈕來執行此過程。

poYBAGNYfVKAOiwBAAAau9nP2XE120.png
輸入保護二極管
?

傳感器單元

傳感器單元由攝像頭、SR-04超聲波距離傳感器、保險杠開關和激光二極管組成。3D 打印支架專為所有傳感器設計,以便在安裝到機器人之前進行組裝和接線。

SR-04、攝像頭和保險杠開關安裝在升高的頭部單元中。這是用 3 毫米螺釘連接到 ECU 的,因此可以向上旋轉以訪問下面的連接。安裝相機時要小心。在組件下面放一塊軟布,否則會損壞鏡頭。

注意:激光二極管模塊包含一個 91 歐姆的電阻器,它會從微控制器輸出中汲取過多的電流 (31 mA)。這必須用一個 150 歐姆的電阻器代替,它將電流限制在 19 毫安。

pYYBAGNYfVmAMa3mABAv6GrnLY4007.jpg
傳感器接線
?

樹莓派

Raspberry Pi 充當 YAAR 的“大腦”和通信中心。目前命令通過 SSH 通過 Wi-Fi 從 PC 終端 (PuTTY) 發送到 Pi,然后通過串行鏈路中繼到硬件控制單元。通過連接到 Pi 的攝像頭使用低延遲 UV4L 軟件鏈接到瀏覽器窗口,在 PC 上監控進度。

在這一點上,我必須承認我不是 Python / Linux 程序員。Python 代碼的第一部分是一個簡單的草圖,它監控來自 Arduino 的輸入,并在信號變低時執行關機命令。這是從網絡上許多地方發現的按鈕關閉代碼中提取的一個簡單的黑客攻擊。第二段代碼原則上很簡單,但需要一段時間才能正常工作。基本上,代碼將來自 SSH 端口的任何輸入發送到 UART,并將從 UART 接收到的任何輸入發送到 SSH 端口。聽起來很容易,對吧?

pYYBAGNYfVuAIObFAAA-DsqBTaE848.png
機器人控制
?
#!/usr/bin/env python3
# non blocking input from SSH
# without "timeout" any noise will hang program
# This is a Pyton3 sketch, the .py file type is removed so it can be invoked easier


import sys
import select
import serial
from time import sleep


ser = serial.Serial("/dev/ttyS0", 9600, timeout=1) # timeout=1 second


while True:
    while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        fromSSH = sys.stdin.readline() #get input string from PC via SSH
    
        if fromSSH:                    # if not empty
            fromSSH += '\n'            # add lf, needed for parseInt()
            toUART = fromSSH.encode('utf-8') # convert utf-8 to bytes
            ser.write(toUART)          # write out ascii bytes
            sleep(0.1)                 # time for Arduino to reply
 
    else:
        if ser.inWaiting() > 0:        # anything from Arduino?
            fromUART = ser.readline()  # '\n' terminated line, bytes
            toSSH = fromUART.decode()  # convert bytes to utf-8 string
            print(toSSH)               # send to PC via SSH

以下是必須在 Pi 上安裝的操作和項目的概述:

  • 啟用 Wi-Fi
  • 啟用并測試與您的 PC 終端程序的 SSH 通信(PuTTY 主機名 raspberrypi,端口 22,連接類型 SSH,登錄為:pi,Pi@raspberrypi 的密碼:默認為 raspberry,除非您更改它)
  • 安裝和測試 Python shutdown.py 代碼——使用接地按鈕進行測試
  • 使 shutdown.py 在啟動時執行
  • 安裝和測試 UV4L
  • 安裝和測試robot.py——此時你應該能夠連接到YAAR并通過Wi-Fi/SSH/PuTTY與HCU通信

接線

制作線束。我為 SIG1 使用了一個 18 針 DRH,為 SIG2 使用了一個 24 針 DRH,一個 6 針 SRH 用于連接電源的控制連接器,一個 6 針極化 SRH 用于連接傳感器頭單元的連接器。

poYBAGNYfV6AQcJ-AAGa9f2eoSg167.png
雅爾接線
?
pYYBAGNYfWWACKP9ABJr-SFWmVs545.jpg
線束
?

機械的

從機械上講,YAAR 沒什么好說的——只是測試電子設備和開發軟件所需的最低要求。我發現激光切割 1/8” (3mm) lite ply (3 ply poplar) 是一種快速簡便的車身制造方法。我使用薄的氰基丙烯酸酯膠來組裝膠合板,事先用橡皮筋把它粘在一起。小心不要讓電機支架周圍或 ECU 安裝區域有多余的膠水——這些地方非常貼合。

poYBAGNYfWuAWObcAAsu_hMyCkM756.jpg
身體
?

電機提出了一個設計挑戰——在某些電機和車輪中,電機與車輪的間隙可能小至 1 毫米(存在相當大的差異)。不幸的是,電機安裝螺釘直接位于擠壓點下方,因此即使電機安裝在車身外側,螺釘頭也會在車輪上摩擦。解決方案是設計一個 3D 打印電機安裝座,該安裝座用螺釘固定在車身內部,并放置在足夠間隙的位置。編碼器底座通過正常的電機安裝孔連接到電機底座,以確保編碼器和編碼器盤的正確光學對準。組裝電機/電機支架/編碼器支架時,注意電機本體上的小突起與車輪在同一側(電機不對稱)。我盡可能使用 3 毫米螺釘并輕敲 3D 打印的 PLA。這導致非常令人滿意的組裝過程。舊臺式電腦可以是 3 毫米螺絲的母線。

有幾個 3D 打印部件:

  • 電子控制單元 (ECU) – Pi、HCU 和電池的支架
  • 保險杠延長臂 – 延長微動開關臂
  • 保險杠 - 連接車輪前部的兩個保險杠臂延伸件
  • 伺服安裝 - 持有轉向伺服
  • 前叉 – 可容納 1.75” 輪子
  • 電機安裝 - 固定電機和編碼器安裝
  • 傳感器安裝 - 允許在安裝前對傳感器單元進行接線

ECU 設計用于安裝 Raspberry Pi 3B+。Pi 4 需要重新設計。前叉是為具有 25 個樣條的 TS-53 伺服系統設計的。不同的伺服系統可能需要重新設計。我選擇的 TS-53 伺服已經過時了。我相信源文件中建議的替代方案更好,但未經測試。為了讓 YAAR 旋轉到位,伺服必須能夠旋轉 180 度。

將微動開關臂向前彎曲到足以使保險杠在壓下時與前輪脫離。使用制造商最好的朋友 - 熱熔膠將保險杠連接到手臂延伸部分。

測試/調試

我的第一步是拿出熱熔膠槍,在 Arduino 上的微型 USB 連接器上涂上一團膠水。沒有什么比在從板上撕下后看到 USB 電纜末端懸掛的連接器更令人沮喪的了。

首先對 HCU 進行基準測試。將 Arduino 連接到配電板并連接微型 USB。調用 Arduino IDE 并加載代碼。不要在 HCU 上附加任何其他東西。電源將由 USB 提供。調用 IDE 串行監視器并確認顯示菜單。

pYYBAGNYfW2AK3h2AADDKezZTn4564.png
菜單
?

接下來將電機控制模塊和兩個電機組件連接到 HCU。可以通過發送正向和反向命令來測試電機。請記住,電源由 PC USB 端口供電,因此請限制您的速度。我的果汁以大約 25 厘米/秒的速度耗盡。通過在每個車輪上放一點便利貼來檢查編碼器是否正確運行,并通過注意標記的相對位置未更改來驗證電機實際上是否在跟蹤。問題可能是由編碼器和編碼器盤未對準或被遮擋(或部分遮擋)的槽造成的。

連接傳感器模塊和連接器 SIG2。激光應該開始閃爍。超聲波測距儀可以使用報告 3 進行測試。

將電源連接到 SIG1 連接器,將 SIG1 連接器連接到 HCU。向電源施加 7.4V 電源。確認保險杠開關和按鈕的正確操作。每當進入 STOP 狀態時,HCU 都會發送一個表示原因的二進制代碼 (CODABOPP):

pYYBAGNYfXCAJweYAACkOYepAg0039.jpg
CODABOPP
?

單擊監視器中的數據輸入窗口并輸入命令,例如“f”表示前進,然后輸入“v10”表示速度。有 7 個內置診斷報告,例如“x1”,如下圖所示(見插圖)。請注意,基本指令速度為 10 厘米/秒,但每個電機都在稍微修改指令速度,因為轉向任務試圖保持軌道筆直,Adist = Bdist。

poYBAGNYfXKAaxiCAABin4_yGmk977.jpg
報告 1
?

有7個報告:

1 - 電機信息

2 - 轉向

3 - 一般

4 - 平

5 - 旋轉

6 - 電源控制

7 - 機械和菜單

輸入任何沒有預期參數的命令都會將該參數設置為零,因此調用報告 0 將關閉任何活動報告。您將不得不檢查代碼以了解許多列的含義,因為縮寫的標題可能是鈍的。

請注意,您的 PC 的 USB 連接器可能限制為 500 mA。接近此限制將導致異常行為。

幾秒鐘后,您將看到顯示器上顯示的命令菜單。命令可以從 IDE 串行監視器或 Raspberry Pi 串行端口(通過 SSH 和 PuTTY)發送到 Arduino。

在您對 HCU 正常運行感到滿意后,將電源連接到 Pi 并將 HCU 連接到控制連接器。連接電池(或外部電源)。請記住,當連接 Arduino IDE 時,您必須小心不要導致 Arduino 重置,因為這會立即關閉 Pi 的電源,例如當您加載新代碼或調用監視器時。該軟件檢測電池的存在,并僅在存在且充電充足的情況下為 Pi 供電。使用 Raspberry Pi 和 Arduino IDE 進行調試并激活監視器可能會很棘手。這是我的啟動程序:

在 PC 上調用 Arduino IDE,打開相應的代碼文件

將 USB 電纜插入 Arduino,這將啟動 Arduino,但不會啟動 Pi

啟用 IDE 串行監視器,這將重新啟動 Arduino

如果需要,將新代碼加載到 Arduino

將電池連接到電源板上

禁用然后重新啟用 IDE 串行監視器,這將重新啟動 Arduino 和 Pi。將注意到電池的存在,并且 Pi 將通電。

幾秒鐘后,您將看到顯示器上顯示的命令菜單。Pi 大約需要 30 秒才能啟動,之后您可以確認視頻鏈接的操作。命令可以從 IDE 串行監視器或 Raspberry Pi 串行端口(通過 SSH 和 PuTTY)發送到 Arduino。

通過按下按鈕或發送 (K)ill 命令來完成關機。等待斷開電池,直到警報停止發出嗶嗶聲或激光停止閃爍。如果要將新代碼加載到 Arduino 中,請關閉系統,斷開電池,加載代碼并重新啟動系統。Arduino 和 Pi 之間的通信失敗通常是由電池電量不足引起的。盡管我對在操作過程中關閉 Pi 進行了所有警告,但我的機器在數十次意外斷電后仍然幸免于難,沒有發現任何不良影響。

在調試 HCU 時,我確實遇到了一個棘手的問題,其特點是電機在低速時運行良好,但在加速時會打嗝或重置。這(終于!)被追蹤到 20 針 MTRCTRL 連接器上的引腳 1 和 2 與 SIG1 連接器上的接地引腳 1 和 2 之間的弱接地連接。在引腳之間添加 22 號線解決了這個問題。

手術

YAAR 響應 9 個基本命令:

  • 停止 - 進入停止狀態,電機將應用電機制動
  • 前進 - 進入前進狀態(速度 = 0)
  • 反向 - 進入反向狀態(速度 = 0)
  • 速度——設定規定的速度
  • 距離 - 設置規定的距離(默認 = 10 公里)
  • 曲線 - 將路徑設置為以厘米為單位的規定半徑的右 (+) 或左 (-) 圓
  • 右 - 以度數設置規定的新軌道
  • 左 - 如果從停止狀態執行,YAAR 將原地旋轉
  • Halt – 設置速度=0,但保持正向或反向狀態

命令可以從 Arduino 串行控制臺輸入或由 Raspberry Pi 發送。一個典型的命令包括進入所需的狀態,然后指定所需的速度。命令不區分大小寫。每個命令都必須使用 發送,例如:

f     Enter the forward state
v20   Set speed to 20 cm/sec, begin moving forward

以下命令序列將導致 YAAR 以 30 厘米/秒的速度向后移動 100 厘米:

b     Enter the backup state
d100  Set distance to 100 cm
v30   Set speed to 30 cm/sec, begin moving backward

可以輸入相同的命令序列:

B d100 v30 Use spaces to separate commands, execute upon ENTER

在 YAAR 進入前進狀態后,可以使用 R、L 和 C 命令修改路徑。

f      Enter the forward state
v20   Begin forward motion at speed = 20 cm/sec
r45   Change track to the right 45 degrees
c-100 Circle to the left with a radius of 1 meter
r     Change track to right 0 degrees (straight ahead)
s     Enter the stop state
r360  Enter the spin state, rotate in place right 360 degrees

在后備狀態下不調用轉向任務,從而導致在反向時對兩個電機的速度命令相同。

?

從這里到哪里?

現在,大腦并沒有像中繼通信那樣考慮太多,但可能性是無窮無盡的……首先,正如我所說,我不太習慣用 Python 編碼。但也許我的第一步是用飛行時間傳感器(如通過 I2C 連接到 Pi 的 VL53L5)替換 SR-04 超聲波距離傳感器。這將導致架構改進,因為 Pi 將能夠利用空間信息以及簡單的避障。它也會給 Pi 一些思考的東西,這是項目的重點。

之后,以下項目招手;跟隨一個顏色斑點,在房子周圍導航,構建一個更大的平臺,遠程呈現,音頻命令,跟隨一個人……如果有人感興趣,我很想合作擴展這個項目的功能。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費