OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2191|回复: 2

用定时器 输出比较 实现步进电机的加减速

[复制链接]

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2023-7-11
在线时间
0 小时
发表于 2023-7-11 22:35:32 | 显示全部楼层 |阅读模式
4金钱
本帖最后由 joyluner 于 2023-7-11 22:39 编辑

我在看完野火电机系列中的步进电机梯形加减速例程后,想用一个定时器的四个通道  输出比较  去控制四个步进电机梯形加减速。
用串口发送命令,执行 电机以给定的加速度、减速度、最大加速度  转动给定的步数。这只是开始,具体原理是,先用stepper_move_T()函数计算本次转动的参数,包括达到最大速度的步数、开始减速的步数等参数,第一次设置对应定时器通道的比较值。
之后就疯狂进入定时器输出比较的中断,每进两次中断输出完整的脉冲后就计算下一次中断的间隔时间,然后把这个间隔写进定时器通道的比较值。除了中间的匀速过程,加速和减速期间的比较值经常要改,从而实现了步进电机的加减速。
我的问题是,
1.  TIM3定时器的通道开了两个及以上后,其通道一输出的PWM波很稳定地丢步,是指发送转5圈但实际离五圈还差个几十度。但只开一个通道就没问题,我试着TIM3只开通道一,再加TIM2的通道二,还是会发生很稳定的丢步,感觉是哪里处理速度不够,但说不上来;
2.  假如我开了TIM3的通道一和通道二 输出比较  ,除了通道一会稳定丢步以外,通道二输出的速度非常缓慢,还停不下来。
我怀疑是定时器和通道配置出了问题,我用的是CubeMX配置的,大家能帮我看看吗


附上源文件,用的F103精英板,求求大神帮忙看看


串口发送命令

串口发送命令

定时器配置

定时器配置
2023-07-11_22-37-22.png
2023-07-11_22-37-16.png

TEST06_TIM_NVIC_MOTOR.zip

7.7 MB, 下载次数: 10

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2023-7-12 10:43:06 | 显示全部楼层
中断里别用printf,别往串口发数据,因为很耗时,可能下次中断已产生但上次的中断还未处理完。
傲游截图20230712104054.jpg
专治疑难杂症
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2023-7-11
在线时间
0 小时
 楼主| 发表于 2023-7-12 12:30:44 | 显示全部楼层
LcwSwust 发表于 2023-7-12 10:43
中断里别用printf,别往串口发数据,因为很耗时,可能下次中断已产生但上次的中断还未处理完。

好的,我只是想测试一下能不能触发定时器2的中断,但还解决不了问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 04:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表