资源描述
两相4线步进电机的脉冲分配
要实现步进电机的转动,可以用以下两种方式:
(1)8拍的方式
八个状态:1、在A与A-正电压,B与B-不给电悬空;
2、在A与A-正电压,B与B-也给正电压;
3、A与A-给电压悬空,B与B-正电压;
4、A与A-给负电压,B与B-给正电压;
5、A与A-给负电压,B与B-不给悬空;
6、A与A-给负电压,B与B-给负电压;
7、A与A-不给电悬空,B与B-给负电压;
8、A与给正电压,B与B-给负电压;按以上八个状态轮流供电,控制一下脉宽应该就可以了。
四个引脚各一根控制线:A~H表示各线时序
A B C D E F G H
A 1 1 0 0 0 0 0 1
A- 0 0 0 1 1 1 0 0
B 0 1 1 1 0 0 0 0
B- 0 0 0 0 0 1 1 1
.........
(2)4拍的方式
一般是电流驱动的。 我下面的a~ 和b~ 表示反向电流。
两相双二拍:
ab - a~b - a~b~ - ab~ 为一个转向。
ab - ab~ - a~b~ - a~b 为反向。
下面是用p1.0-p1.3驱动的简易例子程序,没有加入脉冲宽度控制,本程序在IO口上输出分别接9012/9013输出电流(类似功放OTL电路接法),用电脑软驱的磁头步进电机测试通过。
org 00h
jmp main
main:
mov p1,#0001b
call d10ms ;延时
mov p1,#0101b
call d10ms ;延时
mov p1,#0100b
call d10ms ;延时
mov p1,#0110b
call d10ms ;延时
mov p1,#0010b
call d10ms ;延时
mov p1,#1010b
call d10ms ;延时
mov p1,#1000b
call d10ms ;延时
mov p1,#1001b
call d10ms ;延时
jmp main
d10ms:;延时程序,根据晶振来改参数
mov r5,#3
dddd:mov r4,#10
djnz r4,$
djnz r4,$
;djnz r4,$根据时间长短加减语句
djnz r5,dddd
ret
end
org 00h
mov r6,#0
mov r7,#0
mov dptr,#djzsx
main:
call bjdj
call d10ms ;延时
jmp main
bjdj:inc r6
cjne r6,#252,djjj
mov r6,#0
cpl 01h
djjj:jb 01h ,zzzz
mov dptr,#djzsx
jmp djzza
zzzz:mov dptr,#djfsx
djzza:inc r7
cjne r7,#8,djzz
mov r7,#0
djzz:mov a,r7
movc a,@a+dptr
mov p1,a
ret
djzsx:db 0001b,0101b,0100b,0110b,0010b,1010b,1000b,1001b
djfsx:db 1001b,1000b,1010b,0010b,0110b,0100b,0101b,0001b
d10ms:;延时程序,根据晶振来改参数
mov r5,#3
dddd:mov r4,#10
djnz r4,$
djnz r4,$
;djnz r4,$根据时间长短加减语句
djnz r5,dddd
ret
end
展开阅读全文