|
我们项目要做个自动进样器,由电机驱动运动,要求速度为300mm/s,速度挺快的,所以启动和停止时必须匀加速,在驱动里通过产生高低脉冲使电机运转。
nCounts为脉冲个数,nTmpDelay为延时数
for(int j = 0; j < nCounts; j++)
{
if(PulseInputCtrl[0].bCW)//顺时针时GPJ9输出脉冲,逆时针时GPJ10输出脉冲
*(int *)GPJDAT_ADDR |= 0x00000200;//GPJ9 = 1,high level
else
*(int *)GPJDAT_ADDR |= 0x00000400;//GPJ10 = 1,high level
uDelay(nTmpDelay);//4
if(PulseInputCtrl[0].bCW)
*(int *)GPJDAT_ADDR &= 0xFFFFFDFF;//GPJ9 = 0,low level
else
*(int *)GPJDAT_ADDR &= 0xFFFFFBFF;//GPJ10 = 0,low level
uDelay(nTmpDelay);
}
这样只要使电机匀加速运转就可以了。自动进样器要平稳运行,加速时间至少要100个毫秒,高速运行时,延时为0.8微妙,我现在有点混乱,哪位高手指点一下,谢谢了
|
|