STM32/STM8技术论坛
直播中

白纸扇

6年用户 59经验值
擅长:嵌入式技术 处理器/DSP 控制/MCU
私信 关注
[问答]

关于控制步进电机有个疑惑?

  我想用STM32发送 特定频率,数量固定的脉冲来控制步进电机,但是这个 脉冲 是很多组 频率不同数量不同的,比如说 以1KHZ的频率发送200个脉冲(这里为方便记为1组数据),电机转动完成后,再发送 2KHZ、300个脉冲(2组数据),后面还有许多。任务是控制3个步进电机的,每个步进电机的都有一套上述的数据。                             目前的问题是:
    如何让这3个步进电机运动的时候每组数据是一一对应的,比如 电机1 1KHZ、200个脉冲;电机2 2KHZ、400个脉冲;电机3 500HZ、100个脉冲。也即 电机1 以1KHZ、转动200个脉冲,同时电机2 以2KHZ、400个脉冲,同时电机3 以500HZ、100个脉冲。
    各位大佬还请多多指导啊

回帖(4)

周大侠

2020-2-19 19:59:52

最佳答案

1-简单点可以这样做,对于STM32来说PWM的频率决定于ARR寄存器,改变ARR寄存器频率就改变了,没问题吧?
2-按照某频率发送,可以产生更新事件中断,就是该频率下发了一个周期的时候产生的中断事件,进去后对中断计数,满足你的该频率脉冲数后,在中断中将ARR寄存器数值修改为下一个频率,同时对应的脉冲数量也做更新就可以了。
3-3个电机就要有3个中断,只要保证中断中处理时间短,不要超过最高频率对用的周期时间就没有问题。
4-优化的方案就是借助DMA对脉冲数量计数,不必每一个脉冲都进中断了。
5-还有一种优化方案就是利用主从定时器(STM32),从定时器对主定时器的脉冲数量计数,到达要求后触发中断,进去后更新主定时器ARR和从定时器计数的数值,但是受限于硬件,需要连接特定的引脚,并且也支持不了几组电机,优点是:效率确实高。
1 举报

白纸扇

2020-2-20 13:00:53
没有人吗?
举报

perry

2020-2-27 14:51:10
是说一个端口发送3种不同频率的数据吗?
举报

perry

2020-2-27 14:54:48
那样步进电机端需要能识别相应频率的功能, 如用MCU的PWM捕捉功能去识别。
2 举报
  • 白纸扇: 不是说一个端口发送3种,是一个单片机发送的 另外也不仅仅只是3种不同的频率,还有脉冲数的精确控制,同时还得保证是同时发送的
  • 五年1 回复 白纸扇: 用三个PWM通道不行吗?STM32定时器那么多。

更多回帖

发帖
×
20
完善资料,
赚取积分