单片机控制步进电机正反转
反转
K3BITP1.6
K4BITP1.7 ;步进电机停止转动
BEEPBITP3.7
;-------------------------------------------------------
ORG 0000H
LJMP MAIN
ORG 0030H
;-------------------------------------------------------
MAIN:
MOVSP,#60H
MOVP1,#0F0H ;关闭步进电机,键输入线置高
MAIN1:
JBK1,MAIN2
ACALLBEEP_BL ;步进电机正转
ACALLFFW
MAIN2:
JBK2,MAIN1
ACALLBEEP_BL ;步进电机反转
ACALLREV
JMPMAIN1
;------------------------正转-------------------------
FFW:
;MOV R3,#12 ;7.5度电机正转1圈共12个周期
MOVR3,#60 ;转5圈
FFW1:
MOV R0,#00H
FFW2:
JBK4,FFW3 ;终止步进电机运行
ACALLBEEP_BL
JMPFFW4
FFW3:
MOV P1,#0F0H
MOV A,R0
;MOV DPTR,#TABLE_F;选择工作方式
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
INC R0
CJNEA,#0FFH,FFW2
DJNZ R3,FFW1
FFW4:
MOV P1,#0F0H
RET
;---------------------------反转--------------------------
REV:
;MOV R3,#12 ;7.5度电机反转1圈共12个周期
MOVR3,#60 ;转5圈
REV1:
MOV R0,#00H
REV2:
JBK4,REV3;终止步进电机运行
ACALLBEEP_BL
JMPREV4
REV3:
MOV P1,#0F0H
MOV A,R0
; MOV DPTR,#TABLE_R ;选择工作方式
MOV DPTR,#TABLE2
MOVC A,@A+DPTR
MOV P1,A
CALL DELAY
INC R0
CJNEA,#0FFH,REV2
DJNZ R3,REV1
REV4:
MOV P1,#0F0H
RET
;-------------------------------------------------------
DELAY:
MOV R7,#40 ;步进电机的转速
DEL1:MOV R6,#248
DJNZ R6,$
DJNZ R7,DEL1
RET
;-------------------------------------------------------
DELAY1:
MOV R5,#20 ;2S 延时子程序
DEL2:
MOV R7,#200
DEL3:
MOV R6,#250
DJNZR6,$
DJNZR7,DEL3
DJNZR5,DEL2
RET
;-------------------------------------------------------
; 单双八拍工作方式
TABLE_F:;正转表
DB0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H
DB0FFH
TABLE_R:;反转表
DB0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H
DB0FFH
;-------------------------------------------------------
; 双四拍工作方式:
TABLE1:
DB 0F3H,0F6H,0FcH,0F9H;正转表
DB 0FFH;正转结束
TABLE2:
DB 0F9H,0FCH,0F6H,0F3H;反转表
DB 0FFH;反转结束
;--------------------------------------------------------
;蜂鸣器响一声子程序
;--------------------------------------------------------
BEEP_BL:
MOVR6,#100
BL1:
CALLDEX1
CPLBEEP
DJNZR6,BL1
RET
DEX1:
MOVR7,#180
DEX2:
NOP
DJNZR7,DEX2
RET
;---------------------------------------------------------
END
四相步进电机:
齿距角: Qz = 2π/ Z Z --- 转子的齿数
步距角---转子走一步所转过的角度
步距角: Qn = Qz/N = 2π/NZN --- 步进电机工作拍数
步进电机转速:
n = 60×f / N×Z (转/分); f =脉冲频率(Hz)
对于步距角为7.5度的步进电机而言:
Qn = 7.5度
Qz = Qn×N = 7.5×4=30度 (齿距角)
Z=2π/Qz = 360/30 = 12 (转子的齿数)
四相步进电机有三种运行状态:
1、步进电机为四相单四拍运行状态:
当电机绕组通电时序为A-B-C-D时为正转,通电时序为D-C-B-A时为反转。
N = 4
步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°
则步进电机转一圈所需步进数: 360°/7.5°=48 (步进数)
2、步进电机为四相双四拍运行状态:
当电机绕组通电时序为AB-BC-CD-DA时为正转,通电时序为DA-CD-BC-AB时为反转。
N = 4
步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°
则步进电机转一圈所需步进数: 360°/7.5°=48 (步进数)
3、步进电机为四相八拍运行状态。
当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时为正转,通电时序为DA-D-CD-C-BC-B-BA-A时为反转。
N = 8
步距角: Qn = Qz/N = 2π/NZ =360/8*12=3.75°
则步进电机转一圈所需步进数: 360°/3.75°=96 (步进数)
单片机控制步进电机正反 相关文章:
- 单片机控制步进电机的正反转(11-30)
- 单片机控制步进电机1步10步100步正反转(11-22)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)