• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

多轴的机械臂怎么控制

xbk_776023 2021-01-18 浏览量:1130
用stm32控制舵机带动的机械臂,我的目标是先一个轴动,再另一个轴动,但是我用延时函数,好像并没有延时的作用,那我该怎么解决?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个是一个比较复杂的过程,其实更准确的是应该在一个处理前一个轴运动到位后再触发后一个轴运动,即变成链式的,而不是用延时(因为运动总时间不好控制,甚至前一个运动可能失败的),大致算法表现为

    D3(ABC){

    {

    DA(A); // 处理A轴运动

    DB(B);// 处理B轴运动

    DC(C);// 处理C轴运动

    }

    • 发布于 2021-01-18
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 这个要看下你程序的延时函数是怎么实现的了,这种应该是逻辑问题
    • 发布于2021-01-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 延时时间长一些,因为当执行第一个舵机完毕后再延时,这个时候第一个舵机还没完全到位就执行第二个舵机了,所以你感觉没有延时作用,你可以再增加一些延时看看
    • 发布于2021-01-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 1-通过LED实验看看延时函数是否有问题

    2-舵机不是发脉冲之后就立即能执行到位的,需要持续的脉冲并等待,无法控制速度的,这个延时时间要把握好

    3-要想脉冲结束就立即能执行到位的请用步进电机

    • 发布于2021-01-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 但是函数是最简单的空操作,不应该没有作用的。我反而认为是你驱动方式的问题,再说stm32有系统自带的延时函数相当准确,先上你的代码看一看。
    • 发布于2021-01-19
    • 举报
    • 评论 1
    • 0
    • 0
xbk_776023 回复了 耳根的耳根 :int main(void) { Stm32_Clock_Init(9); //系统时钟设置 uart_init(72115200); //串口初始化为 115200 delay_init(72); //延时初始化 TIM3_PWM_Init(1999719); //PWM频率为50hz,20ms脉宽 while(1) { ANGLE1=1850; //CH1 PA6口对应舵机1 1850对应1.5ms高电平(转90度) delay_ms(1000); delay_ms(1000); ANGLE2=1850; //CH2 PA7口对应舵机2 } }不知道这样您是否能明白,还有一些使能初始化函数应该不重要,这个主函数逻辑我不知道有没有问题?您说的驱动方式应该是没问题的,就是20毫秒的脉冲中有0.5到2.5毫秒的高电平(对应0到180度),而32可以产生p w m,只要进行相关设置即可以达到我想要的高电平时长 回复

  • 用定时器吧,看用个LED试一下你的定时,或是你的延时函数,测一下时间,再来进行控制
    • 发布于2021-01-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

多轴的机械臂怎么控制