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


摘要                                            

運動底盤是移動機器人的重要組成部分,不像激光雷達、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系列【目錄】快速導覽------

第1章:Linux基礎

1.Linux簡介

2.安裝Linux發行版ubuntu系統

3.Linux命令行基礎操作

第2章:ROS入門

1.ROS是什么

2.ROS系統整體架構

3.在ubuntu16.04中安裝ROS kinetic

4.如何編寫ROS的第一個程序hello_world

5.編寫簡單的消息發布器和訂閱器

6.編寫簡單的service和client

7.理解tf的原理

8.理解roslaunch在大型項目中的作用

9.熟練使用rviz

10.在實際機器人上運行ROS高級功能預覽

第3章:感知與大腦

1.ydlidar-x4激光雷達

2.帶自校准九軸數據融合IMU慣性傳感器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.做一個能走路和對話的機器人

第4章:差分底盤設計

1.stm32主控硬件設計

2.stm32主控軟件設計

3.底盤通信協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤里程計標

第5章:樹莓派3開發環境搭建

1.安裝系統ubuntu_mate_16.04

2.安裝ros-kinetic

3.裝機后一些實用軟件安裝和系統設置

4.PC端與robot端ROS網絡通信

5.Android手機端與robot端ROS網絡通信

6.樹莓派USB與tty串口號綁定

7.開機自啟動ROS節點

第6章:SLAM建圖與自主避障導航

1.在機器人上使用傳感器

2.google-cartographer機器人SLAM建圖

3.ros-navigation機器人自主避障導航

4.多目標點導航及任務調度

5.機器人巡航與現場監控

第7章:語音交互與自然語言處理

1.語音交互相關技術

2.機器人語音交互實現

3.自然語言處理雲計算引擎

第8章:高階拓展

1.miiboo機器人安卓手機APP開發

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章將持續更新,敬請關注-----------------

 

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

關於我們:

視頻教程:

 

https://www.bilibili.com/video/av61448040


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM