摘要:本文简要叙述了高精度位置环系统的组成方法,详细阐述了光电编码器在位置环中的应用原理和速度修正方法。概述了单片机及串行D/A的应用。
关键词:光电编码器,位置控制,测速发电机,恒速控制。
0 引言:
我们在为某单位开发一种高精度恒速泵产品时,需要一种速度调节范围达1:100000以上﹑稳定精度≤0.3%调速系统。我们查阅了国内有关生产伺服控制系统厂家的产品,几乎没有一家能满足要求。为了研制该产品,我们经过认真分析,仔细论证后,决定采用光电编码器作反馈元件,用单片机测出光电编码器每分钟脉冲输出个数,与给定的速度量进行比较然后改变D/A输出电压幅度,送给伺服系统调整电机转速,最终将电机速度控制在±0.3%以内。试验证明该方案是可行的。
现将该系统的组成原理及实现方法作一个简单的介绍。
1 实现原理:
图1中的系统是传统的带PID调节的直流伺服速度控制系统。对于控制精度较低的产品虽能满足要求。但对于精度要求高的场合就不能适应了。这是因为:当电机运转一段时间后,电机温度随着工作时间加长而不断上升,而反馈元件(测速发电机)与伺服电机同轴连接,故测速发电机的温度也随之升高。因为测速发电机是用永磁磁缸制成,其转子线圈切割磁力线而产生电势,其值为:
Ea=εa ∝ N
式中 Ea为测速机输出电势
εa为测速机电势常数
N为电机转速
一般情况下,εa是个常数,测速发电机产生的电势Ea正比于转速N。而实际上电机温度上升后εa已经发生了变化,通常情况下是下降的,εa变小,故Ea也变小。而此时电机转速并未下降,反馈到速度环的电压Δu随之上升,促使电机转速上升,迫使Ea上升,从而达到Δu维持不变。这样,随着电机温度上升,电机的速度也慢慢上升,而给定值并未改变,这就引起电机转速的误差增大。根据实际测量一般电机温度每上升100℃,电机转速的误差会增大1-3%左右。电机转速越低,相对误差越大。
为了纠正电机转速的偏差,采用600线/转的光电编码器作反馈元件,与电机同轴安装,就可以准确测出电机的转速。因为光电编码器是由激光照射光珊发出脉冲的,而光珊安装在光电编码器的转轴上,转轴每转一周(3600)编码器就产生600个脉冲,该脉冲只与转轴速度有关,而与温度无关。因此,只要准确测出光电编码器的脉冲个数,就可确切知道电机的转速。
例如,当电机的转速ND=1000转/分,则每秒钟光电编码器的脉冲个数应为
n光=1000*600/60
=10000(个脉冲)
若
ND=1转/分
n光=1*600/60 =10(个)
如果实际测量值与上述理论计算值有偏差,则可以通过调节D/A输出电压调整电机的转速,最终使
Δn=ND测-ND理
这样就可以将电机的转速控制在我们所希望的误差范围内。
2 元器件的选择;
2.1伺服系统(速度环)选用SC5HC60型直流脉宽伺服系统,调速范围可达1:10000以上,速度精度为0.5%FS。
2.2电机选用稀土直流宽调速伺服测速机组,与伺服系统构成速度闭环系统。
2.3 D/A器件选用分辨率为16位串行D/A。控制线为三线串行方式,即:一根时钟线,一根数据线,一根选通线。
2.4 光电编码器每转输出600个脉冲,五线制。其中两根为电源线,三根为脉冲线(A、B、Z)。电源的工作电压为 +5~+24V直流电源。
工作原理:当光电编码器的轴转动时A、B两根线都产生脉冲输出,A、B两相脉冲相差90 0相位角,由此可测出光电编码器转动方向与电机转速。如果A相脉冲比B相脉冲超前则光电编码器为正转,否则为反转.Z线为零脉冲线,光电编码器每转一圈产生一个脉冲.主要用作计数。A线用来测量脉冲个数,B线与A线配合可测量出转动方向.
2.5单片机选用89C51-24PC单片机,晶振频率为24MHz,用一个定时器作计数器来测量光电编码器的脉冲个数,另一个定时器精确定时,这样可准确测出电机每秒钟转动的距离,同时根据设定值计算出电机每秒钟应转动的理论值并与测量值进行比较,将误差值转换成数字量输出到D/A芯片的输入端,从而改变其电压输出,送给伺服系统控制电机的转速,从而达到恒速的目的。
例如:要将电机控制在500转/分,根据伺服系统的指标,当输入为0~5V信号时,电机转速为1500转/分,故可求得当ND=500转/分时,光码盘每秒钟输出的脉冲数为:
PD=500×600/60=5000个脉冲
对应该转速伺服系统的输入电压应为:
VD=5.000×500/1500=1.6666V
当测出的脉冲个数与计算出的标准值有偏差时,可根据电压与脉冲个数的对应关系计算出输出给伺服系统的增量电压△U:
△U=△P×5.000/(1500×600/60)= △P/3000(V)
而输出到D/A的数字量的增量应为:
△D=△U×216/5.000
电机的整个工作调节过程如下:
工作前通过键盘设定控制转速,计算出输出电压VD并将该电压对应的输出到D/A的数字量V数=VD×216/5.000算出,直接送给D/A,电机开始起动运转。当电机运转一段时间后电机转速不断上升从而导致测速机磁性下降,测速机输出电势下降,经速度环调整后使电机转速上升,运行时间越长,电机转速上升越多。这时系统起动位置环,通过不断测量光电编码器每秒钟输出的脉冲个数,并与标准值PD进行比较,计算出增量△P并将之转换成对应的D/A输出数字量,在原来输出电压的基础上减去增量,迫使电机转速降下来,当测出的△P近似为零时停止调节,这样可将电机转速始终控制在允许的范围内。
3 硬件电路的实现
实际工作中由于伺服系统工作电流较大,对于微机干扰较大,故在硬件电路设计时应考虑到系统的隔离和干扰问题。由于选用的是串行D/A。信号的传输只用三根线,故采取隔离措施相对容易些。而光电编码器工作也容易受到干扰,因此除了正常的接地外,还要将光电编码器输出线中的地线可靠接地。光电编码器的A线做脉冲检测用,Z线作计数器用,速度输入用键盘输入数字,显示用液晶显示器。
4 软件
根据电路的连接情况,采用汇编语言编写了整个程序。现将部分阐述如下:
4. 1初始化
初始化内容包括定时器、中断系统及个单元内容的初始化
HSTART:MOV SP,#0E0H ;设置堆栈顶地址
MOV IE,#90H ;开中断及串行口中断允许
MOV IP,#5 ;将定时器1和串口中断设置高优先权
MOV TCON,#5 ;外中断0和外中断1全部为边沿触发方式
MOV TMOD,#21H ;定时器0为方式1定时器2为方式2
MOV PCON,#0 ;SMOD=0
MOV SCON,#0D8H ;串口设置成方式3,TB8=1,REN=1
MOV TH1,#0FDH ;设定定时器1重装时间常数
MOV TL1,#0FDH
CLR ET1
SETB REN
SETB ES
MOV TH0,#2CH
MOV TL0,#0
SETB TR0
SETB TR1
……
4. 2定时器0中断子程序
CLOCK0:CLR ET0 ;保护现场指令
MOV TH0,#2CH ;重置时间常数
MOV TL0,#0
INC QSE0
MOV A,#14H ;判别1秒钟定时到否
CJNE A,QSE0,HCLZ
MOV QSE0,#0 ;计数器清零
MOV A,QSEC
ADD A,#1 ;秒单元加1
DA A
MOV QSEC,A
MOV A,#5
CJNE A,QSEC,HCLZ ;判5秒钟到否
MOV QSEC,#0 ;秒单元清零
CLR EX0 ;关中断0停止计数
HCLZ: 恢复现场指令
SETB ET0
RETI ;中断返回
4.3中断0计数程序
POST1:CLR EX0
保护现场指令
MOV A,QLLD ;计数器低位加1
ADD A,#1
MOV QLLD,A
MOV A,QLLD+1
ADDC A,#0
MOV QLLD+1,A
恢复现场指令
SETB EX0
RETI
4. 4处理程序
处理程序包括加减运算程序、数字转换程序、D/A输出程序、实时报警程序、数据采集程序等。