怎样让定时器单脉冲模式输出一定数量的脉冲

STM32&精确输出PWM脉冲数控制电机
发脉冲两种目的
1)速度控制
2)位置控制
速度控制目的和模拟量一样,没有什么需要关注的地方
发送脉冲方式为PWM,速率稳定而且资源占用少
stm32位置控制需要获得发送的脉冲数,有下面4种手段
1)每发送一个脉冲,做一次中断计数
2)根据发送的频率&发送的时间,获得脉冲数量,对于变速的脉冲,可以累计积分的方法来获得总脉冲
3)一个定时器作为主发送脉冲,另外一个定时器作为从,对发送的脉冲计数
4)使用DMA方式,例如共发送1000个脉冲,那么定义u16
per[1001],每发送一个脉冲,dma会从数组中更新下一个占空比字,数组最后一个字为0,表示停发脉冲
上面4种方法的用途和特点
1)对于低速率脉冲比较好,可以说低速发脉冲的首选,例如10Khz以下的,否则中断占用太多的cpu,这种方法要注意将中断优先级提高,否则会丢计数,
2)用作定时的计时精确高,可以允许有脉冲计数丢失的情况
3)主从方式,需额外的定时器来计数,例如tim1发脉冲
tim2计数,最方便的方式,无论高速低速即可,同时占用cpu最低,只是要占用多一个定时器
4)DMA方式也算是一个很确定的方式,不会丢失脉冲,但是高速的时候,会较多的占用内部总线同时会使用一个多余的DMA控制器,而且有个缺点,就是使用起来比较复杂,没有达到KISS原则
个人推荐方式,低速时中断方式,如果不知高速还是低速,则使用主从方式。具体的方式需要根据资源和需求来确定。
stm32定时器算是比较复杂的器件,而且用户要较多的介入底层,希望将来st公司能够能够简化器件的使用。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。plc梯形图中的脉冲定时器
查看: 861|
摘要: 脉冲定时器类似于数字电路中上升沿触发的单稳态电路。图1中的指令框是S5脉冲定时器( Pulse S5 Timer),S为脉冲定时器的设置输入端,TV为预置值输入端,R为复位输入端;Q为定时器位输出端,BI端输出不带时间基准的十六进制格式当前时 ...
&&& 脉冲定时器类似于数字电路中上升沿触发的单稳态电路。图1中的指令框是S5脉冲定时器( Pulse S5 Timer),S为脉冲定时器的设置输入端,TV为预置值输入端,R为复位输入端;Q为定时器位输出端,BI端输出不带时间基准的十六进制格式当前时间值,BCD端输出S5T#格式的当前时间值。可以不给BI和BCD输出端指定地址。S、R、Q为BOOL(位)变量,BI和BCD为WORD(字)变量,TV为S5TIME变量。各变量均可以使用I(仅用于输入变量)、Q、M、L、D存储区。 &&& 可以用仿真软件SIM模拟运行随书光盘中的项目“T_C例程”,来形象地理解定时器和计数器的工作过程。在STEP 7中打开该项目,启动仿真软件PLCSIM,将OB1中的程序下载到仿真PLC,将后者切换到RUN模式。在梯形图编辑器中打开OB1,点击工具条上的■(监控)按钮,启动程序状态监控功能。 &&& 对S5脉冲定时器仿真时,点击PLCSIM窗口中I0.0对应的小方框,方框内出现“√”,表示I0.0为1状态。由于输入电路(I0.0的常开触点)闭合,梯形图中的触点、方框和Q4.0的线圈均变为绿色,表示T0正在输出脉冲。可以看到,T0被启动后,从预置值开始,每经过一个时间基准,它的时间值减1。直到减为0,定时时间到,Q4.0的线圈断电。在定时期间,BI端输出十六进制的当前剩余时间值,BCD端输出S5T#格式的当前时间剩余值。图2中的时序图用下降的斜坡表示定时期间当前值递减,图中的t是定时器的预置值。 &&& 可以通过定时器的时序图和仿真实验来理解定时器的功能。由图2可知,脉冲定时器从输入信号I0.0的上升沿开始,输出一个脉冲信号。如果输入脉冲的宽度大于等于时间预置值(见图2中I0.0的脉冲A),通过Q4.0输出的脉冲宽度等于时间预置值。如果输入脉冲的宽度小于时间预置值(见I0.0的脉冲B),输出脉冲的宽度等于输入脉冲的宽度。从波形图可以看出,复位信号是优先的,复位信号I0.1使定时器的当前时间值变为0,输出位也变为0状态。在复位信号有效期间,即使有输入信号出现(见I0.0的脉冲D),也不能输出脉冲。 &&& 在作仿真实验时,可以根据T0的时序图,改变T0的输入信号I0.0的脉冲宽度和复位信号I0.1出现的时机,观察T0的当前时间值和Q4.0的变化情况是否符合定时器的时序图。 &&& 图3的脉冲定时器线圈指令与S5脉冲定时器的输入/输出地址、工作过程和时序图完全相同。当I0.0的常开触点由断开变为接通时,T0开始定时,其常开触点闭合。定时时间到时,T0的常开触点断开。在定时期间,如果I0.0变为0状态,或者复位输入I0.1变为1状态,T0的常开触点都将断开,定时器的当前值被清零。&
&&& 图1&&& S5脉冲定时器&
&&& 图2&&& 脉冲定时器时序图&
&&& 图3&&& 脉冲定时器
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:21ic官方微信-->
后使用快捷导航没有帐号?
stm32输出一个脉冲数和频频率都可调的最少用几个Timer?
&&未结帖(20)
主题帖子积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
电机的编码器是128W细分,最高的输入频率是5MHz,
电机内部转率比设的太高了影响精度,其实300KHz,
只是基本能满足要求,机械上还有3:1的减速比,同
轴安装的话,电机的转动贯量要求很高,负载是一个
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:95%打赏:0.00受赏:3.00
主题帖子积分
哇,“编码器是128W细分”
怎么做出来的啊?
能上个照片看看吗?
不要和疯狗计较,看到疯狗应该远远躲开,免得被咬。
主题帖子积分
主题帖子积分
专家等级:结帖率:95%打赏:0.00受赏:3.00
主题帖子积分
嗯,老x秀逗了,忘了多圈绝对值编码器,可以用齿轮加速的。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
不要和疯狗计较,看到疯狗应该远远躲开,免得被咬。
主题帖子积分
主题帖子积分
专家等级:结帖率:95%打赏:0.00受赏:3.00
主题帖子积分
个人觉得LZ的东西用FPGA更合适一些,想同时多少个定时器、计数器都行;
而用CPU的话,速度高时最好还是一个CPU管一个电机比较好,不用考虑同时事件的冲突
不要和疯狗计较,看到疯狗应该远远躲开,免得被咬。
主题帖子积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
白天上网不方便,真不爽,128W细分的编码器是电机上的编码器,FPGA的方案我也在考滤中,老X有什么好的想法没?请指教。非常感谢
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
我看了一下香主提的那几个例子,但是有几点不明白的地方:
举一个例子:我以TIM1以比较输出方式输出30K的脉冲,用TIM2来计数输出的脉冲个数,到达5000个脉冲(假设)后,关闭TIM1。首先配置TIM1为主模式,输出 ...
worldsing 发表于
对于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。
这里的关键问题是,不要考虑对产生输出脉冲信号进行计数,而是计算在特定频率下产生一定数目脉冲所需的时间,使用主定时器按照这个时间计时,就可以达到控制脉冲数目的作用。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
助理工程师, 积分 1088, 距离下一级还需 912 积分
我现在是用计数的方式,类似香主的做法,我现在还有一个问题没有解决,比如输出的脉冲个数这个过程,必须得有一个加减速的过程,用中断的话,在入高频CPU都没法干别的事了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
高级工程师, 积分 6615, 距离下一级还需 1385 积分
高级工程师, 积分 6615, 距离下一级还需 1385 积分
主题帖子积分
专家等级:结帖率:6%
主题帖子积分
高级工程师, 积分 6615, 距离下一级还需 1385 积分
高级工程师, 积分 6615, 距离下一级还需 1385 积分
应该有一个触发可以用于计数脉冲
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:31%打赏:0.00受赏:11.00
主题帖子积分
我现在是用计数的方式,类似香主的做法,我现在还有一个问题没有解决,比如输出的脉冲个数这个过程,必须得有一个加减速的过程,用中断的话,在入高频CPU都没法干别的事了 ...
worldsing 发表于
按照26楼的方法,加减速的过程就是改变TIM1的计时时间的过程,改变计时时间可以在中断中实现,如果怕中断过于频繁,如果计时时间改变的步幅和时间点可以事先确定,则可以先计算好每步需要设置的参数,然后通过设置DMA,由DMA在指定的时刻装填预制的参数。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
一个定时器即可 TIM+DMA&&加减速实现
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
一个定时器即可 TIM+DMA&&加减速实现
您好,我现在想用STM32F103ZET6控制一个步进电机,想法大概是这样:
让电机转一个固定的角度,即给驱动器一个固定的脉冲数;
在启动和停止过程要求速度平滑过渡;
如果使用某一定时器的PWM输出,例如TIM2_CH1的话,该如何实现呢,能不能帮我讲一下呀
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
技术高手奖章
人才类勋章
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
技术领袖奖章
人才类勋章
时间类勋章
荣誉元老奖章
等级类勋章}

我要回帖

更多关于 555定时器构成1秒脉冲 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信