


1.7输出,经74LS14反相后进入9014,经9014放大后控制光电开关,光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。使步进电机随着不同的脉冲信号分别作正转、反转、加速、减速和停止等动作。图中L1为步进电机的一相绕组。AT89C2051选用频率22MHz的晶振,选用较高晶振的目的是为了在方式2下尽量减小AT89C2051对上位机脉冲信号周期的影响。      图3中的RL1"RL4为绕组内阻,50Ω电阻是一外接电阻,起限流作用,也是一个改善回路时间常数的元件。D1"D4为续流二极管,使电机绕组产生的反电动势通过续流二极管(D1"D4)而衰减掉,从而保护了功率管TIP122不受损坏。      在50Ω外接电阻上并联一个200μF电容,可以改善注入步进电机绕组的电流脉冲前沿,提高了步进电机的高频性能。与续流二极管串联的200Ω电阻可减小回路的放电时间常数,使绕组中电流脉冲的后沿变陡,电流下降时间变小,也起到提高高频工作性能的作用。  3.软件设计  该驱动器根据拨码开关KX、KY的不同组合有三种工作方式供选择:  方式1为中断方式:P3.5(INT1)为步进脉冲输入端,P3.7为正反转脉冲输入端。上位机(PC机或单片机)与驱动器仅以2条线相连。  方式2为串行通讯方式:上位机(PC机或单片机)将控制命令发送给驱动器,驱动器根据控制命令自行完成有关控制过程。  方式3为拨码开关控制方式:通过K1"K5的不同组合,直接控制步进电机。  当上电或按下复位键KR后,AT89C2051先检测拨码开关KX、KY的状态,根据KX、KY 的不同组合,进入不同的工作方式。以下给出方式1的程序流程框图与源程序。  在程序的编制中,要特别注意步进电机在换向时的处理。为使步进电机在换向时能平滑过渡,不至于产生错步,应在每一步中设置标志位。其中20H单元的各位为步进电机正转标志位;21H单元各位为反转标志位。在正转时,不仅给正转标志位赋值,也同时给反转标志位赋值;在反转时也如此。这样,当步进电机换向时,就可以上一次的位置作为起点反向运动,避免了电机换向时产生错步。
1口置初值,防止电机上电短路    MOV         TMOD,#60H           ;T1计数器置初值,开中断    MOV         TL1,#0FFH    MOV         TH1,#0FFH    SETB        ET1    SETB        EA    SETB        TR1    SJMP        $  ;***********计数器1中断程序************  IT1P:       JB          P3.7,FAN              ;电机正、反转指针  ;*************电机正转*****************              JB          00H,LOOP0              JB          01H,LOOP1              JB          02H,LOOP2              JB          03H,LOOP3              JB          04H,LOOP4              JB          05H,LOOP5              JB          06H,LOOP6              JB          07H,LOOP7  LOOP0:      MOV         P1,#0D0H              MOV         20H,#02H              MOV         21H,#40H              AJMP        QUIT  LOOP1:      MOV         P1,#090H              MOV         20H,#04H              MOV         21H,#20H              AJMP        QUIT  LOOP2:      MOV         P1,#0B0H              MOV         20H,#08H              MOV         21H,#10H              AJMP        QUIT  LOOP3:      MOV         P1,#030H              MOV         20H,#10H              MOV         21H,#08H              AJMP        QUIT  LOOP4:      MOV         P1,#070H              MOV         20H,#20H              MOV         21H,#04H              AJMP        QUIT  LOOP5:      MOV         P1,#060H              MOV         20H,#40H              MOV         21H,#02H              AJMP        QUIT  LOOP6:      MOV         P1,#0E0H              MOV         20H,#80H              MOV         21H,#01H              AJMP        QUIT  LOOP7:      MOV         P1,#0C0H              MOV         20H,#01H              MOV         21H,#80H              AJMP        QUIT  ;***************电机反转*****************  FAN:        JB          08H,LOOQ0              JB          09H,LOOQ1              JB          0AH,LOOQ2              JB          0BH,LOOQ3              JB          0CH,LOOQ4              JB          0DH,LOOQ5              JB          0EH,LOOQ6              JB          0FH,LOOQ7  LOOQ0:      MOV         P1,#0A0H              MOV         21H,#02H              MOV         20H,#40H              AJMP        QUIT  LOOQ1:      MOV         P1,#0E0H              MOV         21H,#04H              MOV         20H,#20H              AJMP        QUIT  LOOQ2:      MOV         P1,#0C0H              MOV         21H,#08H              MOV         20H,#10H              AJMP        QUIT  LOOQ3:      MOV         P1,#0D0H              MOV         21H,#10H              MOV         20H,#08H              AJMP        QUIT  LOOQ4:      MOV         P1,#050H              MOV         21H,#20H              MOV         20H,#04H              AJMP        QUIT  LOOQ5:      MOV         P1,#070H              MOV         21H,#40H              MOV         20H,#02H              AJMP        QUIT  LOOQ6:      MOV         P1,#030H              MOV         21H,#80H              MOV         20H,#01H              AJMP        QUIT  LOOQ7:      MOV         P1,#0B0H              MOV         21H,#01H              MOV         20H,#80H  QUIT:       RETI              END  4.结论      该驱动器经实验验证能驱动0.5N.m的步进电机。将驱动部分的电阻、电容及续流二极管的有关参数加以调整,可驱动1.2N.m的步进电机。该驱动器电路简单可靠,结构紧凑,对于I/O口线与单片机资源紧张的系统来说特别适用。 | 欢迎光临 DIY编程器网 (http://www.diybcq.com/) | Powered by Discuz! X3.2 |