MCS51单片机与步进电机接口.docx
《MCS51单片机与步进电机接口.docx》由会员分享,可在线阅读,更多相关《MCS51单片机与步进电机接口.docx(22页珍藏版)》请在冰豆网上搜索。
![MCS51单片机与步进电机接口.docx](https://file1.bdocx.com/fileroot1/2022-12/7/be3efde7-4169-495f-813b-f29e7f3acac0/be3efde7-4169-495f-813b-f29e7f3acac01.gif)
MCS51单片机与步进电机接口
§9.3应用举例——机械手的微机控制
随着科学技术的进步、工业自动化的进程,机械手将进一步取代简单而笨重的人工操作,逐步把在恶劣环境下工作的人们解放出来,这对于改善人们的工作条件、提高工作效率,具有一定的现实意义。
本例系存取邮件机械手的控制,在邮政部门和立体仓库中作自动存职包裹和货物之用。
一、工作原理
通过键盘,将货位(或包位)代码输入微机,启动存(或取)命令键,机械手即可在微机的控制下,作X、Y、Z三个方向的运动,完成存(或取)包操作。
控制原理如图所示。
系统主要包括微机控制、步进电机控制、机械传动系统、光控音乐电路、工作电源、货架和柜台等七部分组成。
微机根据键入的货物代码,产生相应的脉冲信号,经CH250脉冲分配器和驱动电路,输出具有一定功率的脉冲,驱动有关电机正转或反转及其步数,从而实现货物的存取。
机械手行进中,光控音乐电路驱动蜂呜器发出乐曲,从而增强了工作的节奏、控制的旋律。
二、系统组成
1、硬件设计
如图是机械手微机控制系统硬件电路。
本系统选用MCS-51系列中的8031芯片,扩展了一片2732,以存放用户程序。
由于随机存储的数据不多,只利用片内RAM。
采用两位LED显示器和2×8键盘,P3.5、P3.6和P3.7分别输出X、Y、和Z方向的控制脉冲,P1.6和P1.7分别用来控制步进电机的正/反转和产生复位信号。
2、机械传动部分
机械传动部分包括导轨、小车、升降盘和机械手等部分。
①水平方向位移
步进电机MX调通过滑轮和传送带,使小车在导轨上运动,实现X方向上的位移。
②垂直方向升降
作调方向运动的小车上装有一竖直的六棱金属杆,升降盘套于杆上,杆的顶部装有一定滑轮并配有平衡锤。
固定于小车上的步进电机MY带动升降盘,实现Y方向上的位移
③机械手动作
机械手装升降盘上,如图所示。
图中A点固定,步进电机MZ带动B点,改变A、B间的较小距离,使得机械手移动较大距离。
④货架
货架分三层,每层有4个包位,共计12个包位。
图中数字为包位编码,编码的个位数表示X位置,十位数表示Y位置(层数),以供计算机查讯、判断之用。
本例采用SB-2A型步进电机,它工作于三相六拍的工作方式。
电机按顺时针方向旋转(即正转)时,各相脉冲顺序为:
→A=1→A=1,B=1→B=1→B,C=1→C=1→C=1,A=1
电机按逆时针方向旋转(即反转)时,各相脉冲顺序为:
→A=1→A=1,C=1→C=1→C=1,B=1→B=1→B=1,A=1
三、程序设计
系统软件包括:
主程序、取包程序、存包程序、货位判断程序、X、Y方向运动和机械手动作子程序等。
(1)程序流程图
限于篇幅,只给出主要流程图。
2、脉冲序列的生成程序
对于步进电机的控制,实际上是控制步进脉冲的个数和步进脉冲的间隔,而步进电机的间隔又可转化为某基准延时子程序的循环次数。
因此,可以很方便地用软件来控制步进电机的运行,达到各种控制目的。
2、货位判断程序
如图是货位判断程序流程图。
功能:
根据键入的货位编码判断货位,以确定X、Y方向所需要的脉冲数
主程序功能:
管理键盘和显示以及有关控制。
无键按下或执行有关命令后,显示提示符“--”
(2)程序清单
ORG0000H
AJMPMAIN
MAIN:
MOVSP,#60H
SUN:
SETBP3.5
SETBP3.6
SETBP3.7
CLRP1.6
CLRP1.7
MOVR0,#40H
MOVA,#12H;字符“-”
ML0:
MOV@R0,A;的编码
INCR0
CJNER0,#42H,ML0
SETBP1.7;复位信号
;键输入/显示/键判断F6H-特殊数据R3-键号暂存器
ML1:
ACALLDIR
ACALLKEY
ADDA,#0F6H;键号+F6用于数字/功能键的判断
JCSUN1;功能键转移至SUN1
MOV41H,40H;数字键号送显示缓冲区
MOVR0,#40H
MOVR3,A
ANLA,#0FH;保留低四位
MOV@R0,A
AJMPML1
功能键处理程序(A、B、C键)
SUN1:
MOVA,R3;
CJNEA,#0AH,SUN2
AJMPQBCX
SUN2:
CJNEA,#0BH,SUN3
AJMPCBCX
SUN3:
CJNEA,#0CH,ML1
AJMPSUN
v键盘子程序
P1口-P1.6正/反转P1.7复位P3口-P3.3P3.4键盘行输入口R3-列扫描寄存器初值FEHR4-列号计数器SBUF-发送缓冲器发送列扫描信号
KEY:
ACALLKS1
JNZLK1
NI:
ACALLDIR
AJMPKEY
LK1:
ACALLDIR
ACALLDIR
ACALLKS1
JNZLK2
AJMPNI
LK2:
MOVP1,#00H
MOVR3,#0FEH
MOVR4,#00H
LK4:
MOVSBUF,R3
MOVR6,#05H;延时等待发送
DK6:
DJNZR6,DK6
JBP3.3LONE
MOVA,#00H
AJMPLKP
LONE:
JBP3.4,NEXT
MOVA,#08H
LKP:
ADDA,R4
PUSHACC
LK3:
ACALLDIR;仅做一次处理
ACALLKS1
JNZLK3
POPACC;取键值于ACC
RET
NEXT:
INCR4
MOVA,R3
JNBACC.7,KED
RLA
MOVR3,A
AJMPLK4
KED:
AJMPKEY
v判断键盘有无键按下子程序——无键按下A=00H
KS1:
MOVSBUF,#00H
MOVR6,#05H
DS6:
DJNZR6,DS6
MOVA,P3
CPLA
ANLA,#18H
RET
v显示子程序P1口-LED位扫描输出口
R2-位扫描寄存器初值为01HSBUF-LED段码发送缓冲器
DIR:
PUSHPSW
SETBPSW,4
MOVR0,#40H
MOVR2,#01H
D1:
MOVP1,R2
MOVA,@R0
ADDA,#14H
MOVCA,@A+PC
MOVSBUF,A
MOVR7,#02H
D2:
MOVR6,#0FFH
D3:
DJNZR6,D3
DJNZR7,D2
INCR0
MOVA,R2
RLA
MOVR2,A
JNBACC.2,D1
POPPSW
RET
DB3FH,06H,5BH,4FH
DB66H,60H,70H,07H
DB7FH,6rH,77H,7CH
DB39H,5EH,79H,71H
DB31H,6EH,40H,23H
DB00H
v
v
v延时子程序
YSH:
PUSHPSW
SETBPSW.3
MOVR0,#0FFH
SH:
MOVR1,#0FFH
SH0:
DJNZR1,#H0
DJNZR0,SH
POPPSW
RET
机械手控制示意图
v取包子程序
P1.6-正/反转控制30H、31H步进脉冲暂存器(X方向)
QBCX:
SETBP1.6;正转
MOV30H,#04H;X0固定脉冲数
MOV31H,#0D8H
ACALLXYXC;调用X方向运行子程序
ACALLCSHC;调用测试子程序
MOV30H,33H;X方向列脉冲数
MOV31H,34H;送30H、31H单元
ACALLXYXC;调用X方向运行子程序
MOV30H,35H;Y方向行脉冲数
MOV31H,36H;送30H、31H单元
ACALLYYXC;调用Y方向运行子程序
ACALLQWZC;调用取物子程序
CLRP1.6;反转
MOV30H,35H
MOV31H,36H
ACALLYYXC;调用Y方向运行子程序
MOV30H,33H
MOV31H,34H
ACALLXYXC;调用X方向运行子程序
MOV30H,#04H;X0固定脉冲数
MOV31H,#0D8H
ACALLXYXC;调用X方向运行子程序
ACALLFWZC;调用放物子程序
AJMPSUN
v存包子程序
P.6-正/反转控制30H、31H步进脉冲暂存器(X方向)
33H、34H-35H、36H
CBCX:
ACALLQWZC
SETBP1.6
MOV30H,#04H;X0固定脉冲数
MOV31H,#0D8H;
ACALLXYXC
ACALLCSHC
MOV30H,33H
MOV31H,34H
ACALLXYXC
MOV30H,35H
MOV31H,36H
ACALLYYXC
ACALLFWZC
CLRP1.6
MOV30H,35H
MOV31H,36H
ACALLYYXC
MOV30H,33H
MOV31H,34H
ACALLXYXC
MOV31H,#04H
MOV31H,#0D8H
ACALLXYXC
AJMPSUN
vX方向运行程序
P3.5——脉冲信号输出线-控制MX电机
XYXC:
PU3HPSW
SETBPSW.4
MOVR0,30H
ABC0:
MOVR1,31H
ABC1:
CLRP3.5
ACALLYSH
SETBP3.5
ACALLYSH
DJNZR1,ABC1
DJNZR1,ABC0
POPPSW
RET
Y方向运行程序
P3.6——脉冲信号输出线-控制MY电机
YYXC:
PUSHPSW
SETBPSW.4
MOVR0,30H
ADC2:
MOVR1,31H
ADC3:
CLRP3.6
ACALLYSH
SETBP3.6
ACALLYSH
DJNZR1,ADC3
DJNZR0,ADC2
POPPSW
RET
v取物子程序
P1.6——正/反转P3.6——Y方向脉冲输出(40H)
P3.7——Z方向脉冲输出(66H)
QWZC:
PUSHPSW
SETBPSW.4
SETBP1.6
MOVR0,#66H
ABC4:
CLRP3.7
ACALLYSH
SETBP3.7
ACALLYSH
DJNZR0,ADC4
MOVR0,#40H
ABC5:
CLRP3.6
ACALLYSH
SETBP3.6
ACALLYSH
DJNZR0,ABC5
CLRP1.6
MOVR0,#66H
ABC6:
CLRP3.7
ACALLYSH
SETBP3.7
ACALLYSH
DJNZR0,ABC6
MOVR0,#40H
ABC7:
CLRP3.6
ACALLYSH
SETBP3.6
ACALLYSH
DJNZR0,ABC7
POPPSW
RET
v放物子程序
P1.6——正/反转P3.6——Y方向脉冲输出(40H)
P3.7——Z方向脉冲输出(66H)
FWZC:
PUSHPSW
SETBPSW.4
SETBP1.6
MOVR0,#40H
ABC8:
CLRP3.6
ACALLYSH
SETBP3.6
ACALLYSH
DJNZR0,ADC8
MOVR0,#66H
ABC9:
CLRP3.7
ACALLYSH
DJNZR0,ABC9
CLRP1.6
MOVR0,#40H
ABC10:
CLRP3.6
ACALLYSH
SETBP3.6
ACALLYSH
DJNZR0,ADC10
MOVR0,#66H
ABC11:
CLRP3.7
ACALLYSH
SETBP3.7
ACALLYSH
DJNZR0,ADC11
POPPSW
RET
v测试子程序
41H——货位列号暂存单元40H——货位层号暂存单元
41H40H
33H04H03H02H01H35H05H03H01H
34HCDHB9H8AH01H36HBFH5BH5BH
CSHC:
PUSHA
MOVA,41H
CJNEA,03H,MN0
MOV33H,#04H
MOV34H,#0CDH
AJMPMN3
MN0:
CJNEA,#02H,MN1
MOV33H,#03H
MOV34H,#0B9H
AJMPMN3
MN1:
CJNEA,#01H,MN2
MOV33H,#02H
MOV34H,#8AH
AJMPMN3
MN2:
MOV33H,#01H
MOV34H,#01H
MN3:
MOVA,40H
CJNEA,#02H,MN4
MOV35H,#05H
MOV36H,#0BFH
AJMPMN6
MN4:
CJNEA,#01H,MN5
MOV35H,#03H
MOV36H,#5BH
AJMPMN6
MN5:
MOV35H,#01H
MOV36H,#5BH
MN6:
POPA
RET
§9.4使用说明
本系统操作方便,而且在存包或取包过程中均有乐曲伴奏,机械手返回原处,音乐自动停止。
一、键盘介绍
键盘有数字键0~9、功能键MON、Q、C键,余下3个扩充键。
(1)数字键(0~9):
向微机输入十进制数字,组成包位编码。
(2)功能键
·监控键(MON):
使系统进入监控程序。
·取包键(Q):
使系统完成取包操作。
·存包键(C):
使系统完成存包操作。
二、操作说明
(1)开启电源(+5V和+25V),两位数码管均应显示提示符“-”表示计算机系统正常。
否则关闭电源,检查故障。
(2)预置包位编码
先输入层号(十位数),后输入序号(个位数)例如,设包位编号为23,则依次按数字键2和3,显示23,表示置数成功。
(3)启动功能键、完成有关操作,最后,显示提示符“一一”。