摘要:一硬件框架與模型設(shè)計(jì)機(jī)械臂最核心的部分應(yīng)該就是關(guān)節(jié)部分的伺服電機(jī)了,針對(duì)與文稿中的設(shè)計(jì)思路,每個(gè)伺服電機(jī)都為一獨(dú)立的控制系統(tǒng),并通過總線的形式獲取數(shù)據(jù)并控制。
### DIY桌面機(jī)械臂__FOC電機(jī)驅(qū)動(dòng)器(#002)
? 之前寫了個(gè)設(shè)計(jì)桌面機(jī)械臂的文稿,本來按照流程要先對(duì)做一些基礎(chǔ)的仿真和測(cè)試、可行性分析,但是后來覺得可以在實(shí)作過程中邊研究邊制作;而且看了一下高級(jí)的伺服電機(jī)機(jī)器人節(jié)點(diǎn)咱也買不起,就想從零開始學(xué)習(xí)并設(shè)計(jì)機(jī)器人模組,本人不是機(jī)械工程出生,但對(duì)控制類的系統(tǒng)有濃厚興趣,便開始執(zhí)行并在博客中分享該項(xiàng)目的過程,并希望能和大家一起討論。
? 設(shè)計(jì)機(jī)械臂最核心的部分應(yīng)該就是關(guān)節(jié)部分的伺服電機(jī)了,針對(duì)與DIY文稿中的設(shè)計(jì)思路,每個(gè)伺服電機(jī)都為一獨(dú)立的控制系統(tǒng),并通過CAN總線的形式獲取數(shù)據(jù)并控制。
? 測(cè)試電機(jī)選擇2804云臺(tái)電機(jī),是個(gè)7個(gè)極對(duì)數(shù)的無刷電機(jī),至于為什么選這個(gè),淘寶上幾元就能買到。初步考慮,硬件驅(qū)動(dòng)的pcb部分與電機(jī)安裝一體。
? 三相MOS驅(qū)動(dòng)器用的是L6234P,最大電壓52V,瞬時(shí)最大電流5A,讓這個(gè)小電機(jī)轉(zhuǎn)起來應(yīng)該是綽綽有余。單片機(jī)還是選用比較常用的STM32F103C8T6,但是最近價(jià)格漲的厲害,就換成了GD32同類型,傳感器采用磁感應(yīng)器件AS5600,角度分辨率是12位,電壓采用12V供電,通過MT2492 DCDC降壓到5V。
? 這里給出無刷電機(jī)驅(qū)動(dòng)器的硬件原理圖與PCB圖:
?
?
? 底層 頂層
? 為了方便設(shè)計(jì)與安裝,這里把電機(jī)和驅(qū)動(dòng)板繪制成3D模型,具體如下:
? 至于為什么設(shè)計(jì)的電路板比電機(jī)大一圈,看起來不緊湊,是因?yàn)闉榱税惭b孔的位置以及較多的元器件,實(shí)在無法縮小板子的體積,但是對(duì)后面的設(shè)計(jì)與測(cè)試影響不是很大。
? 拿到板子和器件后,立馬進(jìn)行焊接與測(cè)試,下圖是單面焊接完成的情況。
? 直到編寫軟件才發(fā)現(xiàn)在原理圖中根本就沒有AS5600的接口,往往檢查好pcb的規(guī)則后就應(yīng)該是設(shè)計(jì)投板的最后一步了,這樣的錯(cuò)誤確實(shí)足夠愚蠢的。
?
后來,直接通過跳線到PB11,PB10的兩個(gè)引出來的焊盤上,才通過程序測(cè)試。
? 關(guān)于中間那部分支撐是根據(jù)電路板的結(jié)構(gòu)去設(shè)計(jì),但是感覺這樣設(shè)計(jì)的問題在于每修改一次電路后,與之接觸的部分模塊都要重新設(shè)計(jì)。!
首先要做的就是把單個(gè)模塊都調(diào)通,再進(jìn)行下一步的操作
其次再進(jìn)行pid的參數(shù)調(diào)節(jié),達(dá)到比較合適的狀態(tài)
首先進(jìn)行AS5600的傳感器參數(shù)讀取,并通過串口打印出來觀察,一開始對(duì)于I2C協(xié)議,想到的是STM32的硬件I2Cmaster,因?yàn)橄噍^于模擬IO,響應(yīng)會(huì)快一些,并且不會(huì)占用cpu資源,但是后來測(cè)試發(fā)現(xiàn)系統(tǒng)的中斷對(duì)快速讀取的I2C程序部分有影響,會(huì)直接卡死,所以后來還是選擇了模擬IO的方式。
這里采用了simple foc的設(shè)計(jì),并實(shí)現(xiàn)了電機(jī)的開環(huán)運(yùn)行。
? 給出控制電機(jī)的核心代碼,由于沒有加積分,所以存在的靜態(tài)誤差讓人很難以接受,后續(xù)再進(jìn)行改進(jìn)
void my_close_p_con(void){ float a_er=0; float s_a=0; float an_p_cofe=15; //角度的比例參數(shù) float vq_p_cofe=30; //力矩的比例參數(shù) float vq_d_cofe=450; //力矩的微分參數(shù) static float a_er_l=0; float an_pid_o=0; //角度pid輸出 float vq_pid_o=0; //力矩pid輸出 float an_pid_max=0.3; //最大牽引角度(我也不知道為啥我要這么命名) float d_dat=0; //微分量 float ang_shift=0; //絕對(duì)的角度控制參數(shù) s_a=FilterDeal(getAngle()); //濾波后的電機(jī)角度值 a_er=target_angle-s_a; //誤差值 an_pid_o=a_er*an_p_cofe; //角度只有比例控制 if(an_pid_o>an_pid_max)//限幅 { an_pid_o=an_pid_max; } else if(an_pid_o<-an_pid_max)//限幅 { an_pid_o=-an_pid_max; } d_dat=a_er-a_er_l; //微分量的輸出等于這次的誤差減去上一次誤差 vq_pid_o=fabs(a_er*vq_p_cofe+d_dat*vq_d_cofe); //力矩的參數(shù)控制,比例加微分(因?yàn)檎鹗巼?yán)重,所以加了d) if(vq_pid_o>max_p) //力矩限幅 { vq_pid_o=max_p; } ang_shift=init_ang_bias+s_a+an_pid_o; //絕對(duì)角度等于靜態(tài)校準(zhǔn)偏差加上跟蹤的角度值加上pid的偏移量實(shí)現(xiàn)角度控制 S_Uq=vq_pid_o; move(ang_shift); //運(yùn)行 a_er_l=a_er; //保存誤差
更新時(shí)間:2021 - 9 - 6
持續(xù)更新,一起交流!??!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119499.html
摘要:有刷電機(jī)結(jié)構(gòu)簡(jiǎn)單開發(fā)久技術(shù)成熟響應(yīng)速度快,起動(dòng)扭矩大運(yùn)行平穩(wěn),起制動(dòng)效果好控制精度高使用成本低,維修方便而無刷電機(jī)由于無電刷,具有低干擾噪音低運(yùn)轉(zhuǎn)順暢壽命長(zhǎng)低維護(hù)成本等優(yōu)點(diǎn)。電機(jī)控制方式力矩控制指定電機(jī)提供設(shè)置大小的力矩。 ...
摘要:支持顯示控制器,,,,,,,,,,,,,,,,,,,,,,等。和的功能包括包括所有圖形程序線框圓畫。支持很豐富的字體庫。僅文本輸出字符設(shè)備。僅允許使用每個(gè)字符固定大小像素的字體。直接寫到顯示屏上,無需微控制器中的緩沖需要消耗較少的空間資源。 ????????~~呆萌的瓦力平衡機(jī)器人~~的顯示...
摘要:力矩控制模式電機(jī)在運(yùn)行過程的電流,始終等于給定的值。設(shè)定電流為零,彈簧不被拉伸。比如機(jī)械臂從點(diǎn)運(yùn)動(dòng)到點(diǎn),并限制揮舞過程中的最大速度和最大力矩。 目錄 說明一、電機(jī)...
摘要:四足仿生機(jī)器人具有高機(jī)動(dòng)性,負(fù)載能力和適應(yīng)能力強(qiáng),可運(yùn)用于物資運(yùn)輸搶險(xiǎn)救援等方面,具有廣闊前景。由于制作電機(jī)狗需要高昂的成本。自主設(shè)計(jì)制造一款舵機(jī)狗來學(xué)習(xí)研究四足機(jī)器狗的步態(tài)算法是一件性價(jià)比極高且很有意義的一件事。 文章目錄 前言 一、初步了解四足結(jié)構(gòu) 1.1.2串聯(lián)機(jī)構(gòu) 1.2?...
閱讀 949·2021-09-27 13:36
閱讀 905·2021-09-08 09:35
閱讀 1075·2021-08-12 13:25
閱讀 1447·2019-08-29 16:52
閱讀 2915·2019-08-29 15:12
閱讀 2736·2019-08-29 14:17
閱讀 2622·2019-08-26 13:57
閱讀 1021·2019-08-26 13:51