找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6563|回复: 6
打印 上一主题 下一主题
收起左侧

[原创diy]试验基于51单片机驱动57步进电机

[复制链接]
跳转到指定楼层
楼主
找到一对拆机的57步进电机
是为以后的遥控小车做准备
于是先做了一个驱动试验
试验结果尚可









分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74784 发表于 2016-9-14 19:33 | 只看该作者
驱动板与驱动电路图




步进电机14问.pdf (112.43 KB, 下载次数: 19) 步进电机57参数.pdf (234.83 KB, 下载次数: 16) 步进电机原理.pdf (617.28 KB, 下载次数: 13)
回复

使用道具 举报

板凳
ID:74784 发表于 2016-9-14 19:34 | 只看该作者
我写的驱动代码
仅仅供坛友做参考


;试验57步进电机驱动汇编代码
;11.0592MHz晶振+AT89C2051/4051
;Lxa0最后修改于2016-9-17--V2.0
;t0备用,t1产生9600波特率
;p10p11p12p13分别对应步进电机ABCD,低电平有效
;步进角为1.8度,一圈360度,需要200个脉冲完成
;A组线圈   P1.0
;B组线圈   P1.1
;C组线圈   P1.2
;D组线圈   P1.3

org 0000h
ajmp mm               ;转主程序
org 0023h
ajmp qz               ;转串口读取指令


;主程序*******************************************************
org 0100h
mm:nop
mov p1,#0ffh           ;关闭全部
mov r0,#00h            ;读dptr首址用
mov r1,#00h            ;存放正反转脉冲数据(1圈200个脉冲,16制为c8h)
mov r2,#00h            ;存放改变转速的数据
mov r3,#00h            ;备用
mov r4,#00h            ;r4和r5短延时用
mov r5,#00h
mov r6,#00h            ;r6和r7长延时用
mov r7,#00h
mov 20h,#00h           ;20h设置wifi标志
mov 21h,#00h           ;21h设置动作标志
mov 22h,#00h           ;动作代码存放单元
mov sp,#4fh            ;设堆栈入口50h
mov scon,#50h          ;设置串口方式1,允许串口接收
mov pcon,#00h          ;设置波特率9600
mov tmod,#21h          ;T0设方式1,T1方式2(自动重装)
mov th1,#0fdh          ;T1设初始值
mov tl1,#0fdh          ;TH1=TL1=#0fdh(波特率9600)
clr et1                ;禁止T1中断
clr ri
clr ti
setb tr1               ;开T1定时器
setb es                ;开串口中断
setb ea                ;开总中断
mm1:nop
acall ssd              ;双闪沟?
acall ssd
acall ssd
acall zz               ;调用正转
acall ssd              ;双光灯
acall ssd
acall ssd
acall fz               ;调用反转
sjmp mm1


;正转子程序***********************************************************************
ORG 0200H
zz:push acc
MOV R1,#0c8h           ;正转1圈发200个脉冲,单八拍
zz1:MOV R0,#00h
zz2:mov p1,0ffh
mov p1,#0ffh
MOV A,R0
MOV DPTR,#0380h
MOVC A,@A+DPTR
JZ zz1                 ;当A=0时转完1圈完毕
MOV P1,A
LCALL ys               ;这个时间是调速的,时间越长速度越慢
INC R0
DJNZ R1,zz2
MOV P1,#0ffh
mov p1,#0ffh
pop acc
ret

;反转子程序***********************************************************************
org 0280h
fz:push acc
MOV R1,#0c8h           ;反转1圈发200个脉冲,单八拍
fz1:MOV R0,#00H
fz2:MOV P1,#0ffh
mov p1,#0ffh
MOV A,R0
MOV DPTR,#03c0h
MOVC A,@A+DPTR
JZ fz1                 ;当A=0时反转1圈完毕
MOV P1,A
CALL ys
INC R0
DJNZ R1,fz2
MOV P1,#0ffh
mov p1,#0ffh
pop acc
ret

;转速控制子程序***********************************************************************
org 0300h
ys:djnz r2,ys           ;步进电机的转速
RET

org 0380h
TABLE1:
DB 0feh,0fcH,0fdh,0f9H,0fbh,0f3H,0f7h,0f6H     ;正转表
DB 00h                                         ;正传结束

org 03c0h
TABLE2:
DB 0feh,0f6h,0f7h,0f3h,0fbh,0f9h,0fdh,0fch     ;反转表
DB 00h                                         ;反转结束


;接收并取出串口接收到的数据指令*******************************
org 0400h
qz:nop
clr ri                 ;先清零串口接收中断位
qz00:reti


;闪光灯代码***************************************************
org 0500h
ssd:clr p3.7           ;Gled闪烁发光
acall dys
setb p3.7
acall dys
acall cys
clr p3.7
acall dys
setb p3.7
acall cys
acall cys
acall cys
acall cys
acall cys
ret

dys:mov r4,#0ffh       ;短延时
mov r5,#10h
dys1:djnz r4,dys1
dys2:djnz r5,dys1
ret

cys:mov r6,#0ffh       ;长延时
mov r7,#0ffh
cys1:djnz r6,cys1
cys2:djnz r7,cys1
ret

end

;四相八拍步进电机顺序
;正转:A-AB-B-BC-C-CD-D-DA----------0feh,0fcH,0fdh,0f9H,0fbh,0f3H,0f7h,0f6h
;反转:A-AD-D-DC-C-CB-B-BA----------0feh,0f6h,0f7h,0f3h,0fbh,0f9h,0fdh,0fch
回复

使用道具 举报

地板
ID:262 发表于 2016-9-24 13:50 | 只看该作者
太详细了,谢谢楼主分享,果断收藏保存.我以前只驱动过5线的步进电机
回复

使用道具 举报

5#
ID:74784 发表于 2016-10-21 19:40 | 只看该作者

我的这个是2个中心抽头
所以出来6根线
5线的就是把2个抽头合并成一个了
回复

使用道具 举报

6#
ID:145202 发表于 2017-10-28 12:09 | 只看该作者
非常好支持下 我拿来放在57上同是1.8角却转动一点正反转 不知哪里问题
回复

使用道具 举报

7#
ID:451441 发表于 2019-7-26 08:55 | 只看该作者
谢谢分享,正好在用57步进电机
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表