基于单片机的机械臂控制系统设计与制作.docx
《基于单片机的机械臂控制系统设计与制作.docx》由会员分享,可在线阅读,更多相关《基于单片机的机械臂控制系统设计与制作.docx(28页珍藏版)》请在冰豆网上搜索。
![基于单片机的机械臂控制系统设计与制作.docx](https://file1.bdocx.com/fileroot1/2023-2/10/b1c1adf3-7de6-4bbd-9eea-7b1c7a2b814b/b1c1adf3-7de6-4bbd-9eea-7b1c7a2b814b1.gif)
基于单片机的机械臂控制系统设计与制作
基于单片机的机械臂控制系统设计与制作
电子信息科学与技术专业
学号:
姓名:
班级:
电科081
日期:
2011.10.26
AnhuiPolytechnicL*niversity
课程设计题目及要求
第一章绪论
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奇瑞参观感受
AilhuiPol>tvchiii.cI'niver?
*ilj
课程设计题目及要求
题目
基于单片机的机械臂控制系统设计与制作
实习内容:
1,完成基于单片机的机械臂控制系统原理图和PCB的绘制,在基本要求的基础上自己可以作一定的扩展;
2,利用热转印纸、三氯化铁腐蚀液等完成PCB板的制作;
3,完成相应电路的焊接和调试;
4,完成相应软件程序的编写;
5,完成软、硬件的联调;
6,交付实习报告。
实习要求:
1,两人一组,自由搭配,但要遵循能力强弱搭配、男女搭配、考研和不考研的搭配;
2,充分发挥主观能动性,遇到问题尽量自己解决,在基本要求基础上可自由发挥;
3,第一次制作电路,电路不可追求复杂;
4,注意安全!
熨斗、烙铁。
AilhuiPol>tvchiii.cI'niver?
*ilj
第一章绪论
单片机自20世纪70年代问世以来,以其极高的性价比,受到人们的重视和关注,应用广泛,发展迅速。
单片机集体积小、重量轻、抗干扰能力强、环境要求低、价格低廉、可靠性高、灵活性好、开发较为容易等众多优点,以广泛用于工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,无论在民间、商业、及军事领域单片机都发挥着十分重要的作用
二十一世纪,随着机械化、自动化水平的不断提高,不仅减轻了劳动强度、提高生产率,而且把人类活动从危险、恶劣环境中替换出来。
而其中机器人技术,显示出极大的优越性;在宇宙探索、海洋开发以及军事应用上具有重要的实用价值。
大力发展机器人技术,一方面能让社会从劳动苦力型转换到福利休闲型,另一方面能极大的提高民众的幸福感。
在新时期的世界各国,随着应用日益广泛,机器人技术将不断发展并走向成熟。
本次课程设以单片机作为控制器实现对机械手臂的简单控制。
在
单片机最小系统的基础上扩展按键接口和舵机接口以及LED显示器,
构成最简单的机械臂控制系统。
AnhuiPolytechnicUniversity
第二章硬件设计
2.1硬件结构图
本系统的控制器采用的是STC12C5A32S2单片机,具有A/D转换功能,并能产生PWM信号,有内部EEPROM双串口,具有单时钟/机器周期(1T),是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码不仅完全兼容传统8051,而且速度快8-12倍。
本系统是在单片机最小系统的基础上扩展键盘接口和舵机接口以及LED显示模块。
硬件结构图如下:
图1硬件结构
221控制模块
本系统的控制模块选用STC12C5A32S2单片机
引脚及功能:
STC12C5A32S单片机引脚图
P0.0—P0.7(39—32引脚):
P0口是一个漏极开路型准双向I/O口。
在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。
在EPRO编程时,它接收指令字节,而在验证程序时,则输出指令字节。
验证时,必须外接上拉电阻。
P1.0—P1.7(1-8):
P1口是带内部上拉电阻的8位双向I/O口。
在EPRO编程和程序验证时,它接收低8位地址。
AniluiPolytvch11icInivernity
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/PW系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,路高速10位A/D转换(250K/S),针对电机控制、强干扰场合。
本次设计基本原理是通过P3口的6个引脚输出周期固定占空比可调的PWM波形来控制舵机的转动及角度,通过按键实现对舵机角度的控制,从而实现对物品的转移。
通过P0口输出数据以及P2口高四位的扫描实现数码管的显示。
通过P1口以及P2低四位引脚连接按键,控制舵机转动。
2.2.2舵机模块
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
目前在航模,包括飞机模型、潜艇模型,遥控机器人中已经使用得比较普遍。
舵机是一种俗称,其实是一种伺服马达。
一般来讲,舵机主要由以下几个部分组成:
舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。
工作原理:
控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。
舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。
标准的舵机有3条导线,分别是:
电源线、地线、控制线,如图
AnhuiPolytechnicUniversity
2所示。
电源和地线给舵机提供最基本的能源保证,主要是电机的转动消耗。
输岀转轴
电源线%—地线GND
控制线—
舵机的控制信号为周期是20ms的脉宽调制(PWM信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0—180度,呈线性变化。
也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
程序实现上可通过定时器来实现
90
一
图3舵机输出转角与输入信号脉冲宽度的关系
舵机的转速取决于信号脉宽的变化速度。
如果信号脉宽变化速度太较快的话,舵机会反应不过来;将脉宽变化值线性到要求的时间内,一点一点的增加脉宽值,就可以控制舵机的速度了。
具体来说需要在调试时修改数值,以使舵机的运动更平滑。
由于舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,所以舵机会
产生像步进电机一样运动的原因。
由于本设计中选用的舵机所需电源与单片机电源不一致故要单独供电,地线应接在一起。
同时因为舵机所需的驱动电流比较大,因此P3输出口需接上拉电阻。
223显示模块
由于LED显示器集易控制、性能很稳定、耗能少、成本低等众多优点故本设计米用LED显示器
本次设计,选用四联LED显示器,采用动态扫描方式,分别显示所按键位和转动角度。
LED的每段需接一个限流电阻再接至
LED显
P0口,显示电路如下图所示。
这样,就完成的扩展模块的示功能,可以很清晰的观察到对应的舵机转动的角度。
LED显示电路
224按键模块
本系统采用独立按键查询工作方式,通过12个(6组)按键
控制舵机的转动,即通过P2口低四位和P1口控制六个自由度的
舵机正反转动。
由于系统比较简单,且接口充足,所以采用独立按键即可。
当有按键按下时,可控制不同的舵机转动,其中两个按键控制一个舵机,分别控制舵机的正向转动和反向转动。
转动的度数可以通过按键时间的长短控制,最大的转动角度为180度。
2.3软件程序设计
由于使用汇编程序编程能对单片机内部结构及运行原理有深一步了解,同时有程序占用存储空间小等优点,故本实验采用汇编语言
汇编语言的特点:
目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
汇编语言基本保留了机器语言的灵活性。
使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
汇编语言程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。
目标程序是机器语言程序,当它被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编程序如下:
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0INT
ORG001BH
LJMPT1INT
ORG1000H
MEDLEQU4EH
MEDHEQU4FH
WAVEEQU33H
DGLEQU30H
DGHEQU31H
FLAGEQU32H
RANG_SEQU2FH.1
RANG_XEQU2FH.2
FLAG_XEQU2FH.0
DIS_DATEQU55H
LED_DUANEQUP0
NUM_JIEQU58H
NUM_DATEQU37H
NUM_FLAGEQU3EH
MAIN:
MOVTMOD,#11H
MOVTH0,#0B1H
MOVTL0,#0F7H
SETBET1
SETBET0
SETBEA
SETBTR0
MOVMEDH,#0FAH
MOVMEDL,#3AH
MOVSP,#60H
MOVWAVE,#0EFH
MOVFLAG,#0
CLRRANG_S
CLRRANG_X
CLRFLAG_X
MOVNUM_FLAG,#0
MOVDGL,#40H
MOVDGH,#41H
MOV41H,#0FAH
MOV40H,#3AH
MOV43H,#0FAH
MOV42H,#3AH
MOV45H,#0FAH
MOV44H,#3AH
MOV47H,#0FAH
MOV46H,#3AH
MOV49H,#0FAH
MOV48H,#3AH
MOV4BH,#0FAH
MOV4AH,#3AH
MOV38H,#0
MOV39H,#0
MOV3AH,#0
MOV3BH,#0
MOV3CH,#0
MOV3DH,#0
MOV55H,#0
MOV56H,#0
MOV57H,#16
MOV58H,#0
START:
LCALLPADCES
LCALLDISPLAY
JMPSTART
DISPLAY:
SETBP2.4
CLRP2.5
CLRP2.6
CLRP2.7
MOVA,#3
LCALLDUANXIAN
CLRP2.4
SETBP2.5
CLRP2.6
CLRP2.7
MOVA,#2
LCALLDUANXIAN
CLRP2.4
CLRP2.5
SETBP2.6
CLRP2.7
MOVA,#1
LCALLDUANXIAN
CLRP2.4
CLRP2.5
CLRP2.6
SETBP2.7
MOVA,#0
LCALLDUANXIAN
RET
DUANXIAN:
ADDA,#DIS_DAT
MOVR0,A
MOVA,@R0
MOV
DPTR,#TAB_duan
MOVCA,@A+DPTR
MOVLED_DUAN,A
MOVR5,#0FFH
MOVR6,#3
DO:
DJNZR5,$
MOVR5,#0FFH
DJNZR6,DO
RET
TAB_duan:
DB
0C0H,0F9H,0A4H,0B0H,99H,92
H,82H,0F8H
DB
80H,90H,88H,83H,0C6H,0A1H,
86H,8EH,0BFH,0FFH
PADCES:
MOVP1,#0FFH
MOVA,P2
ANLA,#0F0H
ORLA,#0FH
MOVP2,A
MOVA,P1
CPLA
JZNEXTC
JMPDNDN
NEXTC:
MOVA,P2
CPLA
ANLA,#0FH
JZNN
JMPDNDN
NN:
LJMPBAN
DNDN:
MOVR6,#10
DO1:
MOVR5,#0FFH
DJNZR5,$
DJNZR6,DO1
PD:
MOVA,P1
CPLA
JZNEXTP
CJNEA,#1,PAN1MOVFLAG,#1JMPPDN
PAN1:
CJNEA,#2H,PAN2
MOVFLAG,#2JMPPDN
PAN2:
CJNEA,#4H,PAN3MOVFLAG,#3JMPPDN
PAN3:
CJNEA,#8H,PAN4MOVFLAG,#4JMPPDN
PAN4:
CJNEA,#10H,PAN5
MOVFLAG,#5JMPPDN
PAN5:
CJNEA,#20H,PAN6
MOVFLAG,#6JMPPDN
PAN6:
CJNEA,#40H,PAN7
MOVFLAG,#7JMPPDN
PAN7:
CJNEA,#80H,PDN
MOVFLAG,#8JMPPDN
NEXTP:
MOVA,P2
CPLA
ANLA,#0FH
JZBAND
JMPKED
BAND:
LJMPBAN
KED:
MOVA,P2
CPLA
ANLA,#0FH
CJNEA,#1,PAN11
MOVFLAG,#9
JMPPDN
PAN11:
CJNEA,#2,PAN12
MOVFLAG,#10
JMPPDNPAN12:
CJNEA,#4,PAN13
MOVFLAG,#11
JMPPDNPAN13:
CJNEA,#8,PDN
MOVFLAG,#12
JMPPDN
PDN:
LCALLDATCES
CES:
MOVA,FLAG
MOVB,#2
CLRC
DIVAB
MOVA,B
JZJIA
SETBFLAGX
JMPDN
JIA:
CLRFLAG_X
DN:
LCALLCHESHI
JBFLAG_X,C1
JBRANG_S,JIN
CLRRANG_X
MOVR0,DGL
MOVR1,DGH
MOVA,@R0
CLRC
ADDA,#01H
JMPC2
C1:
JBRANG_X,JIN
CLRRANG_S
MOVR0,DGL
MOVR1,DGH
MOVA,@R0
CLRC
SUBBA,#01H
C2:
MOV@R0,A
JNCJIN
MOVA,@R1
JBFLAG_X,C11INCA
MOV@R1,A
JMPJIN
C11:
DECA
MOV@R1,A
JIN:
LCALLNUMCES
MOVA,P2
ANLA,#0F0H
ORLA,#0FH
MOVP2,A
MOVA,P1
CPLA
JZNEXTCA
JMPDNDY
NEXTCA:
MOVA,P2
CPLA
ANLA,#0FH
JZBAN
DNDY:
MOVR6,#5
DY1:
MOVR5,#0FFH
DJNZR5,$
DJNZR6,DY1
LCALLDISPLAY
LJMPPD
BAN:
RET
CHESHI:
CLRC
MOVA,56H
MOVB,#10
MULAB
ADDA,55H
MOVR3,A
MOVA,57H
CJNEA,#17,FUSHI
MOVA,R3
CLRC
SUBBA,#90
JCCHESHID
SETBRANG_S
CLRRANG_X
JMPCHESHID
FUSHI:
MOVA,57H
CJNEA,#16,CHESHID
MOVA,R3
CLRC
SUBBA,#90
JCCHESHID
SETBRANG_X
CLRRANG_S
JMPCHESHID
CHESHID:
RET
NUMCES:
MOVR0,DGL
MOVR1,DGH
MOVA,@R0
MOVR5,A
MOVA,@R1
MOVR4,A
CLRC
MOVA,MEDL
SUBBA,R5
JCJIEWEI
MOVR5,A
CLRC
MOVA,MEDH
JCJIA1
SUBBA,R4
MOVA,R4
MOVR4,A
CPLA
JMPJIAND
MOVR4,A
JIEWEI:
JMPJDF
MOVR5,A
JIA1:
INCR4
MOVA,R4
CLRC
CPLA
MOVA,MEDH
INCA
SUBBA,R4
MOVR4,A
MOVR4,A
JDF:
MOVR7,#0BH
JIAND:
LCALLDIVOK
MOVA,R4
MOVA,R3
ANLA,#80H
MOVB,#10
JNZFUSHUO
DIVAB
MOVR7,#0BH
MOV55H,B
LCALLDIVOK
MOV56H,A
MOVA,R3
MOV57H,#17
MOVB,#10
JMPNUMEND
DIVAB
NUMEND:
MOV55H,B
RET
MOV56H,A
DATCES:
MOV57H,#16
MOVR3,FLAG
JMPNUMEND
MOVA,R3
FUSHUO:
CLRC
MOVA,R5
SUBBA,#3
CPLA
JNCE1
CLRC
MOVWAVE,#0F8H
INCA
MOVDGL,#40H
MOVR5,A
MOVDGH,#41H
MOVNUM_JI,#1
MOVNUM_JI,#4
MOVNUM_DAT,#38H
MOVNUM_DAT,#3BH
JMPEN
JMPEN
E1:
MOVA,R3
E4:
MOVA,R3
CLRC
CLRC
SUBBA,#5
SUBBA,#11
JNCE2
JNCE5
MOVWAVE,#0F4H
MOVWAVE,#0BCH
MOVDGL,#42H
MOVDGL,#48H
MOVDGH,#43H
MOVDGH,#49H
MOVNUM_JI,#2
MOVNUM_JI,#5
MOVNUM_DAT,#39H
MOVNUM_DAT,#3CH
JMPEN
JMPEN
E2:
MOVA,R3
E5:
MOVWAVE,#7CH
CLRC
MOVDGL,#4AH
SUBBA,#7
MOVDGH,#4BH
JNCE3
MOVNUM_JI,#6
MOVWAVE,#0ECH
MOVNUM_DAT,#3DH
MOVDGL,#44H
EN:
MOVDGH,#45H
RET
MOVNUM_JI,#3
CLRRS1
MOVNUM_DAT,#3AH
SETBRS0
JMPEN
ORLP3,#0FCH
E3:
MOVA,R3
SETBTR1
CLRC
CLRTR0
SUBBA,#9
MOVTH0,#0B1H
JNCE4
MOVTL0,#0F7H
MOVWAVE,#0DCH
MOVR0,DGL
MOVDGL,#46H
MOVR1,DGH
MOVDGH,#47H
MOVTH1,@R1
MOVTL1,@R0
SETBTR0
CLRRS1
CLRRS0
RETI
T1INT:
PUSHACC
MOVA,P3
ANLA,#03H
ORLA,WAVE
MOVP3,A
CLRTR1
POPACC
RETI
DIVOK:
CLRC
MOVA,R4
SUBBA,R7
JCDV50
SETBOV
RET
DV50:
MOVR6,#8
DV51:
MOVA,R5
RLCA
MOVR5,A
MOVA,R4
RLCA
MOVR4,A
MOVF0,C
CLRC
SUBBA,R7
ANLC,/F0
JCDV52
MOVR4,A
DV52:
CPLC
MOVA,R3
RLCA
MOVR3,A
DJNZR6,DV51
MOVA,R4
ADDA,R4
JCDV53
SUBBA,R7
JCDV54
DV53:
INCR3
DV54:
CLROV
RET
END
AilhuiPolytvchnict'nivernily
第三章硬件制作以及程序的下载调试
3.1电路板制作
首先用protel99SE绘制原理图,生成PCB并手工调整布局,之后手工布线。
布线时,要设置电气规则,设置安全距离,对电源线、地线加粗;同时要尽量加大焊盘;尽可能地避免跳线
(PCB图如下所示)。
PCB完成后打印在热转印纸上,覆铜板先用砂纸打磨去除上面防氧化胶水,将热转印纸紧贴在板子上,并用熨斗熨几分钟,之后在自来水冲洗下揭去热转印纸,待板子风干,观察上面的油墨线路是否有缺损,若有可用油墨笔将缺损处瞄一下即可。
待油墨风干后放在三氯化铁腐蚀液里腐蚀十分钟左右,腐蚀时要不断晃动腐蚀液加快腐蚀速度,直到板上面未覆油墨的铜全部腐蚀完,取出板子放在自来水中冲洗干净,风干后就可以钻孔了,待孔钻完,将板子放在自来水中用砂纸打磨去覆铜上的油墨,到此板子就制作完成了。
3.2原器件的焊接
PCB制作完毕后紧接着就可以焊接电子原器件,为了焊接方便应先焊接小元件,比如电阻、按键、贴片电容排阻,之后焊接插槽以及其他元件,最后焊接LED显示器。
焊接完毕后的电路板
如下所示:
3.3程序的下载与调试
软件的烧录需要Keil软件、下载器以及USB驱动等,选择相应的单片机型号,打开相应的hex文件,就可以进行程序的下载
了。
软、硬件调试都无误之后,就可以连接舵机进行最后的检测
AnhuiPolytechnicUniversity
了。
通过不同的按键控制不同的舵机转动,同时数码管可以显示出转动度数。
一个完整的机械臂控制系统就完成了。
第四章总结
4.1课程设计体会
通过此次生产