最近,在整理废旧物品时,从过去换下的3寸和5寸软驱上拆下几个步进电机,想把它利用一下,就搞了个步进电机控制器。驱动效果还不错,看看下一步能否应用到我的机器人上。
首先介绍4线步进电机,它体积很小,只有4根引线,分别为红、蓝、黄、白。如图示:

控制电路采用了4只8550(PNP)和4只8050(NPN)三极管,L1和L2分别为步进电机的两个线圈,电路使用与单片机相同的电压+5V供电,电路接好后通过插座J1连接到51单片机的PX口。

控制电路实物见下图,该电路可以同时控制两台步进电机,电路输出分别连接至51单片机的P0和P2口,使用三个按钮开关分别接至51单片机的P1.0、P1.1和P1.2,分别控制步进电机的正转、反转和停止。

汇编测试程序如下:
ORG 00H
STOP:ORL P2,#0FFH
ORL P0,#0FFH
LOOP:JNB P1.0,FOR2
JNB P1.1,REV2
JNB P1.2,STOP1
SJMP LOOP
FOR:MOV R0,#00H
FOR1:MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ FOR
CPL A
MOV P2,A
MOV P0,A
JNB P1.2,STOP1
JNB P1.1,REV2
LCALL DELAY
INC R0
SJMP FOR1
REV:MOV R0,#05
REV1:MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
JZ REV
CPL A
MOV P2,A
MOV P0,A
JNB P1.2,STOP1
JNB P1.0,FOR2
LCALL DELAY
INC R0
SJMP REV1
STOP1:LCALL DELAY
JNB P1.2,$
LCALL DELAY
SJMP STOP
FOR2:LCALL DELAY
JNB P1.0,$
LCALL DELAY
SJMP FOR
REV2:LCALL DELAY
JNB P1.1,$
LCALL DELAY
SJMP REV
DELAY:MOV R1,#40
D1:MOV R2,#248
DJNZ R2,$
DJNZ R1,D1
RET
TABLE:DB 00110011B,11000011B,11001100B,00111100B;正转
DB 00
DB 00111100B,11001100B,11000011B,00110011B;反转
DB 00
END