SLAM+語音機器人DIY系列:(四)差分底盤設計——1.stm32主控硬體設計

来源:https://www.cnblogs.com/hiram-zhang/archive/2019/02/19/10403600.html
-Advertisement-
Play Games

摘要 運動底盤是移動機器人的重要組成部分,不像激光雷達、IMU、麥克風、音響、攝像頭這些通用部件可以直接買到,很難買到通用的底盤。一方面是因為底盤的尺寸結構和參數是要與具體機器人匹配的;另一方面是因為底盤包含軟硬體整套解決方案,是很多機器人公司的核心技術,一般不會隨便公開。出於強烈的求知欲與學習熱情 ...


摘要                                            

運動底盤是移動機器人的重要組成部分,不像激光雷達、IMU、麥克風、音響、攝像頭這些通用部件可以直接買到,很難買到通用的底盤。一方面是因為底盤的尺寸結構和參數是要與具體機器人匹配的;另一方面是因為底盤包含軟硬體整套解決方案,是很多機器人公司的核心技術,一般不會隨便公開。出於強烈的求知欲與學習熱情,我想自己DIY一整套兩輪差分底盤,並且將完整的設計過程公開出去供大家學習。說乾就乾,本章節主要內容:

1.stm32主控硬體設計

2.stm32主控軟體設計

3.底盤通信協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤裡程計標



1.stm32主控硬體設計              

完整的stm32主控硬體包括:帶霍爾編碼器的直流減速電機、電機驅動、stm32單片機開發板等配件。

1.1.帶霍爾編碼器的直流減速電機    

(圖1)帶霍爾編碼器的直流減速電機

要製作一臺機器人底盤,需要一套完整的電機部件,就如圖1中看到的一樣,需要有輪胎、聯軸器、減速箱、電機和編碼器,具體選型可以參考這幾個方面的因素:

輪胎:直徑越大,小車的越障能力越好,但會降低小車爬坡的馬力;

聯軸器:選擇跟輪胎與電機輸出軸尺寸相匹配的型號;

減速箱:減速比決定電機輸出軸的扭矩,減速比越大,輸出軸扭矩越大,但輸出軸轉速越慢;

電機:一般是12V的電機,直流有刷簡單易控制;

編碼器:一般為增量式正交編碼器,編碼線數根據實際需要精度進行選擇。

(圖2)電機接線埠

如圖2,可以清楚的看到電機的接線埠,其實電路板上也是有絲印標註的。接線分為兩類,一類是電機控制(電機線+、電機線-),另一類是編碼器(編碼器5V、編碼器A相、編碼器B相、編碼器GND)。

1.2.電機驅動電路             

(圖3TB6612FNG電機驅動

瞭解了電機的構造知識後,就來介紹一下如何將電機驅動起來。如圖3所示,TB6612FNG是很流行的一款電機驅動晶元,相比於傳統的L298N效率上提升很多,而且體積大幅減小。TB6612FNG是雙驅動,也就是可以驅動兩個電機;TB6612FNG每通道輸出最高1.2 A的連續驅動電流,啟動峰值電流達2A/3.2 A(連續脈衝/單脈衝);4種電機控制模式:正轉/反轉/制動/停止;PWM支持頻率高達100 kHz

(圖4TB6612FNG引腳定義

TB6612FNG的引腳定義,如圖4所示,引腳分為電源腳、控制輸入腳、控制輸出腳。

VM:為電機驅動電壓,根據實際電機額定電壓選擇,推薦使用12V供電;

VCC:邏輯電源供電,推薦使用5V供電;

STBY:待機/工作狀態切換,低電平待機,高電平工作;

 

PWMAA埠電機PWM調速信號輸入;

AIN1AIN2A電機轉向控制信號輸入;

PWMBB埠電機PWM調速信號輸入;

BIN1BIN2B電機轉向控制信號輸入;

 

AO1AO2A埠電機驅動信號輸出;

BO1BO2B埠電機驅動信號輸出。

(圖5TB6612FNG控制信號真值表

最後,我們來看一下控制信號的邏輯真值表,如圖5,輸入由單片機IO口給定,再結合PWM信號,便可以實現對電機的正/反轉和調速控制了。由於兩路電機控制是一模一樣的,所以另一路控制信號的邏輯真值表就不重覆贅述了。

1.3.霍爾正交編碼器原理         

(圖6)霍爾正交編碼器原理

如果兩個信號相位相差90度,則這兩個信號稱為正交。由於兩個信號相位相差90度,因此可以根據兩個信號哪個先哪個後來判斷方向。利用單片機的IO口對編碼器的AB相進行捕獲,很容易得到電機的轉速和轉向。霍爾正交編碼器原理,如圖6

1.4.stm32單片機最小系統       

stm32單片機常用的型號是stm32f103,根據具體需求的Flash容量、RAM容量、IO口數量進行選擇,下麵是常用的一些型號參數對比,如圖7

(圖7stm32f103系列單片機參數對比

考慮到stm32主控只是用於兩個電機的控制,資源開銷不算大,需要用到的IO口也不是很多,定時器資源也不多,出於性價比考慮推薦stm32f103c8t6這個型號。

(圖8stm32f103f103c8t6最小系統板

如圖8所示,stm32f103c8t6最小系統板比較簡潔,控制兩個電動機,只需要用兩個IO口輸出2PWM分別給兩個電機調速,用4IO口分別控制兩個電機的方向,另外4IO口分別接兩個電機的正交編碼器輸入,UART1UART2跟上位機連接分別用於程式debug與上層指令控制。

1.5.stm32主控硬體整體框圖     

第一個版本的硬體電路是用飛線連接的各個模塊,電路穩定性很差,而且外觀極其醜陋。痛定思痛,決心老老實實設計電路板,把各模塊集成到一個板子上,經過兩次改板打樣,終於成功了。如圖9,板子簡潔美觀,而且接插端子佈局合理,符合我一向嚴苛的標準。

(圖9stm32主控電路板

好了,有了這個電路板就好辦多了。針對這個電路板,講講我的設計思路吧。首先需要設計一個電源系統,用於單片機供電、電機供電、外部設備供電,同時還要考慮電源反接、過壓、短路等保護;然後需要設計一個stm32單片機最小系統電路;最後圍繞stm32最小系統,需要設計電機驅動、UARTUSB、編碼器信號捕獲這些外圍電路,同時還要考慮電機堵轉保護、電機對系統電源干擾等問題。逐一採坑之後,差不多就完成設計了。stm32主控硬體整體框圖,如圖10

(圖10stm32主控硬體整體框圖

後記                

如果大家對博文的相關類容感興趣,或有什麼技術疑問,歡迎加入下麵的《SLAM+語音機器人DIY》QQ技術交流群,一起討論學習^_^


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 索引: 目錄索引 一.API 列表 C# 代碼中 String.Contains("conditionStr") 生成 SQL 對應的 like '%conditionStr%' 如:.Queryer<Agent>() ... ... .Where(it => it.PathId.Contains( ...
  • 對象深拷貝 計算最大公約數 數組與結構體相互轉換 字元串與char數組、byte數組轉換 Windows消息處理 字元串編碼轉換 通過反射獲取對象所有屬性集合,以鍵值對形式展現 實體類轉SQL條件字元串 待續 ...
  • 一、為什麼要學習Razor? 可以讓伺服器代碼(就是c#和vb)嵌入到網頁中,也就是說這個頁面中包含html代碼和C#(vb)代碼。基於伺服器的代碼可以在網頁傳送給瀏覽器時,創建動態 Web 內容。當一個網頁被請求時,伺服器在返回頁面給瀏覽器之前先執行頁面中的基於伺服器的代碼。通過伺服器的運行,代碼 ...
  • Quartz.NET是一個強大、開源、輕量的作業調度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改寫,可用於winform和asp.net應用中。它靈活而不複雜。你能夠用它來為執行一個作業而創建簡單的或複雜的作業調度。它有很多特征,如:資料庫支持,集群,插件,... ...
  • C#:使用Parallel並行執行任務 1. 代碼實現 2. 運行結果: ...
  • 前幾個章節我們講到Windows Server 2016-圖形化新建域用戶(一),本章節我們簡單講解下如何通過命令批量創建域用戶,以便高效完成日常工作中實際批量創建用戶需求,內容涉及dsadd user、net user、new-aduser,具體信息如下:dsadd user創建用戶:將單個用戶添... ...
  • 摘要 運動底盤是移動機器人的重要組成部分,不像激光雷達、IMU、麥克風、音響、攝像頭這些通用部件可以直接買到,很難買到通用的底盤。一方面是因為底盤的尺寸結構和參數是要與具體機器人匹配的;另一方面是因為底盤包含軟硬體整套解決方案,是很多機器人公司的核心技術,一般不會隨便公開。出於強烈的求知欲與學習熱情 ...
  • 功能變數名稱系統(DNS)是包含TCP / IP的行業標準協議套件之一,DNS客戶端和DNS伺服器一起為電腦和用戶提供電腦名稱到IP地址映射名稱解析服務。在Windows Server 2016中,DNS是可以使用伺服器管理器或Windows PowerShell命令安裝的伺服器角色。 如果要安裝新的A... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...