搜索
bottom↓
回复: 24

怎么控制发出的PWM脉冲个数?

[复制链接]

出0入0汤圆

发表于 2007-3-25 16:20:17 | 显示全部楼层 |阅读模式
我想用PWM输出驱动步进电机, 如果我想精确控制输出脉冲数量(即控制步进电进步数)有什么好办法呢?



PWM频率在10-40K左右.

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2007-3-25 16:22:54 | 显示全部楼层
这个基本上很难,大概只有在匹配后产生中断,然后在中断中计数,符合条件就停PWM.产生的不良后果就是PWM只能是比较低的频率.

出0入0汤圆

 楼主| 发表于 2007-3-25 17:21:41 | 显示全部楼层
那一般大家都用什么方式控制步进电机的步数的?

不会是用IO来产生脉冲信号吧?

出0入0汤圆

发表于 2007-3-25 18:44:39 | 显示全部楼层
脉冲发送脚接到计数器的脚上读计数器寄存器的值就可以了

出0入0汤圆

 楼主| 发表于 2007-3-25 18:50:43 | 显示全部楼层
是不是输入到T1然后用计数器控制脉冲数?

出0入0汤圆

发表于 2007-3-25 19:09:24 | 显示全部楼层
不是。。。

你可以用AVR的一个口来发脉冲,应该有几个口是不占任何CPU时间就可以直接发出占空比为50%的方波。。。。然后你将发脉冲的这个口接到计数器的口上,当然不让计数器中断,你直接读计数器寄存器的值就知道发出去多少个脉冲了。

出0入0汤圆

发表于 2007-3-25 19:10:40 | 显示全部楼层
楼主是不是做步进/伺服电机的控制器?   交流一下///

出0入0汤圆

 楼主| 发表于 2007-3-25 19:22:19 | 显示全部楼层
谢谢大家意见.总结一下:

用PWM如OC2输出固定频率的脉冲.. OC2脚与T1输入脚相连.  因为T/C1为16位计数器.

所以可以计数65535个脉冲. 即我要输出N步的脉冲时首先设置T/C1初值,使计数器计N脉冲后溢出产生中断. 启动PWM输出脉冲... 同时T/C1计数器开始计数. 当溢出中断里关闭PWM输出. 即可以控制输出的脉冲数.



以上理解是否正确呢? 或还有没有更好的方法. 因如果这样就要占用两个定时器, 一个IO口.

还有如果我要发的脉冲数大于65535又怎么样实现呢?



希望大家多提点意见...谢谢大家!

出0入8汤圆

发表于 2007-3-25 22:46:34 | 显示全部楼层
关注,看大伙有没有好的算法!!

出0入0汤圆

发表于 2007-3-25 23:29:35 | 显示全部楼层
16M晶振能产生的pwm波最大频率是多少?

出0入0汤圆

发表于 2007-3-26 00:02:20 | 显示全部楼层
还是用T1计数比较好。一直读计数器值的办法可能因为别的中断程序而滞后执行,这样就可能多发脉冲。反正都要在中断程序里面处理,当步数大于65536时用个软件计数器在中断里面计数不就行了。先把余数写进计数器,等待n次中断后停止脉冲。

出0入0汤圆

发表于 2012-11-14 22:07:57 | 显示全部楼层
也正在研究这个怎么实现,请问有实现这个功能的吗? 发代码上来

出0入10汤圆

发表于 2012-11-14 22:20:36 | 显示全部楼层
关注此贴

出0入0汤圆

发表于 2012-11-15 09:39:41 | 显示全部楼层
网上说通过两个定时器来做这个怎么实现的谁清楚

出0入0汤圆

发表于 2012-12-26 13:04:24 | 显示全部楼层
控制步进和伺服就是用IO口发脉冲啊,采用PWM除了不好控制脉冲数量 外 加减速也不能控制。

出0入0汤圆

发表于 2012-12-26 13:36:56 | 显示全部楼层
关注。。。

出0入0汤圆

发表于 2012-12-26 14:12:08 | 显示全部楼层
坐等高人,详细解说,这个我也很有兴趣

出0入0汤圆

发表于 2012-12-26 17:13:03 | 显示全部楼层
要实现加减速控制还是用tms320f系列的吧,主频150M,可以比较快了。别指望那些8位机能搞这么复杂的。

出0入0汤圆

发表于 2013-8-23 21:39:30 | 显示全部楼层
正遇到这个问题了,,怎么没了结果。

出0入0汤圆

发表于 2013-8-23 21:49:17 来自手机 | 显示全部楼层
我已经用stm32f1实现0CPU占用发脉冲,用的是定时器级连方式,但是这样却遇到麻烦---不好控制频率,希望有人能够交流,一起搞定这个问题。

出0入0汤圆

发表于 2013-8-23 21:52:59 来自手机 | 显示全部楼层
我的想法是,两个定时器,通过内部触发相连,一个用来生成pwm,另外一个对pwm计数。加减速想仿造欧姆龙plc,每个4毫秒改一次频率。可是打不到那种效果,希望有高手扶一把。。。。

出0入0汤圆

发表于 2013-11-3 08:30:05 | 显示全部楼层
cicnx 发表于 2007-3-25 17:21
那一般大家都用什么方式控制步进电机的步数的?

不会是用IO来产生脉冲信号吧? ...

LZ找到办法了没

IO控制的话,不能实现多轴联动吧

出0入0汤圆

发表于 2013-12-24 16:17:03 | 显示全部楼层
本帖最后由 feng_matrix 于 2013-12-24 16:33 编辑

PWM发生器+计数器+与门可行不?

比如AVR32,把20位精度的PWM工作在变频、或变占空比模式,可用MCU原有功能动态调整频率
然后每次写入PWM的同时,启动计数器,计数器未到前控制与门输出脉冲,计数到位与门反转停止输出。
整个过程中PWM始终在工作。


可以想到的两个问题是:

1.PWM工作在变频模式,寄存器更新过快时,PWM不能及时响应的
需要等到一个计数周期结束才能产生新频率,这样从低频脉冲向高频脉冲变化时,可能有延时

2.如果用MCU自己的计数器中断来控制个数,当输出脉冲频率较高时,MCU会被频繁中断,压力可能较大

出0入0汤圆

发表于 2013-12-24 16:58:46 | 显示全部楼层
IO脚控制应该可以实现多轴联动的吧?求大神普及

出0入0汤圆

发表于 2014-9-5 10:52:30 来自手机 | 显示全部楼层
用比较输出的方式做
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 11:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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