打印
[STM32F0]

功能基本可以实现,但感觉不理想

[复制链接]
359|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyf部长|  楼主 | 2020-7-26 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用STM32做一个简单的步进电机控制器,脉冲50-100K,要求能任意调速,且能给定脉冲数给控制器让电机走完指定步数。用定时器测试了一下,功能基本可以实现,但感觉不理想

使用特权

评论回复
沙发
xxmmi| | 2020-7-26 18:37 | 只看该作者
什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
板凳
chenjunt| | 2020-7-26 18:40 | 只看该作者
加减速不太好做

使用特权

评论回复
地板
zyf部长|  楼主 | 2020-7-26 18:49 | 只看该作者
主要是频繁进中断频率不能太高及速度调整不便问题,所以想用PWM来实现,用PWM调速和加减速处理倒不是问题,但不知怎么实现精确到一个输出脉冲的控制。

使用特权

评论回复
5
zwll| | 2020-7-26 18:52 | 只看该作者
PWM的输出接到IO口的外部中断输入,通过上升沿或者下降沿检测

使用特权

评论回复
6
chuxh| | 2020-7-26 18:55 | 只看该作者
通过这样的方式计数,计到合适的数目在中断里关停即可

使用特权

评论回复
7
香水城| | 2020-7-26 18:57 | 只看该作者
zyf部长 发表于 2020-7-26 18:49
主要是频繁进中断频率不能太高及速度调整不便问题,所以想用PWM来实现,用PWM调速和加减速处理倒不是问题, ...

如果使用高级定时器,可以借助RCR寄存器与单脉冲方式来试试。

使用特权

评论回复
8
stly| | 2020-7-26 19:02 | 只看该作者
可以使用另一个定时器计时,计时结束中断时停止PWM输出。

使用特权

评论回复
9
zhanghqi| | 2020-7-26 19:08 | 只看该作者
比如需要输出120个50kHz的脉冲,计算得知每个脉冲是20us,120个脉冲需要2.4ms,这样计时2.4ms后停止PWM输出即可。只要中断响应的时间不超过20us就没有问题。

使用特权

评论回复
10
zyf部长|  楼主 | 2020-7-26 20:17 | 只看该作者
sharp4016的方法也曾想到过,但要浪费一些IO端口。。。

使用特权

评论回复
11
dingy| | 2020-7-26 20:20 | 只看该作者
如果PWM有一个类似输出比较寄存器就好了。

使用特权

评论回复
12
chenjunt| | 2020-7-26 20:26 | 只看该作者
没看懂。

使用特权

评论回复
13
zyf部长|  楼主 | 2020-7-26 21:45 | 只看该作者
如果PWM每一个脉冲都进中断,还要在中断里做一些简单的比较等处理,如果做成几个电机单独调节控制,则要用到几个PWM输出,程序还要做其它一大堆工作,这样会不会忙不过来呢?

使用特权

评论回复
14
renyaq| | 2020-7-26 21:48 | 只看该作者
pwm精确控制输出脉冲数的问题解决了吗?可以把您的例程发给我参考一下嘛?

使用特权

评论回复
15
renyaq| | 2020-7-26 21:52 | 只看该作者
pwm精确控制输出脉冲数的问题解决了吗?可以把您的例程发给我参考一下嘛?

使用特权

评论回复
16
liliang9554| | 2020-7-26 21:55 | 只看该作者
这个比较简单的就是在定时器里改变计数值,中断里声明一个变量,然后自加加,到达设定值的时候就关闭定时器

使用特权

评论回复
17
chenjunt| | 2020-7-26 22:03 | 只看该作者
计到合适的数目在中断里关停即可

使用特权

评论回复
18
kangzj| | 2020-7-26 22:07 | 只看该作者
哪里不理想了

使用特权

评论回复
19
hanwe| | 2020-7-26 22:10 | 只看该作者
看楼主怎么做算法啦

使用特权

评论回复
20
langgq| | 2020-7-26 22:13 | 只看该作者
很精确的话很难的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

粉丝