计论!51单片机怎么发带加减速的方波脉冲输出(驱动步进驱动器或伺服系统达到精确定位)
指标要求:1、能设定脉冲数2、能设定最高频率
3、能设定加速时间(速度从0-最高频率)
请大家参与讨论方案! 我的方案是:做一表格放定时器定时值(比如1000个数据)0-50K,50HZ一格,用一个定时器,查表发脉冲,在定时中断里发一窄脉冲,
设定速度(F1-F200),把50K分成200等分,。即隔250HZ一档速度,加速档位分成20级
发脉冲分为三个阶段,1.上升脉冲数;2.恒速脉冲数3.下降脉冲数(其中上升脉冲数等于下降脉冲数.
准备发脉冲前先算好三个阶段的脉冲数,若总脉冲数不够时,恒速=0,下升下降平分。
例1:速度设成F100即最高速度为25K,中间分成100块定时数据,100/20=5,即每升速一次,查表指针加5,发为20个脉冲后即
达到恒速。再发完恒速,同理发完降速,即完成发一串脉冲数,达到定位,
例2:速度设成F150即最高速度为37.5K,中间有150块定时数据,150/20=7.5,即每升速一次,查表指针加7(取整数,初速从F10
开始:150-20*7=100),发为20个脉冲后即达到恒速。再发完恒速,同理发完降速,即完成发一串脉冲数,达到定位,
-----------------------------------------------------------------------------------------------------------------------------------------
例1大家可以看到,不能调节加速时间,即加速时间或加速斜率,
引入新的一个参数,速率(P0-P200)
当设成P0时,曲线不查表直接从最高转速发脉冲,
当设成P1时,方案按例1发脉冲。(同速脉冲数=1)
当设成P3时,升降速时同速脉冲连_发三次,(同速脉冲数=3)
当高成Px时,x即同速脉冲数,如例1,把X再5进行比较,可算出是5的倍数N倍+零数
始x=13,则13/5=2 零数=3,就是把原来每增一次速加5个指针,细分成5次加速,分别是
1/2/3/4/5次,其1/2次,每升一次速发两个脉冲,在3/4/5,每升一次速发三个脉冲, 今天终于调通了,程序从10HZ-100K可调!加速性能不错,不比PLC差多少,用的是STC12C5A60S2!STC12C5A56S2 ,调节范围,10HZ-100K,加速曲线可调,分250*12=3000种斜率, 设置最大脉冲数是16777216*(65535/65535),也就是说,当分子设成65535,分子设成1时,最大可发1099494850560个脉冲即2的40位数据
可以
哈哈,怎么没人关注呢! 能不能说说100K的脉冲输出是怎么做的呢,谢谢! mark 关注 回复【3楼】tuowai
-----------------------------------------------------------------------
就我上面的方案,现在调到110K了,最低30HZ,速度共F1-F400,调节其中,F1-F400=每级250HZ左右
其中在F1-F10,当速率设成P0时,即速率(斜率)=0时速度切换成30HZ-250HZ,且是恒速的,
在F11-F400时,速率设成P0,是恒速,(一直是设定速度恒速运行)当设成速率P1-P250时,自动生成250级加速斜率,
P0,最急!直接从最高速起动,一直恒速,再是依次P1-P250,越大,越缓,还有一个参数,加速系数,N1-N12可设,也就是说,
可以最大可选设3000档曲线,每次都是从0加速到设定速度,试了效果很不错,不比PLC差,再整理几天,再上传照片,和波型! 不怎么了解单片机,只是以前用的一个板子上是使用翻转端口来输出脉冲的,想了解下,如何才能实现输出那么高的脉冲,谢谢
! 顶下! 你定位怎么做的呢?发一个脉冲+1? 去看看书 电动机的单片机的控制 就是你的步进电机啥驱动的 51驱动步进电机,精确点的话要用到8253这个片子。 学习中,,,,
我们这边做的一台自动包麦拉机用的脉冲发生器跟楼主描述的功能一样,型号是Mtpg-7-2n,明天上拆机图, 我只是路过! 关注... 学习,mark http://cache.amobbs.com/bbs_upload782111/files_45/ourdev_672312TK9JWY.jpg
未完待续 (原文件名:20110828137.jpg) mark mark 回复【2楼】ZHN245
-----------------------------------------------------------------------
我现在也在搞单片机控制步进马达,总体来说效果还是不错的,但是就是加减速问题一直不能解决,希望能得到你的帮助,联系方式:lryxr@sina.com. 我也搞过,用的M16,多轴同步问题一直没有做好;现在想用STM32或NUC140作,最近有点忙,一直没动手. 回复【22楼】mcu5i51 学途浪子
-----------------------------------------------------------------------
期待! 楼主,能共享代码,学习学习 正在做相关的东西,有用,谢谢 mark mark mach 中不是可以设置加减速曲线吗 楼主是使用STC12C5A60S2 PCA输出高速脉冲,我下了楼主的示例与STC的手册,感觉还是有点迷糊,还望解答下疑惑:
楼主程序与手册上均为 输出脉冲=晶体频率/(4*CCAPnL),如晶体频率为12M,想得到100K的脉冲输出的话,12M/100K/4,得到CCAPnL为30,想得到99K的输出频率时,12M/99K/4,得到CCAPnL为30.30303,看手册上是CCAPnL是小数时,是需要取整,这样的话,不就不能输出99K的频率了吗?是我理解错误还是计算有误还是有其他可解决的方法呢,还请指点下,谢谢;
楼主能否发份程序学习学习,谢谢. 940068004@qq.com 可惜有点迷糊,N1-N12参数是什么作用? 楼主有资料吗? lz可否将原理图和代码共享下。。。 :TMCM-342脉冲分为三个阶段,1.上升脉冲数;2.恒速脉冲数3.下降脉冲数(其中上升脉冲数等于下降脉冲数. 准备发脉冲前先算好三个阶段的脉冲数,若总脉冲数不够时,恒速=0,下升下降平分。 例1:速度设成F100即最高速度为25K,中间分成100块定时数据,100/20=5,即每升速一次,查表指针加5,发为20个脉冲后即 达到恒速。再发完恒速,同理发完降速,即完成发一串脉冲数,达到定位, 例2:速度设成F150即最高速度为37.5K,中间有150块定时数据,150/20=7.5,即每升速一次,查表指针加7(取整数,初速从F10 开始:150-20*7=100),发为20个脉冲后即达到恒速。再发完恒速,同理发完降速,即完成发一串脉冲数,达到定位, ----------------------------------------------------------------------------------------------------------------------------------------- ZHN245 发表于 2011-7-28 14:32
我的方案是:做一表格放定时器定时值(比如1000个数据)0-50K,50HZ一格,用一个定时器,查表发脉冲,在定 ...
请问楼主,时间单位和同速脉冲数如何转换? mark
这个案例很具有挑战性,值得大家来讨论
挺好的,有空研究一下 请楼主多上点资料啊~~~~~~~~~ tuowai 发表于 2012-4-15 00:20
楼主是使用STC12C5A60S2 PCA输出高速脉冲,我下了楼主的示例与STC的手册,感觉还是有点迷糊,还望解答下疑 ...
您下过楼主的实例程序,能否分享下,也想学习一下,楼主联系不上,也不回复,{:sweat:} 我的邮箱:anshengli_dz@163.com,谢谢! avr446你值得拥有
页:
[1]