uln2803步进电机的控制原理电路图和源程序 步进电机的控制原理和程序
选自北航出版 耿德根主编《高速嵌入式单片机原理与应用》第七章7.4.2
源程序:SLAVR742.ASM
自从六十年代初期步进电机面世以来,在过去几年它的重要性大大提高了。它用来驱动时钟和其他采用指针的仪器,打印机、绘图仪、磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等的机械装置。关于马进电机工作原理请参考有关资料。
下面用单极1-2相激磁方法步进电机做实验,即1极、2极、1极、2极、....极以次循环,如何用单极二相激该方法控制步进电机,由读者或用户自行
编制程序实验。
;实验选用4.5V步进电机,用5V即可,实验时节省一组步进电机驱动电源;
;型号:MA82135; 相数:2相; 电压:4.5V; 电流/相:0.12A; 电阻欧姆:34Ω/相; 重量:30g
;*********************************************
;* 步进电机控制程序(单极1-2相) *
;* *
;*SLAVR742.ASM *
;*use ULN2803 ;使用PC0-PC3 驱动步进电机 *
;*use 11-17new bord *
;*********************************************
.include"8515def.inc"
.def temp =r16
.def dt =r19
.def np =r17
.def step =r18
.def TStep =r20
.def cnt =r21
.equ turntab=0x0200
.org $0000
rjmp RESET
.cseg
.org 0x010
RESET:
ldi temp,low(RAMEND) ;设堆栈
out SPL,temp
ldi temp,high(RAMEND)
out SPL+1,temp
ser TEMP ;C口设置为输出
OUT ddrc,TEMP
ldi zl,low(turntab*2) ;步进电机旋转资料指针
ldi zh,high(turntab*2)
ldi np,4
ldi temp,$44
out portc,temp ;初始化
ldi TStep,$25
rcall delay
ldi cnt,10
clt
rep: ldi step,192
ldi TStep,1 ;1--255
rcall turn
dec cnt
brne rep
loop: nop
rjmp loop
;*************************************************************
; t=1 uncircle turn ;T=1逆时针转 *
; t=0 circle turn ;T=0顺时针转 *
; 96 step a turn *
; TStep is time of a step ; *
;*************************************************************
turn: brts uncircle ;判转向
inc np ;正转
cpi np,8
brne next
clr np
next: push zl
add zl,np
lpm
out portc,r0
pop zl
rcall delay
dec step
brne turn
ret
uncircle: ;反转
dec np
cpi np,$ff
brne next
ldi np,$07
rjmp next
delay: push TStep ;延时子程序
del1: ldi dt,70
del2: push dt
del3: dec dt
brne del3
pop dt
dec dt
brne del2
dec TStep
brne del1
pop TStep
ret
.org turntab
; 0 1 2 3 4 5 6 7 ;步进电机旋转资料表
.db 0x11,0x99,0x88,0xcc,0x44,0x66,0x22,0x33
评论
查看更多