OpenEdv-开源电子网

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

关于步进电机控制方式以及其他中断对电机运行影响的问题

[复制链接]

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
发表于 2018-8-17 11:13:46 | 显示全部楼层 |阅读模式
18金钱
楼主手上做的事是需要步进电机正转和反转的,不需要进行调速,所以控制就是用控制字来实现,就是设一个数组,电机对应相给相应io口进行接通和关闭,现在就是在电机转动的过程中需要开定时器中断去检测某io的电平,这个电平改变是连接的一个传感器板子,从而发送数据到串口屏上去提供查询,因为楼主之前都是把每个部分分开调试的,现在要把这些整合起来,现在就发现有一个问题就是如果我电机在转动的过程中,就是在执行电机转动程序时,有了定时器中断和串口查询中断,这个定时器是5ms进入一次中断的,那这样一来,程序就会去中断执行服务函数,如果是这样,电机的转动是不是就会被影响了,我看pwm控制电机看了一些,说是可以独立运行,因为我不涉及调速,但是计数器工作的时候,有中断来的话会是什么影响呢,求各位大佬解答,谢谢。

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

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
 楼主| 发表于 2018-8-17 11:15:21 | 显示全部楼层
研究过这些的大佬能不能给予下帮助 谢谢
回复

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-8-17 11:16:47 | 显示全部楼层
就算你不调速也还是推荐使用定时器输出脉冲控制
回复

使用道具 举报

2

主题

686

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
10912
金钱
10912
注册时间
2014-6-12
在线时间
1041 小时
发表于 2018-8-17 11:24:12 | 显示全部楼层
除非你的pwm中断间隔大于5ms,否则pwm中断会影响其他程序的执行,如果关中断又会影响pwm电机。
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
 楼主| 发表于 2018-8-17 13:35:42 | 显示全部楼层
xuyaqi 发表于 2018-8-17 11:24
除非你的pwm中断间隔大于5ms,否则pwm中断会影响其他程序的执行,如果关中断又会影响pwm电机。

所以这种情况我如何控制电机,让电机工作不受外部影响呢
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
 楼主| 发表于 2018-8-17 13:36:23 | 显示全部楼层
哆啦A萌 发表于 2018-8-17 11:16
就算你不调速也还是推荐使用定时器输出脉冲控制

定时器输出脉冲是不是就是配置好定时器就行,主程序不用再去控制
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-8-17 14:30:13 | 显示全部楼层
单片机是串行执行的,在某一时刻只能执行一个任务,要想执行的任务不被打断,就用单片机本身可以产生的东西去控制,比如定时器、PWM、DMA等。
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
 楼主| 发表于 2018-8-17 15:31:02 | 显示全部楼层
HXYDJ 发表于 2018-8-17 14:30
单片机是串行执行的,在某一时刻只能执行一个任务,要想执行的任务不被打断,就用单片机本身可以产生的东西 ...

好的  
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-1-19
在线时间
6 小时
发表于 2018-8-17 16:08:28 | 显示全部楼层
用单独的CPLD/FPGA控制吧,STM32由于不是并行执行,如果中断太频繁,多个中断执行时总会相互影响的,不管怎么弄,效果不理想。
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
 楼主| 发表于 2018-8-18 16:03:59 | 显示全部楼层
顶一下
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-18 17:29:51 | 显示全部楼层
我看不出来为什么会受影响, 5ms 对于跑几十MHz的CPU来说是天长地久的维度
我猜你的程式里用了什么Delay等等的东东吧
回复

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2017-8-13
在线时间
33 小时
 楼主| 发表于 2018-8-19 10:15:43 | 显示全部楼层
edmund1234 发表于 2018-8-18 17:29
我看不出来为什么会受影响, 5ms 对于跑几十MHz的CPU来说是天长地久的维度
我猜你的程式里用了什么Delay等 ...

这个电机的转动也是用了延时函数的
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-19 14:43:54 | 显示全部楼层
wsygwh 发表于 2018-8-19 10:15
这个电机的转动也是用了延时函数的

问题在延时函数, 特别是在中断里的延时函数, 那是绝不该用的
中断本来就是处理需要马上处理的事, 而中断里的延时函数就是把这功能杀死。
有那么多计数器干嘛不用? 干嘛非要用延时函数呢?
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-8-20 00:01:27 | 显示全部楼层
用中断,步进电机本来转速就不高。这点中断时间足够了!另外:步进电机不调速?步进电机必须有一个加减速过程,否则会丢步。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-8-20 00:02:34 | 显示全部楼层
现在的驱动芯片可以去用IO反正,可以用PWM,以前的都是发SPI指令,只能用定时器中断,不过为了兼容算法,后面IO反正的产品我们也是用中断来反正IO。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-8-20 00:03:06 | 显示全部楼层
IO翻转。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 06:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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