标题: (机器人)想用一个51单片机控制同时多个电机,并且能够控制步进电机的旋转角度 [打印本页]

作者: LMing0822    时间: 2021-6-4 17:43
标题: (机器人)想用一个51单片机控制同时多个电机,并且能够控制步进电机的旋转角度
各位大佬,求助!!本人想做一个六自由度机器人控制系统。。我的方案是这样的。先运动学算出来各个机器人关节需要的位移角度,然后用单片机控制各关节的步进电机旋转。打算一个单片机控制3个步进电机,并且能使步进电机转动一定角度就停止。请问该怎么编程啊,往哪个方向能实现这个功能。。
还有就是怎么实现pc机和单片机之间的数据通讯。我想用来传输转动速度和转动角度。

作者: jfmdam    时间: 2021-6-5 00:42
PC机和单片机通讯要做串口通讯,如果用串口助手传输数据的话,那就写一个串口通讯的函数就行了,论坛里应该有,,单片机控制步进电机的话最好用两片单片机控制,一片可能不够
作者: fefen0    时间: 2021-6-5 07:22
电机控制,PWM,串口,和C语言,自己掌握。
作者: glinfei    时间: 2021-6-5 08:40
1.数据传输有线的直接上串口,无线的用蓝牙这些都是现成的,不会stm32你就用arduino做,51的算力不行;2.控制较多个步进电机用A4988吧,两个口控制一个;3.前两项都是看看就会了,关键你数学行不行啊,比如一个关节的单杆机器人的三次多项式系数会不会解?
作者: man1234567    时间: 2021-6-7 20:15
现在的51单片机40多个脚至少可以控制6个步进电机,所以按你的问题程度可以直接上电动汽车或火箭,因为从难度上看差不太多。
作者: 00云梦泽00    时间: 2021-6-7 20:53
太高看51的运算能力了吧  估计达不到你预想的效果
作者: hz_dyg    时间: 2021-6-7 20:55
man1234567 发表于 2021-6-7 20:15
现在的51单片机40多个脚至少可以控制6个步进电机,所以按你的问题程度可以直接上电动汽车或火箭,因为从难 ...

话糙理不糙,不是什么都可以做的,但也不是不能做,折腾够了,自然就进步了!
作者: glinfei    时间: 2021-6-8 09:07
hz_dyg 发表于 2021-6-7 20:55
话糙理不糙,不是什么都可以做的,但也不是不能做,折腾够了,自然就进步了!

普通的51直连A4988,就可以控制16个步进电机,但它算力不行啊,解算一个关节做平滑运动系数都困难,更不要说矩阵了。我觉得做机器人就要有个样子,不能搞个软启动就叫机器手吧?
作者: 无心法师III    时间: 2021-6-8 21:12
步进电机的带负载能力不是太强,设计的时候得注意机器人的大小和重量;编程方面得用case,switch等语句实现多个程序同时运行,以达到同时控制多个电机的目的
作者: 无心法师III    时间: 2021-6-8 21:15
PC机和单片机之间的数据通讯可以通过设置单片机的串行口控制寄存器SCON来实现多机通信
作者: yabiyff    时间: 2021-6-8 21:18
旋转角度还是用舵机吧,步进电机负载大了或者频率高了都会失步。
作者: shumivan    时间: 2021-6-15 13:52
角度使用编码器,再不行舵机也是行的.使用PWM驱动.
作者: kimoye    时间: 2021-6-16 11:04
第一:不建议用步进电机,建议用永磁同步电机。
作者: kimoye    时间: 2021-6-16 11:06
第二:数据通讯可以用村口通信,速率要求不高一般都是串口通信
作者: 李die    时间: 2023-5-26 21:05
大佬,有求到吗,求分享,可花钱
作者: 涅槃重生1    时间: 2023-5-26 21:55
角度控制用舵机实现,实现pc机和单片机之间的数据通讯用串口通信实现
作者: nightdday    时间: 2023-5-27 11:08
可以使用串口接口,如RS232、RS485等,来通过串口将数据发送到单片机
作者: chxelc    时间: 2023-5-27 15:24
单片机用4个IO口,通过ULN2003A芯片放大后控制四相五线步进电机。单片机与计算机通信用串口即可。
以下为四相八拍方式驱动的 顺时针/逆时针/停止函数,供参考。

//顺时针转动 四相八拍驱动顺序 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);//转速调节
       
        IN1=1;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=1;IN3=1;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=0;IN3=1;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=0;IN3=1;IN4=1;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//转速调节
       
        IN1=1;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//转速调节

}
//逆时针转动 四相八拍驱动顺序 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);//转速调节
       
        IN1=0;IN2=0;IN3=0;IN4=1;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=0;IN3=1;IN4=1;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=0;IN3=1;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=1;IN3=1;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=0;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=1;IN2=1;IN3=0;IN4=0;
        Delay_xms(M_Speed);//转速调节
       
        IN1=1;IN2=0;IN3=0;IN4=0;
        Delay_xms(M_Speed);//转速调节

}
//停止转动
void MotorStop(void)
{
        IN1=0;IN2=0;IN3=0;IN4=0;
        Delay_xms(4);//转速调节
}
作者: coody_sz    时间: 2023-5-27 18:24
步进电机本身就可以控制角度和速度。
现在的单片机速度快,哪怕用STC8H系列,同时控制4个步进电机,每个最高20KHz,或者同时控制8个步进电机,每个最高10KHz。步进电机细分越高,则要求的频率就越高,但是大部分应用其机械精度都不高,所以我一般使用4~8细分就够了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1