摘要:分析了影响步进电机定长精度的两个重要因素,采用ATmega128微控制器设计了一种单轴步进电机定长控制器。一方面,引入点动微调粗调方法将零点标定误差控制在最小误差限内;另一方面,综合阶梯型和直线型曲线实现加减速控制,兼顾加减速平滑性能和定长时间。实验结果表明,该控制器引入点动微调粗调和加减速后,定长精度较高,定位速度快,定长时间可灵活配置,特别适合一维定长定位应用场合。
关键词:步进电机;定长控制;加减速;微调粗调;ATmega128
Abstract: Analysing two important factors of the accuracy of step motor length control, author designed a single-axis step motor length controller based on microcontroller ATmega128. On the one hand, the method of jog fine tuning and jog coarse tuning is used to limit the error value of point zero calibration as small as possible; On the other hand, taking into account the acceleration and deceleration smooth performance and length control time, the ladder curve and the linear curve are integrated to implement the acceleration and deceleration control. The experimental results shows that the length controller has a good performance of high accuracy positioning, fast speed positioning and flexible control time and it‘ very suitable for the one-dimensional length positioning applications.
Key words: step motor; length control; acceleration and deceleration; fine tuning and coarse tuning; ATmega128
1 引言
步进电机是纯粹的数字控制电动机,其角位移和角速度分别与输入脉冲数和脉冲频率成正比,开环状态下控制简单方便,在定长定位场合得到了广泛的应用[1]。步进电机的定长控制往往是以参考零点为初始位置配合一定的加减速算法得以实现的,因此其定长定位精度受两个因素影响。第一个因素是零点标定的精确性,零点标定精度越高定位误差越小,反之定位误差越大。通常有传感器法、专用芯片法和直接归零法来实现零点标定,传感器法对传感器的安装精度有较高要求,而后两者都需要在目标零点安装挡板,这对电机有一定冲击。第二个因素是加减速的平滑性能,加速度越大定位时间越短却容易丢步,反之定位时间越长但可有效避免丢步。目前有阶梯型、直线线和S型曲线算法来实现加减速控制[2]。阶梯型曲线算法将加减速阶段的总步数均分给若干频率段,加速度物理意义不明显,频率台阶大容易造成电机丢步;直线型曲线算法中加减速阶段每个频率只走一步,加速度恒定但均分过细导致在线计算量过大或者存储量过大;S型曲线算法平滑性能均要比前两者都好,实现起来比较复杂。
本文以兼顾精度和响应速度为目标,采用ATmega128微控制器设计一种单轴步进电机定长控制器。第一,引入点动微调粗调到直接归零法中来提高零点标定的精确性;第二,综合阶梯型和直线型曲线算法,保持加速度的恒定以及减少计算量,缩短定位时间。
2 定长控制器的硬件结构
步进电机定长控制系统的硬件结构图如图1所示,由定长控制器(虚线框所示)、驱动器和步进电机组成。该定长控制器只输出脱机、方向、脉冲、公共信号并接收限位开关信号,它结合步进驱动器以及步进电机组成定长控制系统。
图1 步进电机定长控制系统硬件结构图
该定长控制器采用ATmega128[3]单片机作为核心控制单元,其128KB的Flash和4KB的EEPROM足够满足步进电机定长定位需求。3×6矩阵键盘模块中包括0~9数字、系统、确定、返回、清除等按键,6根列线通过内部上拉到PB0~PB5引脚,3根行线直接接到PE5~PE7,利用行扫描实现对按键的检测;独立式按钮模块中包括电源开关、调试、点动正、点动反、归零、急停等按钮,通过5KΩ电阻上拉到电源;段式液晶显示模块包括一块6位8字的静态驱动段式液晶屏EDS810、LED指示灯以及7片级联的串入并出芯片74HC595,其中6片用来驱动液晶屏每一位的段码,最后一片驱动LED指示灯,利用PC0~PC3对该模块进行驱动。微控制器ATmega128从PA7和PA6输出脱机和方向信号,从PE4输出脉冲信号,这三路信号经过74LS07高压驱动芯片放大后送给外部驱动器。
3 定长控制器的软件设计
重点介绍软件设计中的点动微调粗调和加减速曲线的实现,以便兼顾定长定位精度和定长时间。
3.1点动微调粗调的实现
采用点动微调粗调引入到直接归零法来减小零点标定误差,提高定位精度。点动微调粗调实质上是一种分辨率为单位Hz、调节范围为fmin~fmax的点动运行方式。在这种运行方式中,按住点动按钮时定长控制器发送脉冲驱动电机运转,松开点动按钮时定长控制器停止发送脉冲制动电机。点动微调粗调有两个好处:第一:调节范围连续平滑,在调节范围内可设置任意频率来驱动电机,适合于不同负载场合;第二,步进精度高,当点动频率设置为fmin时,其最低的驱动频率可以达到10Hz,假设点动持续时间为0.5s,则步进电机转动了5个步距角(如果没有细分驱动),精细的步距角可以保证零点标定误差在一个比较小的绝对误差限中。点动微调粗调的具体做法是,在目标零点安装挡板、刻线等零点指示标志,设置一个比较高的频率进行粗调驱动步进电机旋转逼近目标零点,然后以一个比较低的频率反复进行微调,直到步进电机运行到零点指示标志处。
3.2加减速曲线算法的实现
采用加减速控制的目的是克服步进电机在启动和制动阶段的惯性力矩,防止启动丢步和制动过冲,因此良好的加减速控制对定位精度意义重大。结合阶梯型和直线型加减速曲线,来实现对步进电机启动阶段的加速控制和制动阶段的减速控制。加速时,在给定的加速a下步进电机从最大启动频率f1开始运行△S1个步距角切换到f2,f2运行△S2个步距角切换到f3,…,直至切换到设定频率fs,fn-1、fn、△Sn以及a满足匀直线加速的约束;减速时,控制步骤与加速时步骤相反。
介绍加减速曲线算法的具体实现。约定初始状态为:最大启动频率为f1=1000Hz,设定频率fs为最大运行频率为fmax=20000Hz,初始步进间隔为△S1=30,加速度a=1000Hz/s,由式子fn2=f12+2aS,并根据每个频率段上定的步数△S,可以推算出总步数S、该段上的运行频率fn。
(1)取△S1=30,则S=30,f22=10002+2×1000×30,推出f2=1030(Hz);
(2)取△S2=30,则S=60,f32=10002+2×1000×60,推出f3=1058(Hz);
(3)取△S3=30,则S=90,f42=10002+2×1000×90,推出f4=1086(Hz);
(以后每隔5个频率段,△Sn就增加30步)
……
(255)取△S255=1530,则S=198900,f2562=10002+2×1000×198900,推出f256=19970(Hz);
(256)取△S256=1560,则S=200460,f2572=10002+2×1000×200460,推出f257=20048(Hz);由于20048(Hz)>20000(Hz),计算停止。将上面得到的总步数S,分段频率fn,分段步数△Sn形成一张步进电机加减速步进频率和步进间隔表,如表1所示。
表1 步进电机加减速步进频率和步进间隔表
加速时,从启动频率f1至设定频率fs依次取步进频率fn和步进间隔△Sn,实时判断是否需要更新步进频率和步进间隔;加速完毕后如果存在匀速阶段,以设定频率fs匀速运行至减速点;减速时,从设定频率fs至启动频率f1依次取fn和△Sn,实时判断是否需要更新步进频率和步进间隔,当f1的步进间隔走完时电机立刻制动。
3.3定长控制方案
结合设定参数和加减速曲线来实现步进电机的定长控制,设定参数通常包括长度L(脉冲数)、速度fs(Hz)、加速度等级an(n取1~5)以及方向等。首先,在定长控制器中内置如图2(a)所示的5条加减速曲线(取f1=1000Hz,fmax=20000Hz,an=(1000*n)Hz/s),用户只能选择这5种加速度当中的一种,按照加减速曲线算法形成每条曲线的步进电机加减速步进频率和步进间隔表,并存入ATmega128的Flash中。其次,根据加速度等级、速度、长度三个参数来判断是否存在匀速阶段。查表后计算出加速阶段的总步数S,一般会出现四种情况:当fs<= f1时,加减速没有意义,步进电机直接以设定频率fs启动走完长度L;当fs> f1且L>2S时,存在匀速阶段,对步进电机实施如图2(b)所示的轨迹控制;当fs> f1且L=2S时,只存在加减速阶段,对步进电机实施如图2(c)所示的轨迹控制;当fs> f1且L<2S时,参数设置欠合理,将设定速度fs替换为最大启动频率f1对步进电机实施如图2(d)所示的轨迹控制,步进电机以f1直接启动时电磁转矩足够大可以克服惯性力矩。
图2 不同设定参数下的定长控制轨迹
3.4附加功能
步进定长控制器具有单位长度脉冲数设定、程序分组、分组延时、分组循环、掉电记忆以及归零等功能。单位长度脉冲数是指单位长度对应的脉冲数量,其设定值依步进电机轴端的连结结构不同而不同;一个目标对象可能需要在不同位置进行切刀动作,程序分组可以满足这个要求,每一条程序由长度、速度、方向、加速度等级四个参数组成,可以设定1~50条程序,可根据生产工艺一次编完程序;分组延时用来设定每条程序之间的延时时间,延时时间内可以人工手动或者控制器自动对目标对象切刀;分组循环是为了满足连续加工多个目标对象的要求,可以设定1~9999次循环;掉电记忆主要将当前的各个分组参数以及当前的定长长度存入ATmega128的EEPROM中;归零能够实现步进电机自动退回至目标零点。
4 实验结果及其分析
为了验证基于ATmega128的单轴步进电机定长控制器的定长精度和定长时间,将其应用于滚珠丝杠定长场合并对相关数据进行了测试和分析。测试平台为定长控制器、SH2034D高压高细分步进电机驱动器、85BYGH四相混合式步进电机以及行程为50cm的滚珠丝杠。
(1) 定长精度测试
定长控制前先完成滚珠丝杠零点标定和单位长度脉冲换算。零点标定采用点动微调粗调方法进行,将滚珠丝杠螺母调试至目标零点;零点标定后固定步进电机驱动器细分数(固定为8细分)并进行单位长度脉冲换算,任意设定一单位长度脉冲数N1(如500个脉冲量/cm)和定长长度L1(如30.5cm),步进电机启动后带动滚珠丝刚并记录丝杠螺母执行长度L1’,重复上述步骤得到测量数据(L1’,N1*L1) 、(L2’,N2*L2)、…、(Ln’,Nn*Ln),利用最小二乘法计算优化的单位长度脉冲数量Nopt并重设该参数。经过实际测量和运算,单位长度脉冲量为565个脉冲量/cm。上述步骤结束后,选择不同的加速度等级,设定好长度、速度、方向后测试丝杠螺母的执行长度,测试结果如表2。
表2 定长长度设定值及测试值
(2)定长时间测试
定长时间由加速时间、匀速时间以及减速时间组成。对于存在加减速的情况,在给定的加速a、设定频率fs以及设定长度Ls下,理论加速时间tr和理论减速时间td相等,其值等于tr=td=(fs-f1)/a,理论匀速时间为tm=(Ls*Nopt-(f1+fs)*tr)/fs,则理论定长时间tc=tr+td+tm。对于只不存在加减速的情况,理论定长时间tc= Ls*Nopt /fs。定长时间测试结果如表3。
表3 定长时间理论值及其测试值
(3)结果分析
表2的测试结果表明定长控制器有着较高的定长精度,所有测试值与设定值的绝对误差稳定在0.1cm附近;设定加速度和设定频率偏高时,误差有所偏高。表3的测试结果显示定长时间测试值与理论值吻合度很高,这满足步进电机加减速曲线算法规律,为用户灵活控制定长时间提供了机会。值得注意的一点,表3中测试编号为2的数据中,由于设定频率偏高而设定长度偏短步进电机将以f1直接匀速运动,这符合设计的定长控制方案。
5 结论
采用ATmega128的单轴步进电机定长控制器在滚珠丝杠应用场合得到了良好的应用,控制性能很高特别适合于一维定长定位场合。该控制器的优势在于:第一,采用点动微调粗调可以将零点误差控制在几个单位步距角内,间接提高了定长精度;第二,采用综合了阶梯型和直线型加减速曲线算法,参数设置合理时不仅可有效避免带负载中的丢步或者过冲现象而且定长时间较短;第三,能够根据输入参数控制器可以智能地选择合理定长控制方案;第四,加速物理意义明显理论定长时间可计算,有助于用户灵活配置定长时间。