*转贴*两相4线步进电机驱动时序
2007年06月01日 星期五 下午 06:07
无意中间从网上看到两个人的发言,我总结了一下终于把两相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 为反向。 自己的一点体会:偶觉得两相4线电机 和 四相4线电机 差不多.(这从上面我画的图)也可以看出来,只不过物理上绕线的方式不同(这也导致编程上脉冲表的不同),在功能上是一样的. |
下面是用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