完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在用STM32做一个简单的步进电机控制器,脉冲50-100K,要求能任意调速,且能给定脉冲数给控制器让电机走完指定步数。用定时器测试了一下,功能基本可以实现,但感觉不理想,主要是频繁进中断频率不能太高及速度调整不便问题,所以想用PWM来实现,用PWM调速和加减速处理倒不是问题,但不知怎么实现精确到一个输出脉冲的控制。
|
|
相关推荐
12个回答
|
|
PWM的输出接到IO口的外部中断输入,通过上升沿或者下降沿检测
|
|
|
|
加减速不太好做
|
|
|
|
通过这样的方式计数,计到合适的数目在中断里关停即可
|
|
|
|
可以使用另一个定时器计时,计时结束中断时停止PWM输出。
|
|
|
|
比如需要输出120个50kHz的脉冲,计算得知每个脉冲是20us,120个脉冲需要2.4ms,这样计时2.4ms后停止PWM输出即可。只要中断响应的时间不超过20us就没有问题。
|
|
|
|
sharp4016的方法也曾想到过,但要浪费一些IO端口
|
|
|
|
如果PWM有一个类似输出比较寄存器就好了。
|
|
|
|
没看懂。
|
|
|
|
如果PWM每一个脉冲都进中断,还要在中断里做一些简单的比较等处理,如果做成几个电机单独调节控制,则要用到几个PWM输出,程序还要做其它一大堆工作,这样会不会忙不过来呢?
|
|
|
|
pwm精确控制输出脉冲数的问题解决了吗?可以把您的例程发给我参考一下嘛?
|
|
|
|
这个比较简单的就是在定时器里改变计数值,中断里声明一个变量,然后自加加,到达设定值的时候就关闭定时器
|
|
|
|
嗯,那我按大家的说法挨个排查一下,谢谢哈
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 18:32 , Processed in 0.869047 second(s), Total 95, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号