相信這個東西很多人都見過,大佬做的一個機器人
大部分人都是在關注功能本身,只有我看上了這個改裝的小舵機。因為市面上的舵機只能接收PWM信號,進行角度控制。
這就有問題了。
在這種情況下我們只能發送指令,讓舵機運動,卻不能接收指令,從而知道它的運動狀態。同時,想要讓舵機進行反驅,就必須能讓舵機隨時進行輸出力矩的切換。小驅動器支持IIC總線通信,PID閉環控制,位置回傳,還能設置最大的輸出力矩,斷電儲存參數等。
更加詳細的一些內容在readme里面
魔改后的舵機通過I2C接口和控制板進行通信,STM32F4的控制板為主機,舵機為從機。通信的過程始終是主機發起的,主機首先下發位置、參數等指令,然后即時取回相關數據完成一個通信來回。
每個舵機作為從機接收兩個地址的指令:自己的ID號,以及0號廣播。廣播用于在沒有給舵機設置地址的時候作為通配地址使用(比如你剛燒寫完舵機固件,此時舵機的Flash是沒有儲存自己的ID的,只能通過0號地址通信)。
值得注意的是:舵機和主機的上電需要有先后順序,一定要先讓從機初始化完成開始監聽數據,再讓主機發送指令!
如果主機發送指令的時候從機不響應,或者多個舵機地址相同同時響應,都可能引起通信錯誤,因此需要保證上述的順序。
由于硬件上主機和舵機上電都是同時的,所以在主機的固件代碼中,有一個延時2S的代碼(其實可以不用那么久),就是等待舵機都上電初始化完成再開始通信。
調試的時候,一個舵機一個舵機調試,注釋掉其他未連接的舵機的通信代碼,不然也會造成輪詢等待超時。
舵機指令的含義
大概的樣子
改裝后的樣子
在庫里面,我畫圖的地方是舵機庫的位置
一開始的話就看fw這個就行,下面是用較為低級的一個庫寫的。
單獨的keli工程
終于里面的芯片是這樣的,舵機馬達的驅動IC
IC簡單的介紹
DK是右邊的,方便調試和下載,量產的時候就用前面的就行。
右邊就是我們的驅動IC了
這是兩個版本的正反面
當然AD里面可以拿到兩個
LP2992
兩版的原理圖
這個就是LDO,輸入的是5V,輸出就3V3
這個驅動芯片需要5V
3,4是PWM的腳
內部的框圖
這個是控制的真值表
這個是預定的一些參數
典型波形圖
舵機的話,就使用這樣的原理圖
這個是main文件
但是具體的實現是在CPP文件里面
這個主控文件,就是這么簡單
在一開始會聲明兩個對象,一個舵機,一個板子的配置
在這個類里面,他包裝了一下舵機的信息,包括實現的PID功能
這些就是共有的接口
私有的變量,命名清晰贊一個
設置要轉的角度
設置是否開啟舵機
設置轉矩的設置
輸入是是位置和值
這個就是PWM的輸出函數
放大一點看
這個庫函數的參數
-
定時器的句柄,
2.已經被配置好的定時器通道,
3.要對比的寄存器值
電機的轉速是和PWM的占空比成正比的。
PWM波的生成
生成的原理
這里就是使用了兩個定時器
下面是4個定時器的通道
還記得板子的斷電信息存儲的功能嗎?這就是儲存數據
在每次上電后,都會取里面的數據
判斷目前的配置情況
進行數據的賦值
把取到的數據都放在motor的類里面,以便于后面的使用,最后一個就是裝載完成。
初始化兩個PWM的通道
然后這才開始初始化IIC硬件
就是一段代碼了,應該是很簡單的
IIC的寄存器就是這些了
使用7位模式
最后的三行代碼
在從模式下接收一定量的數據,在非阻塞模式下使用中斷 。
param hi2c 指向 I2C_HandleTypeDef 結構的指針,該結構包含 * 指定 I2C 的配置信息。
param pData 指向數據緩沖區的指針
param Size 要發送的數據量 * @retval HAL 狀態
200HZ下獲取數據
頻繁的判斷,舵機要工作的模式
對電壓的測量是使用的回調函數
接下來是大段的協議封裝
也就是我們的中斷回調函數
會先來判斷一下HAL的狀態
這是要發送和接受的I2C數組
看右邊
自己看這個數組的順
使用的是switch的結構來解讀信息
當這個信息是0x01的話,
會從這里的進行一個數據的組裝
TX萬事了RX,安排發送
最后是一個控制數據的發送,從ADC讀取,接著是angle角度的計算,把角度給PID的函數處理,平滑軌跡,最后設置PWM。
代碼還是看的有點粗,還有很多的細節沒有寫,但是學到的東西已經很多了。
不過多數是這樣的。。。確實很強的大佬~
https://github.com/peng-zhihui/ElectronBot
https://www.tech-harry.cn/archives/4511
https://item.szlcsc.com/145106.html
審核編輯:湯梓紅
-
機器人
+關注
關注
211文章
28380瀏覽量
206918 -
PWM
+關注
關注
114文章
5181瀏覽量
213809 -
數字舵機
+關注
關注
1文章
11瀏覽量
6313
原文標題:ElectronBot-數字舵機篇
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論