2024年2月2日发(作者:)
基于单片机的机械臂控制系统设计与制作
电子信息科学与技术专业
学 号:**********
* ****
班 级:电科081
日 期:2011.10.26
目 录
课程设计题目及要求
第一章 绪论
1.1 设计题目及要求
1.2 设计内容
第二章 硬件设计
2.1 硬件结构图
2.2 各模块工作原理及设计
2.2.1 控制模块
2.2.2 显示模块
2.2.3 按键模块
2.2.4 舵机模块
2.3 软件程序设计
第三章 硬件制作以及程序的下载调试
3.1 电路板的制作
3.2 元器件的焊接
3.3 程序的下载与调试
第四章 总结
4.1 课程设计体会
4.2 奇瑞参观感受
- 2 -
课程设计题目及要求
题目: 基于单片机的机械臂控制系统设计与制作
实习内容:
1,完成基于单片机的机械臂控制系统原理图和PCB的绘制,在
基本要求的基础上自己可以作一定的扩展;
2,利用热转印纸、三氯化铁腐蚀液等完成PCB板的制作;
3,完成相应电路的焊接和调试;
4,完成相应软件程序的编写;
5,完成软、硬件的联调;
6,交付实习报告。
实习要求:
1,两人一组,自由搭配,但要遵循能力强弱搭配、男女搭配、考研和不考研的搭配;
2,充分发挥主观能动性,遇到问题尽量自己解决,在基本要求基础上可自由发挥;
3,第一次制作电路,电路不可追求复杂;
4,注意安全!熨斗、烙铁。
- 3 -
第一章 绪 论
单片机自20世纪70年代问世以来,以其极高的性价比,受到人们的重视和关注,应用广泛,发展迅速。单片机集体积小、重量轻、抗干扰能力强、环境要求低、价格低廉、可靠性高、灵活性好、开发较为容易等众多优点,以广泛用于工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,无论在民间、商业、及军事领域单片机都发挥着十分重要的作用
二十一世纪,随着机械化、自动化水平的不断提高,不仅减轻了劳动强度、提高生产率,而且把人类活动从危险、恶劣环境中替换出来。而其中机器人技术,显示出极大的优越性;在宇宙探索、海洋开发以及军事应用上具有重要的实用价值。大力发展机器人技术,一方面能让社会从劳动苦力型转换到福利休闲型,另一方面能极大的提高民众的幸福感。在新时期的世界各国,随着应用日益广泛,机器人技术将不断发展并走向成熟。
本次课程设以单片机作为控制器实现对机械手臂的简单控制。在单片机最小系统的基础上扩展按键接口和舵机接口以及LED显示器,构成最简单的机械臂控制系统。
- 4 -
第二章 硬件设计
2.1 硬件结构图
本系统的控制器采用的是STC 12C5A32S2单片机,具有A/D转换功能,并能产生PWM信号,有内部EEPROM、双串口,具有单时钟/机器周期(1T),是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码不仅完全兼容传统8051,而且速度快8-12倍。
本系统是在单片机最小系统的基础上扩展键盘接口和舵机接口以及LED显示模块。
硬件结构图如下:
图1 硬件结构
- 5 -
2.2 各模块工作原理及设计
2.2.1 控制模块
本系统的控制模块选用STC 12C5A32S2单片机
引脚及功能:
CLKOUT2/P1.0 P1.1 ECI/P1.2 CCP0/P1.3 SS/CCP1/P1.4 MOSI/P1.5 MISO/P1.6SCLK/P1.7P4.7/RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3CLKOUT0/P3.4CLKOUT1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GND17181920PDIP-453433323134232221VccP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7EX_LVD/P4.6/RST2ALE/P4.5NA/P4.4P2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8
STC12C5A32S2单片机引脚图
P0.0—P0.7(39—32引脚):P0口是一个漏极开路型准双向I/O口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。在EPROM编程时,它接收指令字节,而在验证程序时,则输出指令字节。验证时,必须外接上拉电阻。
P1.0—P1.7(1-8):P1口是带内部上拉电阻的8位双向I/O口。在EPROM编程和程序验证时,它接收低8位地址。
- 6 -
P2.0—P2.7(21-28):P2口是一个带内部上拉电阻的8位双向I/O口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。
P3.0—P3.7(10-17):P3口是一个带内部上拉电阻的8位双向I/O口。
STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制、强干扰场合。
本次设计基本原理是通过P3口的6个引脚输出周期固定占空比可调的PWM波形来控制舵机的转动及角度,通过按键实现对舵机角度的控制,从而实现对物品的转移。通过P0口输出数据以及P2口高四位的扫描实现数码管的显示。通过P1口以及P2低四位引脚连接按键,控制舵机转动。
2.2.2 舵机模块
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在航模,包括飞机模型、潜艇模型,遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。
一般来讲,舵机主要由以下几个部分组成:舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。
工作原理:控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。
- 7 -
标准的舵机有3条导线,分别是:电源线、地线、控制线,如图2所示。电源和地线给舵机提供最基本的能源保证,主要是电机的转动消耗。
舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。程序实现上可通过定时器来实现
- 8 -
舵机的转速取决于信号脉宽的变化速度。如果信号脉宽变化速度太较快的话,舵机会反应不过来;将脉宽变化值线性到要求的时间内,一点一点的增加脉宽值,就可以控制舵机的速度了。具体来说需要在调试时修改数值,以使舵机的运动更平滑。由于舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,所以舵机会产生像步进电机一样运动的原因。
由于本设计中选用的舵机所需电源与单片机电源不一致故要单独供电,地线应接在一起。同时因为舵机所需的驱动电流比较大,因此P3输出口需接上拉电阻。
2.2.3 显示模块
由于LED显示器集易控制、性能很稳定、耗能少、成本低等众多优点故本设计采用LED显示器。
本次设计,选用四联LED显示器,采用动态扫描方式,分别显示所按键位和转动角度。LED的每段需接一个限流电阻再接至
- 9 -
P0口,显示电路如下图所示。这样,就完成的扩展模块的LED显示功能,可以很清晰的观察到对应的舵机转动的角度。
LED显示电路
2.2.4 按键模块
本系统采用独立按键查询工作方式,通过12个(6组)按键控制舵机的转动,即通过P2口低四位和P1口控制六个自由度的舵机正反转动。由于系统比较简单,且接口充足,所以采用独立按键即可。
当有按键按下时,可控制不同的舵机转动,其中两个按键控制一个舵机,分别控制舵机的正向转动和反向转动。转动的度数可以通过按键时间的长短控制,最大的转动角度为180度。
2.3 软件程序设计
由于使用汇编程序编程能对单片机内部结构及运行原理有深一步了解,同时有程序占用存储空间小等优点,故本实验采用汇编语言
汇编语言的特点:
- 10 -
目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。汇编语言基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
汇编语言程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,当它被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0INT
ORG 001BH
LJMP T1INT
ORG 1000H
MEDL EQU 4EH
MEDH EQU 4FH
WAVE EQU 33H
DGL EQU 30H
DGH EQU 31H
FLAG EQU 32H
RANG_S EQU 2FH.1
RANG_X EQU 2FH.2
FLAG_X EQU 2FH.0
DIS_DAT EQU 55H
LED_DUAN EQU P0
NUM_JI EQU 58H
NUM_DAT EQU 37H
NUM_FLAG EQU 3EH
- 11 -
MAIN:
MOV TMOD,#11H
MOV TH0,#0B1H
MOV TL0,#0F7H
SETB ET1
SETB ET0
SETB EA
SETB TR0
MOV MEDH,#0FAH
MOV MEDL,#3AH
MOV SP,#60H
MOV WAVE,#0EFH
MOV FLAG,#0
CLR RANG_S
CLR RANG_X
CLR FLAG_X
MOV NUM_FLAG,#0
MOV DGL,#40H
MOV DGH,#41H
MOV 41H,#0FAH
MOV 40H,#3AH
MOV 43H,#0FAH
MOV 42H,#3AH
MOV 45H,#0FAH
MOV 44H,#3AH
MOV 47H,#0FAH
MOV 46H,#3AH
MOV 49H,#0FAH
MOV 48H,#3AH
MOV 4BH,#0FAH
MOV 4AH,#3AH
MOV 38H,#0
MOV 39H,#0
MOV 3AH,#0
MOV 3BH,#0
MOV 3CH,#0
MOV 3DH,#0
MOV 55H,#0
MOV 56H,#0
MOV 57H,#16
MOV 58H,#0
START:
LCALL PADCES
LCALL DISPLAY
JMP START
DISPLAY:
SETB P2.4
CLR P2.5
CLR P2.6
CLR P2.7
MOV A,#3
- 12 -
LCALL DUANXIAN
CLR P2.4
SETB P2.5
CLR P2.6
CLR P2.7
MOV A,#2
LCALL DUANXIAN
CLR P2.4
CLR P2.5
SETB P2.6
CLR P2.7
MOV A,#1
LCALL DUANXIAN
CLR P2.4
CLR P2.5
CLR P2.6
SETB P2.7
MOV A,#0
LCALL DUANXIAN
RET
DUANXIAN:
ADD A,#DIS_DAT
MOV R0,A
MOV A,@R0
MOV
DPTR,#TAB_duan
MOVC A,@A+DPTR
MOV LED_DUAN,A
MOV R5,#0FFH
MOV R6,#3
DO: DJNZ R5,$
MOV R5,#0FFH
DJNZ R6,DO
RET
TAB_duan:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB
80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
PADCES:
MOV P1,#0FFH
MOV A,P2
ANL A,#0F0H
ORL A,#0FH
MOV P2,A
MOV A,P1
CPL A
JZ NEXTC
JMP DNDN
NEXTC: MOV A,P2
CPL A
ANL A,#0FH
JZ NN
JMP DNDN
NN: LJMP BAN
DNDN: MOV R6,#10
DO1: MOV R5,#0FFH
DJNZ R5,$
- 13 -
DJNZ R6,DO1
PD: MOV A,P1
CPL A
JZ NEXTP
CJNE A,#1,PAN1
MOV FLAG,#1
JMP PDN
PAN1: CJNE A,#2H,PAN2
MOV FLAG,#2
JMP PDN
PAN2: CJNE A,#4H,PAN3
MOV FLAG,#3
JMP PDN
PAN3: CJNE A,#8H,PAN4
MOV FLAG,#4
JMP PDN
PAN4: CJNE A,#10H,PAN5
MOV FLAG,#5
JMP PDN
PAN5: CJNE A,#20H,PAN6
MOV FLAG,#6
JMP PDN
PAN6: CJNE A,#40H,PAN7
MOV FLAG,#7
JMP PDN
PAN7: CJNE A,#80H,PDN
MOV FLAG,#8
JMP PDN
NEXTP:
MOV A,P2
CPL A
ANL A,#0FH
JZ BAND
JMP KED
BAND:LJMP BAN
KED:
MOV A,P2
CPL A
ANL A,#0FH
CJNE A,#1,PAN11
MOV FLAG,#9
JMP PDN
PAN11: CJNE A,#2,PAN12
MOV FLAG,#10
JMP PDN
PAN12:CJNE A,#4,PAN13
MOV FLAG,#11
JMP PDN
PAN13:CJNE A,#8,PDN
MOV FLAG,#12
JMP PDN
PDN:
LCALL DATCES
CES: MOV A,FLAG
MOV B,#2
CLR C
DIV AB
MOV A,B
JZ JIA
SETB FLAG_X
JMP DN
JIA:
CLR FLAG_X
DN: LCALL CHESHI
JB FLAG_X,C1
JB RANG_S,JIN
CLR RANG_X
MOV R0,DGL
MOV R1,DGH
MOV A,@R0
CLR C
ADD A,#01H
JMP C2
C1: JB RANG_X,JIN
CLR RANG_S
MOV R0,DGL
MOV R1,DGH
MOV A,@R0
CLR C
SUBB A,#01H
C2: MOV @R0,A
JNC JIN
MOV A,@R1
JB FLAG_X,C11
INC A
MOV @R1,A
JMP JIN
C11: DEC A
MOV @R1,A
JIN: LCALL NUMCES
- 14 -
MOV A,P2
ANL A,#0F0H
ORL A,#0FH
MOV P2,A
MOV A,P1
CPL A
JZ NEXTCA
JMP DNDY
NEXTCA:MOV A,P2
CPL A
ANL A,#0FH
JZ BAN
DNDY: MOV R6,#5
DY1: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,DY1
LCALL DISPLAY
LJMP PD
BAN:
RET
CHESHI:
CLR C
MOV A,56H
MOV B,#10
MUL AB
ADD A,55H
MOV R3,A
MOV A,57H
CJNE A,#17,FUSHI
MOV A,R3
- 15 -
CLR C
SUBB A,#90
JC CHESHID
SETB RANG_S
CLR RANG_X
JMP CHESHID
FUSHI: MOV A,57H
CJNE A,#16,CHESHID
MOV A,R3
CLR C
SUBB A,#90
JC CHESHID
SETB RANG_X
CLR RANG_S
JMP CHESHID
CHESHID:
RET
NUMCES:
MOV R0,DGL
MOV R1,DGH
MOV A,@R0
MOV R5,A
MOV A,@R1
MOV R4,A
CLR C
MOV A,MEDL
SUBB A,R5
JC JIEWEI
MOV R5,A
CLR C
MOV A,MEDH
SUBB A,R4
MOV R4,A
JMP JIAND
JIEWEI:
MOV R5,A
INC R4
CLR C
MOV A,MEDH
SUBB A,R4
MOV R4,A
JIAND:
MOV A,R4
ANL A,#80H
JNZ FUSHUO
MOV R7,#0BH
LCALL DIVOK
MOV A,R3
MOV B,#10
DIV AB
MOV 55H,B
MOV 56H,A
MOV 57H,#16
JMP NUMEND
FUSHUO:
MOV A,R5
CPL A
CLR C
INC A
MOV R5,A
- 16 -
JC JIA1
MOV A,R4
CPL A
MOV R4,A
JMP JDF
JIA1:
MOV A,R4
CPL A
INC A
MOV R4,A
JDF: MOV R7,#0BH
LCALL DIVOK
MOV A,R3
MOV B,#10
DIV AB
MOV 55H,B
MOV 56H,A
MOV 57H,#17
JMP NUMEND
NUMEND:
RET
DATCES:
MOV R3,FLAG
MOV A,R3
CLR C
SUBB A,#3
JNC E1
MOV WAVE,#0F8H
MOV DGL,#40H
MOV DGH,#41H
MOV NUM_JI,#1
MOV NUM_DAT,#38H
JMP EN
E1: MOV A,R3
CLR C
SUBB A,#5
JNC E2
MOV WAVE,#0F4H
MOV DGL,#42H
MOV DGH,#43H
MOV NUM_JI,#2
MOV NUM_DAT,#39H
JMP EN
E2: MOV A,R3
CLR C
SUBB A,#7
JNC E3
MOV WAVE,#0ECH
MOV DGL,#44H
MOV DGH,#45H
MOV NUM_JI,#3
MOV NUM_DAT,#3AH
JMP EN
E3: MOV A,R3
CLR C
SUBB A,#9
JNC E4
MOV WAVE,#0DCH
MOV DGL,#46H
MOV DGH,#47H
- 17 -
MOV NUM_JI,#4
MOV NUM_DAT,#3BH
JMP EN
E4: MOV A,R3
CLR C
SUBB A,#11
JNC E5
MOV WAVE,#0BCH
MOV DGL,#48H
MOV DGH,#49H
MOV NUM_JI,#5
MOV NUM_DAT,#3CH
JMP EN
E5: MOV WAVE,#7CH
MOV DGL,#4AH
MOV DGH,#4BH
MOV NUM_JI,#6
MOV NUM_DAT,#3DH
EN:
RET
CLR RS1
SETB RS0
ORL P3,#0FCH
SETB TR1
CLR TR0
MOV TH0,#0B1H
MOV TL0,#0F7H
MOV R0,DGL
MOV R1,DGH
MOV TH1,@R1
MOV TL1,@R0
SETB TR0
CLR RS1
CLR RS0
RETI
T1INT:
PUSH ACC
MOV A,P3
ANL A,#03H
ORL A,WAVE
MOV P3,A
CLR TR1
POP ACC
RETI
DIVOK: CLR C
MOV A,R4
SUBB A,R7
JC DV50
SETB OV
RET
DV50: MOV R6,#8
DV51: MOV A,R5
RLC A
MOV R5,A
- 18 -
MOV A,R4
RLC A
MOV R4,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DV52
MOV R4,A
DV52: CPL C
MOV A,R3
RLC A
MOV R3,A
DJNZ R6,DV51
MOV A,R4
ADD A,R4
JC DV53
SUBB A,R7
JC DV54
DV53: INC R3
DV54: CLR OV
RET
END
第三章 硬件制作以及程序的下载调试
3.1 电路板制作
首先用protel 99 SE绘制原理图,生成PCB并手工调整布局,之后手工布线。布线时,要设置电气规则,设置安全距离,对电源线、地线加粗;同时要尽量加大焊盘;尽可能地避免跳线(PCB图如下所示)。
PCB完成后打印在热转印纸上,覆铜板先用砂纸打磨去除上面防氧化胶水,将热转印纸紧贴在板子上,并用熨斗熨几分钟,之后在自来水冲洗下揭去热转印纸,待板子风干,观察上面的油墨线路是否有缺损,若有可用油墨笔将缺损处瞄一下即可。待油墨风干后放在三氯化铁腐蚀液里腐蚀十分钟左右,腐蚀时要不断晃动腐蚀液加快腐蚀速度,直到板上面未覆油墨的铜全部腐蚀完,取出板子放在自来水中冲洗干净,风干后就可以钻孔了,待孔钻完,将板子放在自来水中用砂纸打磨去覆铜上的油墨,到此板子就制作完成了。
- 19 -
3.2 原器件的焊接
PCB制作完毕后紧接着就可以焊接电子原器件,为了焊接方便应先焊接小元件,比如电阻、按键、贴片电容排阻,之后焊接插槽以及其他元件,最后焊接LED显示器。焊接完毕后的电路板如下所示:
- 20 -
3.3 程序的下载与调试
软件的烧录需要Keil软件、下载器以及USB驱动等,选择相应的单片机型号,打开相应的hex文件,就可以进行程序的下载了。软、硬件调试都无误之后,就可以连接舵机进行最后的检测
- 21 -
发布者:admin,转转请注明出处:http://www.yc00.com/news/1706817327a1465983.html
评论列表(0条)