|
2楼
楼主 |
发表于 2011-7-28 14:32:13
|
只看该作者
我的方案是:做一表格放定时器定时值(比如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,每升一次速发三个脉冲, |
|