標(biāo)題: (機(jī)器人)想用一個(gè)51單片機(jī)控制同時(shí)多個(gè)電機(jī),并且能夠控制步進(jìn)電機(jī)的旋轉(zhuǎn)角度 [打印本頁]

作者: LMing0822    時(shí)間: 2021-6-4 17:43
標(biāo)題: (機(jī)器人)想用一個(gè)51單片機(jī)控制同時(shí)多個(gè)電機(jī),并且能夠控制步進(jìn)電機(jī)的旋轉(zhuǎn)角度
各位大佬,求助!本人想做一個(gè)六自由度機(jī)器人控制系統(tǒng)。。我的方案是這樣的。先運(yùn)動學(xué)算出來各個(gè)機(jī)器人關(guān)節(jié)需要的位移角度,然后用單片機(jī)控制各關(guān)節(jié)的步進(jìn)電機(jī)旋轉(zhuǎn)。打算一個(gè)單片機(jī)控制3個(gè)步進(jìn)電機(jī),并且能使步進(jìn)電機(jī)轉(zhuǎn)動一定角度就停止。請問該怎么編程啊,往哪個(gè)方向能實(shí)現(xiàn)這個(gè)功能。。
還有就是怎么實(shí)現(xiàn)pc機(jī)和單片機(jī)之間的數(shù)據(jù)通訊。我想用來傳輸轉(zhuǎn)動速度和轉(zhuǎn)動角度。

作者: jfmdam    時(shí)間: 2021-6-5 00:42
PC機(jī)和單片機(jī)通訊要做串口通訊,如果用串口助手傳輸數(shù)據(jù)的話,那就寫一個(gè)串口通訊的函數(shù)就行了,論壇里應(yīng)該有,,單片機(jī)控制步進(jìn)電機(jī)的話最好用兩片單片機(jī)控制,一片可能不夠
作者: fefen0    時(shí)間: 2021-6-5 07:22
電機(jī)控制,PWM,串口,和C語言,自己掌握。
作者: glinfei    時(shí)間: 2021-6-5 08:40
1.數(shù)據(jù)傳輸有線的直接上串口,無線的用藍(lán)牙這些都是現(xiàn)成的,不會stm32你就用arduino做,51的算力不行;2.控制較多個(gè)步進(jìn)電機(jī)用A4988吧,兩個(gè)口控制一個(gè);3.前兩項(xiàng)都是看看就會了,關(guān)鍵你數(shù)學(xué)行不行啊,比如一個(gè)關(guān)節(jié)的單桿機(jī)器人的三次多項(xiàng)式系數(shù)會不會解?
作者: man1234567    時(shí)間: 2021-6-7 20:15
現(xiàn)在的51單片機(jī)40多個(gè)腳至少可以控制6個(gè)步進(jìn)電機(jī),所以按你的問題程度可以直接上電動汽車或火箭,因?yàn)閺碾y度上看差不太多。
作者: 00云夢澤00    時(shí)間: 2021-6-7 20:53
太高看51的運(yùn)算能力了吧  估計(jì)達(dá)不到你預(yù)想的效果
作者: hz_dyg    時(shí)間: 2021-6-7 20:55
man1234567 發(fā)表于 2021-6-7 20:15
現(xiàn)在的51單片機(jī)40多個(gè)腳至少可以控制6個(gè)步進(jìn)電機(jī),所以按你的問題程度可以直接上電動汽車或火箭,因?yàn)閺碾y ...

話糙理不糙,不是什么都可以做的,但也不是不能做,折騰夠了,自然就進(jìn)步了!
作者: glinfei    時(shí)間: 2021-6-8 09:07
hz_dyg 發(fā)表于 2021-6-7 20:55
話糙理不糙,不是什么都可以做的,但也不是不能做,折騰夠了,自然就進(jìn)步了!

普通的51直連A4988,就可以控制16個(gè)步進(jìn)電機(jī),但它算力不行啊,解算一個(gè)關(guān)節(jié)做平滑運(yùn)動系數(shù)都困難,更不要說矩陣了。我覺得做機(jī)器人就要有個(gè)樣子,不能搞個(gè)軟啟動就叫機(jī)器手吧?
作者: 無心法師III    時(shí)間: 2021-6-8 21:12
步進(jìn)電機(jī)的帶負(fù)載能力不是太強(qiáng),設(shè)計(jì)的時(shí)候得注意機(jī)器人的大小和重量;編程方面得用case,switch等語句實(shí)現(xiàn)多個(gè)程序同時(shí)運(yùn)行,以達(dá)到同時(shí)控制多個(gè)電機(jī)的目的
作者: 無心法師III    時(shí)間: 2021-6-8 21:15
PC機(jī)和單片機(jī)之間的數(shù)據(jù)通訊可以通過設(shè)置單片機(jī)的串行口控制寄存器SCON來實(shí)現(xiàn)多機(jī)通信
作者: yabiyff    時(shí)間: 2021-6-8 21:18
旋轉(zhuǎn)角度還是用舵機(jī)吧,步進(jìn)電機(jī)負(fù)載大了或者頻率高了都會失步。
作者: shumivan    時(shí)間: 2021-6-15 13:52
角度使用編碼器,再不行舵機(jī)也是行的.使用PWM驅(qū)動.
作者: kimoye    時(shí)間: 2021-6-16 11:04
第一:不建議用步進(jìn)電機(jī),建議用永磁同步電機(jī)。
作者: kimoye    時(shí)間: 2021-6-16 11:06
第二:數(shù)據(jù)通訊可以用村口通信,速率要求不高一般都是串口通信
作者: 李die    時(shí)間: 2023-5-26 21:05
大佬,有求到嗎,求分享,可花錢
作者: 涅槃重生1    時(shí)間: 2023-5-26 21:55
角度控制用舵機(jī)實(shí)現(xiàn),實(shí)現(xiàn)pc機(jī)和單片機(jī)之間的數(shù)據(jù)通訊用串口通信實(shí)現(xiàn)
作者: nightdday    時(shí)間: 2023-5-27 11:08
可以使用串口接口,如RS232、RS485等,來通過串口將數(shù)據(jù)發(fā)送到單片機(jī)
作者: chxelc    時(shí)間: 2023-5-27 15:24
單片機(jī)用4個(gè)IO口,通過ULN2003A芯片放大后控制四相五線步進(jìn)電機(jī)。單片機(jī)與計(jì)算機(jī)通信用串口即可。
以下為四相八拍方式驅(qū)動的 順時(shí)針/逆時(shí)針/停止函數(shù),供參考。

//順時(shí)針轉(zhuǎn)動 四相八拍驅(qū)動順序 A---AB---B---BC---C---CD---D---DA
void MotorCW(uint M_Speed)
{
        IN1=1;IN2=0;IN3=0;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=1;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=1;IN3=1;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=0;IN3=1;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=0;IN3=1;IN4=1;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=1;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)

}
//逆時(shí)針轉(zhuǎn)動 四相八拍驅(qū)動順序 DA---D---CD---C---BC---B---AB---A
void MotorCCW(uint M_Speed)
{
        IN1=1;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=0;IN3=1;IN4=1;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=0;IN3=1;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=1;IN3=1;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=0;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=1;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)
       
        IN1=1;IN2=0;IN3=0;IN4=0;
        Delay_xms(M_Speed);//轉(zhuǎn)速調(diào)節(jié)

}
//停止轉(zhuǎn)動
void MotorStop(void)
{
        IN1=0;IN2=0;IN3=0;IN4=0;
        Delay_xms(4);//轉(zhuǎn)速調(diào)節(jié)
}
作者: coody_sz    時(shí)間: 2023-5-27 18:24
步進(jìn)電機(jī)本身就可以控制角度和速度。
現(xiàn)在的單片機(jī)速度快,哪怕用STC8H系列,同時(shí)控制4個(gè)步進(jìn)電機(jī),每個(gè)最高20KHz,或者同時(shí)控制8個(gè)步進(jìn)電機(jī),每個(gè)最高10KHz。步進(jìn)電機(jī)細(xì)分越高,則要求的頻率就越高,但是大部分應(yīng)用其機(jī)械精度都不高,所以我一般使用4~8細(xì)分就夠了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1