OpenEdv-开源电子网

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

步进电机求助!!

[复制链接]

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
发表于 2018-3-28 22:30:47 | 显示全部楼层 |阅读模式
6金钱
在实现步进电机速度的任意控制遇到了一些问题:驱动模块用的是A4988+cnc shield v3,单片机stm32f103c8t6
方法:
1、调速:通过【只改变定时器的psc值->改变输出的脉冲频率】控制两个电机的转速,所以要用到两个定时器,但是时钟都是72mhz的。
2、停动:直接失能或使能定时器控制两个电机的动或停,自动重装载是使能的。
问题:
1、在【直接更改psc或者停了之后重新使能的时候】轮子有时候会很抖动的,虽然可以调速,但导致步进的精度降低
2、这样的控制方式有什么缺陷?
3、有没有什么办法可以像调整pwm占空比那样简便的方法去控制pwm脉冲频率吗?(产生两路的)
虽然看了好多的帖子,但是问题一直都没得到解决,定时器门控模式似乎可以,但只能产生一路,还要两个定时器(对么,没用过,不太确定)
恳求各位指点迷津!!

最佳答案

查看完整内容[请看2#楼]

我调速也是改变的ARR的值,不是改变的PSC。。。我这里说的调速不是曲线平滑的,是由10cm/s变为20cm/s那种。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-3-28 22:30:48 | 显示全部楼层
曙光流泪 发表于 2018-3-29 13:31
你之前调速也是用这种方法吗。。如果更改arr会不会比更改psc好些?

我调速也是改变的ARR的值,不是改变的PSC。。。我这里说的调速不是曲线平滑的,是由10cm/s变为20cm/s那种。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-3-29 01:19:05 | 显示全部楼层
帮顶
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-3-29 09:46:13 | 显示全部楼层
抖动的问题没有遇到过。。。是不是驱动器设置之类的问题,定时器毕竟只是产生PWM波驱动转动的,抖动应该是电机力矩和负荷之类的问题。两个电机如果不是转速相同的话,就要用两个定时器。因为一个定时器虽然有很多通道,但是时基部分都是公用的,所以 每个通道输出的PWM频率也是一样的,并不能单独设置一个通道的分频系数。
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-3-29 13:31:13 | 显示全部楼层
candylife9 发表于 2018-3-29 09:46
抖动的问题没有遇到过。。。是不是驱动器设置之类的问题,定时器毕竟只是产生PWM波驱动转动的,抖动应该是 ...

你之前调速也是用这种方法吗。。如果更改arr会不会比更改psc好些?
回复

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-29 13:39:18 | 显示全部楼层
抖动是因为在调整频率(计数上限)时,在上升阶段,新顶端值低于当前值,使得计数器必须达到数值类型最大值之后重新计数(一个长周期的停转),造成脉冲间隔超长一次引起。建议仔细查看:影子寄存器和更新事件
回复

使用道具 举报

22

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
807
金钱
807
注册时间
2016-5-16
在线时间
118 小时
发表于 2018-3-29 13:52:27 | 显示全部楼层
步进电机驱动
1  设置arr 与 psc  溢出中断  ,中断服务函数改变 引脚高低电平 pulse_x=~pulse_x  ,改变arr改变频率
2 设置 arr 与psc  输出比较中断  翻转输出   中断服务函数改变 计数值 改变 频率  
哪个好
团战可以不可以输,TM也必须死
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-3-29 14:03:06 | 显示全部楼层
孟亮 发表于 2018-3-29 13:39
抖动是因为在调整频率(计数上限)时,在上升阶段,新顶端值低于当前值,使得计数器必须达到数值类型最大值 ...

我的自动重装载是开启的,如果我在当前周期里面更改psc(当前脉冲A),那么在更新事件发生后它产生的就是另一个脉冲B了吧?因为在更新事件发生后才能写入psc(我的理解有没有错?)
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-3-29 14:09:48 | 显示全部楼层
xinjiandianzi 发表于 2018-3-29 13:52
步进电机驱动
1  设置arr 与 psc  溢出中断  ,中断服务函数改变 引脚高低电平 pulse_x=~pulse_x  ,改变ar ...

用中断感觉太占用资源了。。
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-3-30 14:59:04 | 显示全部楼层
本帖最后由 candylife9 于 2018-3-30 15:00 编辑
candylife9 发表于 2018-3-30 14:57
我调速也是改变的ARR的值,不是改变的PSC。。。我这里说的调速不是曲线平滑的,是由10cm/s变为20cm/s那种 ...

改变周期用ARR吧,改PSC会怪怪的,毕竟是时基部分的东西,PSC固定就可以了,PSC改变的话,整个定时器计数脉冲会有短暂不稳定吧。
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-3-30 15:56:15 | 显示全部楼层
谢谢
回复

使用道具 举报

33

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
420
金钱
420
注册时间
2017-11-16
在线时间
120 小时
发表于 2018-3-31 17:02:06 | 显示全部楼层
曙光流泪 发表于 2018-3-29 14:09
用中断感觉太占用资源了。。

请问楼主用的什么方法,谢谢了
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-3-31 19:41:19 | 显示全部楼层
本帖最后由 曙光流泪 于 2018-3-31 19:43 编辑


C:\Users\Administrator\Desktop
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-3-31 19:42:24 | 显示全部楼层
逝忆晨 发表于 2018-3-31 17:02
请问楼主用的什么方法,谢谢了

//通过改变arr,从而改变pwm频率
void Motor_Move(u16 left_arr,u16 left_ccr1,u16 right_arr,u16 right_ccr1)
{
        MOTOR_ARR_LEFT = left_arr;
        MOTOR_CCR1_LEFT = left_ccr1;
        MOTOR_ARR_RIGHT = right_arr;
        MOTOR_CCR1_RIGHT = right_ccr1;
}
两个不同的定时器

回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2016-10-26
在线时间
35 小时
发表于 2018-4-1 14:53:08 | 显示全部楼层
楼主,我这有个较为成熟的控制模型
我是用更改PSC和ARR的值实现超短和超长的脉冲间隔变换的。
因为要联动和实时控制电流,所以使用了4个定时器直接中断响应交叉控制4路脉冲
四轴的混合运算带电流控制总的输出能有182k左右,脉冲输出很稳定。1000节点的T/S曲线变速,还支持各种骚运行方式
算法在完善中,全部完成再开源。有问题可以来提问
http://www.openedv.com/forum.php ... mp;extra=#pid820401
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2016-10-26
在线时间
35 小时
发表于 2018-4-1 14:57:48 | 显示全部楼层
楼主第一个问题,只更改psc,会不会是低速时计数值溢出了
第三个问题,如果定速很简单,细化变速有一些数据是要进行运算的,特别还遇到带速变速运算更麻烦一些
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2017-9-28
在线时间
18 小时
 楼主| 发表于 2018-4-1 16:04:37 | 显示全部楼层
unli 发表于 2018-4-1 14:57
楼主第一个问题,只更改psc,会不会是低速时计数值溢出了
第三个问题,如果定速很简单,细化变速有一些数 ...

谢谢提醒,我现在更改arr。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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