OpenEdv-开源电子网

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

PWM波如何准确知道脉冲数量

[复制链接]

20

主题

99

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2020-6-21
在线时间
70 小时
发表于 2020-7-8 20:57:43 | 显示全部楼层 |阅读模式
1金钱
我用PWM波控制步进电机 推 丝杆。
没有编码器

要做到的效果是 推到设置的最大距离就停下来。

我用TIM1发的脉冲,并且开启了TIM1的更新中断,每一次到CNT加到ARR就进入中断,在中断里面设置的一个标志位FLAG ++

然后在另外一个函数里面设置
if(FLAG > 1000)
{
  停下来;
}

当然中间还有别的其他的很多代码..

然后我发现..中间的代码数量不一样..同样的丝杆距离,FALG的值也不一样...

中断开的太频繁了??

而且这个最大距离FALG值特别的玄幻...我设置的是u32的长度的..我设置的参数理论上转一圈就要800个脉冲了.

结果我推到最远的设置的距离,flag值只有500..

不过虽然玄幻,但是写好了,运行起来每次停的位置是不变的。。

我如果要改程序,在主函数里写一些别的代码...这个最远距离的flag值就要变了..

这是为什么啊??

代码如下

Annotation 2020-07-08 205508.png

scmc就是设置的标志位,输出脉冲的意思。

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

使用道具 举报

32

主题

236

帖子

0

精华

高级会员

Rank: 4

积分
993
金钱
993
注册时间
2017-8-11
在线时间
137 小时
发表于 2020-7-10 11:45:20 | 显示全部楼层
用定时器的外部脉冲读取功能直接读是最准的
回复

使用道具 举报

20

主题

99

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2020-6-21
在线时间
70 小时
 楼主| 发表于 2020-7-16 17:03:47 | 显示全部楼层
笨鸟想飞 发表于 2020-7-10 11:45
用定时器的外部脉冲读取功能直接读是最准的

那样子的话要改硬件的吧。用输入捕获功能,要把PWM输出口和捕获的口跳线跳起来。
如果不改硬件,你们一般用什么方法?
我现在在用主从定时器,但是感觉有bug,会固定丢两个脉冲,除此之外还有一个很神奇的bug我不知道怎么形容。。。
回复

使用道具 举报

11

主题

2149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4915
金钱
4915
注册时间
2015-1-10
在线时间
616 小时
发表于 2020-7-17 09:59:04 | 显示全部楼层
flyingPiggy 发表于 2020-7-16 17:03
那样子的话要改硬件的吧。用输入捕获功能,要把PWM输出口和捕获的口跳线跳起来。
如果不改硬件,你们一 ...

看看datasheet,有些定时器的输出可以内部链接到另一个定时器上
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2321
金钱
2321
注册时间
2017-12-11
在线时间
494 小时
发表于 2020-7-17 10:59:21 | 显示全部楼层
不懂,帮顶!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 08:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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