§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位置(层数),以供计算机查讯、判断之用。
SHAPE \* MERGEFORMAT
本例采用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)程序清单
ORG 0000H
AJMP MAIN
MAIN: MOV SP, #60H
SUN: SETB P3.5
SETB P3.6
SETB P3.7
CLR P1.6
CLR P1.7
MOV R0, #40H
MOV A, #12H;字符“-”
ML0: MOV @R0, A ;的编码
INC R0
CJNE R0, #42H, ML0
SETB P1.7 ;复位信号
;键输入/显示/键判断 F6H-特殊数据 R3-键号暂存器
ML1: ACALL DIR
ACALL KEY
ADD A, #0F6H ;键号+F6 用于数字/功能键的判断
JC SUN1 ;功能键转移至SUN1
MOV 41H,40H ;数字键号送显示缓冲区
MOV R0, #40H
MOV R3 , A
ANL A, #0FH ;保留低四位
MOV @R0,A
AJMP ML1
功能键处理程序(A、B、C键)
SUN1: MOV A, R3 ;
CJNE A, #0AH,SUN2
AJMP QBCX
SUN2: CJNE A, #0BH,SUN3
AJMP CBCX
SUN3: CJNE A, #0CH,ML1
AJMP SUN
· 键盘子程序
P1口-P1.6正/反转 P1.7复位 P3口- P3.3 P3.4 键盘行输入口R3-列扫描寄存器 初值FEH R4-列号计数器 SBUF-发送缓冲器 发送列扫描信号
KEY:ACALL KS1
JNZ LK1
NI:ACALL DIR
AJMP KEY
LK1:ACALL DIR
ACALL DIR
ACALL KS1
JNZ LK2
AJMP NI
LK2: MOV P1, #00H
MOV R3, #0FEH
MOV R4, #00H
LK4:MOV SBUF,R3
MOV R6, #05H ;延时等待发送
DK6: DJNZ R6, DK6
JB P3.3 LONE
MOV A, #00H
AJMP LKP
LONE:JB P3.4, NEXT
MOV A, #08H
LKP: ADD A, R4
PUSH ACC
LK3: ACALL DIR ;仅做一次处理
ACALL KS1
JNZ LK3
POP ACC ;取键值于ACC
RET
NEXT: INC R4
MOV A, R3
JNB ACC.7,KED
RL A
MOV R3, A
AJMP LK4
KED:AJMP KEY
· 判断键盘有无键按下子程序——无键按下A=00H
KS1: MOV SBUF,#00H
MOV R6, #05H
DS6: DJNZ R6, DS6
MOV A, P3
CPL A
ANL A, #18H
RET
· 显示子程序P1口-LED位扫描输出口
R2-位扫描寄存器 初值为01H SBUF-LED段码发送缓冲器
DIR: PUSH PSW
SETB PSW,4
MOV R0,#40H
MOV R2,#01H
D1: MOV P1,R2
MOV A,@R0
ADD A,#14H
MOVC A,@A+PC
MOV SBUF,A
MOV R7,#02H
D2: MOV R6,#0FFH
D3: DJNZ R6,D3
DJNZ R7,D2
INC R0
MOV A,R2
RL A
MOV R2,A
JNB ACC.2,D1
POP PSW
RET
DB 3FH,06H,5BH,4FH
DB 66H,60H,70H,07H
DB 7FH,6rH,77H,7CH
DB 39H,5EH,79H,71H
DB 31H,6EH,40H,23H
DB 00H
· 延时子程序
YSH: PUSH PSW
SETB PSW.3
MOV R0,#0FFH
SH: MOV R1,#0FFH
SH0: DJNZ R1,#H0
DJNZ R0, SH
POP PSW
RET
机械手控制示意图
· 取包子程序
P1.6-正/反转控制 30H、31H步进脉冲暂存器(X方向)
QBCX: SETB P1.6 ;正转
MOV 30H,#04H ; X0固定脉冲数
MOV 31H,#0D8H
ACALL XYXC ;调用X方向运行子程序
ACALL CSHC ;调用测试子程序
MOV 30H,33H ;X方向列脉冲数
MOV 31H, 34H ;送30H、31H单元
ACALL XYXC ;调用X方向运行子程序
MOV 30H,35H ;Y方向行脉冲数
MOV 31H,36H ;送30H、31H单元
ACALL YYXC ;调用Y方向运行子程序
ACALL QWZC ;调用取物子程序
CLR P1.6 ;反转
MOV 30H, 35H
MOV 31H, 36H
ACALL YYXC ;调用Y方向运行子程序
MOV 30H, 33H
MOV 31H, 34H
ACALL XYXC ;调用X方向运行子程序
MOV 30H,#04H; X0固定脉冲数
MOV 31H, #0D8H
ACALL XYXC ;调用X方向运行子程序
ACALL FWZC ;调用放物子程序
AJMP SUN
· 存包子程序
P.6-正/反转控制 30H、31H步进脉冲暂存器(X方向)
33H、34H -35H、36H
CBCX: ACALL QWZC
SETB P1.6
MOV 30H,#04H ;X0固定脉冲数
MOV 31H,#0D8H ;
ACALL XYXC
ACALL CSHC
MOV 30H,33H
MOV 31H,34H
ACALL XYXC
MOV 30H,35H
MOV 31H,36H
ACALL YYXC
ACALL FWZC
CLR P1.6
MOV 30H, 35H
MOV 31H, 36H
ACALL YYXC
MOV 30H, 33H
MOV 31H, 34H
ACALL XYXC
MOV 31H,#04H
MOV 31H,#0D8H
ACALL XYXC
AJMP SUN
· X方向运行程序
P3.5——脉冲信号输出线-控制MX电机
XYXC: PU3H PSW
SETB PSW.4
MOV R0,30H
ABC0: MOV R1,31H
ABC1: CLR P3.5
ACALL YSH
SETB P3.5
ACALL YSH
DJNZ R1,ABC1
DJNZ R1,ABC0
POP PSW
RET
Y方向运行程序
P3.6——脉冲信号输出线-控制MY电机
YYXC: PUSH PSW
SETB PSW.4
MOV R0, 30H
ADC2: MOV R1,31H
ADC3: CLR P3.6
ACALL YSH
SETB P3.6
ACALL YSH
DJNZ R1, ADC3
DJNZ R0, ADC2
POP PSW
RET
· 取物子程序
P1.6——正/反转 P3.6——Y方向脉冲输出(40H)
P3.7——Z方向脉冲输出 (66H)
QWZC: PUSH PSW
SETB PSW.4
SETB P1.6
MOV R0, #66H
ABC4: CLR P3.7
ACALL YSH
SETB P3.7
ACALL YSH
DJNZ R0,ADC4
MOV R0,#40H
ABC5: CLR P3.6
ACALL YSH
SETB P3.6
ACALL YSH
DJNZ R0, ABC5
CLR P1.6
MOV R0, #66H
ABC6: CLR P3.7
ACALL YSH
SETB P3.7
ACALL YSH
DJNZ R0, ABC6
MOV R0, #40H
ABC7: CLR P3.6
ACALL YSH
SETB P3.6
ACALL YSH
DJNZ R0,ABC7
POP PSW
RET
· 放物子程序
P1.6——正/反转 P3.6——Y方向脉冲输出(40H)
P3.7——Z方向脉冲输出 (66H)
FWZC: PUSH PSW
SETB PSW.4
SETB P1.6
MOV R0, #40H
ABC8:CLR P3.6
ACALL YSH
SETB P3.6
ACALL YSH
DJNZ R0, ADC8
MOV R0,#66H
ABC9: CLR P3.7
ACALL YSH
DJNZ R0,ABC9
CLR P1.6
MOV R0,#40H
ABC10: CLR P3.6
ACALL YSH
SETB P3.6
ACALL YSH
DJNZ R0,ADC10
MOV R0, #66H
ABC11:CLR P3.7
ACALL YSH
SETB P3.7
ACALL YSH
DJNZ R0, ADC11
POP PSW
RET
· 测试子程序
41H——货位列号暂存单元 40H——货位层号暂存单元
41H 40H
33H 04H 03H 02H 01H 35H 05H 03H 01H
34H CDH B9H 8AH 01H 36H BFH 5BH 5BH
CSHC:PUSH A
MOV A, 41H
CJNE A, 03H, MN0
MOV 33H,#04H
MOV 34H,#0CDH
AJMP MN3
MN0: CJNE A, #02H, MN1
MOV 33H,#03H
MOV 34H,#0B9H
AJMP MN3
MN1: CJNE A,#01H, MN2
MOV 33H,#02H
MOV 34H, #8AH
AJMP MN3
MN2:MOV 33H, #01H
MOV 34H, #01H
MN3:MOV A, 40H
CJNE A, #02H,MN4
MOV 35H,#05H
MOV 36H, #0BFH
AJMP MN6
MN4: CJNE A, #01H,MN5
MOV 35H,#03H
MOV 36H,#5BH
AJMP MN6
MN5: MOV 35H,#01H
MOV 36H,#5BH
MN6: POP A
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)启动功能键、完成有关操作,最后,显示提示符“一一”。