stm32输出一个脉冲数和频频率都可调的最少用几个Timer?

[复制链接]
16353|30
 楼主| worldsing 发表于 2010-6-30 22:20 | 显示全部楼层
电机的编码器是128W细分,最高的输入频率是5MHz,
电机内部转率比设的太高了影响精度,其实300KHz,
只是基本能满足要求,机械上还有3:1的减速比,同
轴安装的话,电机的转动贯量要求很高,负载是一个
大滚桐。
xwj 发表于 2010-6-30 22:40 | 显示全部楼层
哇,“编码器是128W细分”

怎么做出来的啊?
能上个照片看看吗?
xwj 发表于 2010-6-30 22:52 | 显示全部楼层
嗯,老x秀逗了,忘了多圈绝对值编码器,可以用齿轮加速的。
多圈绝对值编码器.jpg
xwj 发表于 2010-6-30 22:59 | 显示全部楼层
个人觉得LZ的东西用FPGA更合适一些,想同时多少个定时器、计数器都行;
而用CPU的话,速度高时最好还是一个CPU管一个电机比较好,不用考虑同时事件的冲突
 楼主| worldsing 发表于 2010-7-1 20:28 | 显示全部楼层
白天上网不方便,真不爽,128W细分的编码器是电机上的编码器,FPGA的方案我也在考滤中,老X有什么好的想法没?请指教。非常感谢
香水城 发表于 2010-7-2 10:00 | 显示全部楼层
28321

我看了一下香主提的那几个例子,但是有几点不明白的地方:
举一个例子:我以TIM1以比较输出方式输出30K的脉冲,用TIM2来计数输出的脉冲个数,到达5000个脉冲(假设)后,关闭TIM1。首先配置TIM1为主模式,输出 ...
worldsing 发表于 2010-6-29 22:21


对于12楼的这个例子,可以考虑使用2个定时器配合实现。

比如TIM1配置为主模式,TIM2配置为从模式,由TIM1控制TIM2的使能,请看STM32参考手册中"使用一个定时器使能另一个定时器(Using one timer to enable another timer)"小节。

使用TIM2以PWM输出模式输出30K的脉冲。TIM1配置为输出比较模式,同时启动TIM1和TIM2,TIM1在TIM2输出5000个脉冲后,即TIM1计时166.667ms后产生输出比较信号,这个信号直接关闭TIM2。

这里的关键问题是,不要考虑对产生输出脉冲信号进行计数,而是计算在特定频率下产生一定数目脉冲所需的时间,使用主定时器按照这个时间计时,就可以达到控制脉冲数目的作用。
 楼主| worldsing 发表于 2010-7-3 22:40 | 显示全部楼层
我现在是用计数的方式,类似香主的做法,我现在还有一个问题没有解决,比如输出的脉冲个数这个过程,必须得有一个加减速的过程,用中断的话,在入高频CPU都没法干别的事了
txcy 发表于 2010-7-4 08:55 | 显示全部楼层
应该有一个触发可以用于计数脉冲
香水城 发表于 2010-7-4 10:55 | 显示全部楼层
我现在是用计数的方式,类似香主的做法,我现在还有一个问题没有解决,比如输出的脉冲个数这个过程,必须得有一个加减速的过程,用中断的话,在入高频CPU都没法干别的事了 ...
worldsing 发表于 2010-7-3 22:40


按照26楼的方法,加减速的过程就是改变TIM1的计时时间的过程,改变计时时间可以在中断中实现,如果怕中断过于频繁,如果计时时间改变的步幅和时间点可以事先确定,则可以先计算好每步需要设置的参数,然后通过设置DMA,由DMA在指定的时刻装填预制的参数。
chimizhe 发表于 2011-6-18 11:43 | 显示全部楼层
一个定时器即可 TIM+DMA  加减速实现
Hey小唐 发表于 2016-7-9 21:49 | 显示全部楼层
chimizhe 发表于 2011-6-18 11:43
一个定时器即可 TIM+DMA  加减速实现

您好,我现在想用STM32F103ZET6控制一个步进电机,想法大概是这样:
让电机转一个固定的角度,即给驱动器一个固定的脉冲数;
在启动和停止过程要求速度平滑过渡;
如果使用某一定时器的PWM输出,例如TIM2_CH1的话,该如何实现呢,能不能帮我讲一下呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部