当前要做一个东西,主要功能是采用51单片机对4个步进电机控制,步进电机有驱动器驱动,单片机的任务是给出脉冲信号和方向信号。控制的要求是4个电机任意动作且相互不受影响。电机运行状态包括恒低速运行,低速启动-加速-恒高速-减速-停止。
现在我采用的是STC89C51RC,如果对每个步进电机只分配一个定时器的话,定时器个数不够,所以我就采用1个定时器来定时100us,低速时每8次中断为一个输出的脉冲周期(即7个100us内为高电平,1个100us内为低电平,低电平有效),高速时每进一次中断取反一次。
问题出现了:
1.加减速的曲线问题,因为采用这种固定定时的方式来加速的话,加速的频率会越来越快,比如当前情况从 7+1的低速 到 1+1 的高速,脉冲频率的各步为1250 | 1428.571 | 1666.667 | 2000 | 2500 | 3333.333 | 5000 |
显然曲线很不理想
我用这种方式控制的时候,发现启动的时候还行,但是进入高速时电机一直伴随有啸叫,电机设置为400步/转,而且在高速进入减速的时候,电机会有明显的一顿的感觉,很明显。
2.采用这种方式的时候,感觉进入定时中断任务十分繁重,4个电机共16个状态(每个电机的恒低速,加速,恒高速,减速状态),还要对各个电机的各级步数进行加一或减一运算,对个电机的总步数进行加减运算,加减速时还要对各级的速度级数分析,我感觉100us的中断是不是不够用而引起的高速啸叫?单片机的晶振是11.0592MHz,但进入减速时的一顿是怎么回事,我仔细分析了这个进入减速的过程,发现程序控制应该是不会出现这个现象的。
3.对这个单片机的抗干扰能力的问题。我做实验的时候,电机,驱动器,单片机板子,电脑这些都在座子上,间距10cm左右吧,我用本本与单片机通讯发控制字的时候,发现单片机老是死机,=。=,有有经验的大大们给分析下吗,电机电源24V,大概在1m外引入驱动器,再接的电机,同样大概1m外,有电烙铁,焊台什么的 |