机械臂的控制论文

学校代码 学号

本科学年论文(设计)

学院、系

专业名称 年 级 学生姓名 指导教师

20

年9月日

目录

摘要 ............................................................... 4 Abstract ........................................................... 5 第一章:绪论 ....................................................... 6

1.1 机械臂的发展史 .............................................. 6 1.2 国内外发展状况 .............................................. 6 1.3 课题研究背景 ................................................ 7 第二章 系统整体设计思路 ........................................... 7

2.1 整体设计概述 ............................................ 7 2.2 单片机简介 ............................................... 7 2.3 系统硬件系统设计 .......................................... 8

2.3.1 电路总框架图...........................................8 2.3.2 硬件电路概括...........................................8

2.3.2.1 单片机电路.....................................8 2.3.2.2 稳压电路............................. .........9 2.3.2.3 舵机驱动电路...................................9 2.3.2.4 传感器电路....................................10

2.4 系统软件系统设计 ......................................... 10

2.4.1 编程思想............................................10

2.4.2 程序流程图..........................................11 2.4.3 程序及注释..........................................12

第三章 PCB设计 ................................................... 19

3.1 PCB设计过程 ........................................... 19 3.2 零件布局 ................................................ 20 3.3 布线 ..................................................... 21 3.4 放置敷铜 ................................................. 19 3. 5 PCB电路图................................................21 第四章:设计过程问题分析 .......................................... 22 第五章:总结 ...................................................... 23

致谢 .............................................................. 23 参考文献 .......................................................... 24

基于C8051F310单片机的机械臂的设计

摘要:随着时代的进步,机械臂技术的应用已越来越普及,已逐渐渗透到军事、

航天、医疗、日常生活及教育娱乐等各个领域。慢慢取代了人类的劳动,尤其是代替人到不能或不适宜去的、有危险等的环境中。

一个完整的机械臂系统主要包括机械、硬件和软件等部分。设计时需要考虑结构设计、控制系统设计、运动学分析等部分,对于整个研发工作,需要把各个部分紧密联系,互相协调设计。本文旨在介绍2010-2011学年论文—机械臂的设计方案。通过C8051F310单片机对五路舵机的分别控制,实现具有五个自由度的机械臂的功能,该机械臂具有灵活、稳定、反应快速、用途广等优点。

关键词:机械臂,单片机,自由度

Based on C8051F310 SCM design of mechanical arm

Author:

Tutor:

Abstract

With the progress of The Times, the application of mechanical arm technology has become more and more popular, already permeates gradually to military and aerospace, medical treatment, the daily life and the education entertainment, and other fields. Slowly replaced human labor, especially instead of people to be or not to go, is dangerous for the environment.

A complete mechanical arm the system includes machinery, hardware and software, and other parts. The design consideration of the need when structure design, control system design, kinematics analysis, for the whole of research and development work of each part, need to close contact each other, coordinate design. This paper aims to introduce the 2010 2011 academic year paper design scheme of mechanical arm. Through the C8051F310 microcontroller to five road of steering gear control to realize respectively with five of the freedom of the function of the mechanical arm, the mechanical arm with flexible, stable and quick response, wide application, etc.

Keywords: Mechanical arm, SCM, degrees of freedom

第一章 绪论

1.1 机械臂的发展史

随着社会分工的细化,从事简单重复工作的人们强烈渴望有某种能代替自

己工作的机械臂出现,1946年第一台数字电子计算机问世以来,计算机取得了惊人的进步,向高速度、大容量、低价格的方向发展。同时,大批量生产的迫切需求推动了自动化技术的进展,又为机械臂的开发奠定了基础。另一方面,核能技术的研究要求某些操作机械代替人处理放射性物质。在这一需求背景下,美国于1947年开发了遥控机械手,1948年又开发了机械式的主从机械手。

机械臂首先是从美国开始研制的。1954年美国戴沃尔最早提出了工业机器人的概念,并申请了专利。该专利的要点是借助伺服技术控制机器人的关节,利用人手对机器人进行动作示教,机器人能实现动作的记录和再现。这就是所谓的再现机器人。现有的机器人差不多都采用这种控制方式。1958年美国联合控制公司研制出第一台机械臂铆接机器人。作为机器人产品最早的实用机型(示教再现)是1962年美国AMF公司推出的“VERSTRAN”和UNIMATION公司推出的“UNIMATE”。这些工业机器人主要由类似人的手和臂组成它可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。 国外机器人领域发展近几年有如下几个趋势:

1.2 国内外发展状况

(1)工业机器人性能不断提高(高速度、高精度、高可靠性、便于操作和维修),而单机价格不断下降。

(2)机械结构向模块化、可重构化发展。例如关节模块中的伺服电机、减速机、检测系统三位一体化:由关节模块、连杆模块用重组方式构造机器人整机;国外已有模块化装配机器人产品问市。

(3)工业机器人控制系统向基于PC机的开放型控制器方向发展,便于标准化、网络化;器件集成度提高,控制柜日见小巧,且采用模块化结构:大大提高了系统的可靠性、易操作性和可维修性。

(4)虚拟现实技术在机器人中的作用已从仿真、预演发展到用于过程控制,如使遥控机器人操作者产生置身于远端作业环境中的感觉来操纵机器人。

1.3 课题研究背景

随着工业自动化程度的提高,工业现场的很多易燃、易爆等高危及重体力劳动场合必将由机器人所代替。这一方面可以减轻工人的劳动强度,另一方面可以大大提高劳动生产率。例如,目前在我国的许多中小型汽车生产以及轻工业生产中,往往冲压成型这一工序还需要人工上下料,既费时费力,又影响效率。为此,我们把机械臂作为我们研究的课题。在工业自动化领域里,对机械手、机器人的实用性和前景毫无疑虑。

第二章 系统整体设计思路

2.1 整体设计概述

整体来看,本次设计比较简单。用单片机输出五路PWM脉冲分别控制机械臂的五个舵机,实现具有五个自由度的机械臂。本次设计所使用的C8051F310单片机性能较强大,完全可以满足设计需要。使用时对C8051F310单片机的目标引脚做初始化,完全可以根据需要将所选引脚用作输入输出口。C8051F310单片机有高精度可编程的25MHz内部振荡器,不需接外部晶振完全可以满足设计需要。

本次设计要实现的目标是灵活控制五路舵机,稳定的实现五个自由度的机械臂运动。为了今后自由度的扩展特采用定时器0、1中断的方式来分别控制周期为20ms的五路舵机。但若就控制五个舵机我们可以用单片机自身的PWM控制器来输出5个20ms的脉冲,更加简单、稳定。

2.2 单片机简介

C8051F310 器件是完全集成的混合信号片上系统型MCU芯片。下面列出了一些主要特性:

● 高速、流水线结构的8051 兼容的CIP-51 内核(可达25MIPS) ● 全速、非侵入式的在系统调试接口(片内) ● 高精度可编程的25MHz 内部振荡器 ● 4 个通用的16 位定时器

● 具有5 个捕捉/比较模块和看门狗定时器功能的可编程计数器/定时器阵列

(PCA)

● 29/25 个端口I/O(容许5V 输入)

2.3 系统硬件结构设计

2.3.1 电路总框架图

2.3.2 硬件电路概括

电路硬件系统包括:单片机电路、舵机控制电路、传感器输入电路、稳压电路等部分。 2.3.2.1 单片机电路

为了今后能更好扩展PWM的输出,我们选用单片机数字I/O口输出来模仿PWM脉冲 ,分别控制五路舵机,其电路原理图如下所示:

断T0的操作,最后就能够实现5路舵机控制信号的输出。

在使用前应仔细阅读单片机的使用手册,了解单片机的相关寄存器设置方法。

2.4.2 程序流程图

主程序流程图1

中断服务程序流图2

2.4.3 程序及注释

#include //C8051F31X系列头文件

sbit IN0=P1^1; //传感器输入

sbit IN1=P1^2;

sbit PWM0=P0^0; //PWM信号传输接口

sbit PWM1=P0^1;

sbit PWM2=P0^6;

sbit PWM3=P0^7;

sbit PWM4=P1^0;

unsigned int order1=0,order2=0,bz0=0;

unsigned int jd1,jd2,jd3,jd4,jd5; //角度变量

unsigned int j1=1,j2=1,j3=1,j4,j5=0,j6=0,j7=0,j8=0,i=0;

/******************************************************************** 子函数

********************************************************************/ //函数名:void PORT_Init(void)**************//

//功能描述:端口初始化**********************//

void PORT_Init(void)

{

P0MDIN=0xff;//P0口

P0MDOUT=0xff;

P0SKIP=0x0C;

P1MDIN=0xff;//P1口

P1MDOUT=0xff;

P2MDIN=0xff;//P2口

P2MDOUT=0xff;

P3MDIN=0Xff;//P3口

P3MDOUT=0xff;

XBR0= 0x00;

XBR1= 0xC0;

}

//函数名:void PWM_Init(void)**************//

//功能描述:端口初始化**********************//

void PWM_Init(void)

{

PCA0MD &= ~0x40;

PCA0MD = 0x00;

PCA0CPM0 =0x42; //CCM0为8位PWM方式

PCA0CPM1 =0x42; //CCM1为8位PWM方式

PCA0CPM2 = 0x42; //CCM2为8位PWM方式

PCA0CPM3 = 0x42; //CCM3为8位PWM方式

PCA0CPM4 =0x42; //CCM4为8位PWM方式

PCA0CN = 0x40; // 允许PCA计数器 0x00禁止PCA计数 }

//函数名:void Internal_Crystal(void)*******//

//功能描述:设计内部时钟********************//

void Internal_Crystal(void)

{

OSCICN=0x82; // 2分频

CLKSEL=0x00; // 内部振荡器 24.5MHz

}

//****************延时函数******************//

void delay1(int time)

{

int x,y;

for(x=0;x

{

for(y=0;y

}

}

void delay2(int time)

{

int x,y;

for(x=0;x

{

for(y=0;y

}

}

void delay3(int time)

{

int x,y;

for(x=0;x

{

for(y=0;y

}

}

//***************Timer函数********************//

void Time_Init(void) //定时器初始化

{

TMOD=0x11; // T1 、T0 工作在方式1

EA=1;

ET1=1;

ET0=1;

CKCON=0X01; //系统时钟4分频,即3.0625MHZ

TH0=0XFC;

TL0=0X02; //24.5MHz,0.5ms

}

//******************定时器0中断函数************//

void Time0_Int() interrupt 1

{

switch(order1)

{

case 1: PWM0=1;

TR1=1;

TH0=-jd1/256; //定时状态:X=M-定时时间/T

delay3(1);

TL0=-jd1%256;

break;

case 2: PWM0=0;

TH0=-(8140-jd1)/256;

TL0=-(8140-jd1)%256;

break;

case 3: PWM1=1;

TH0=-jd2/256;

TL0=-jd2%256;

break;

case 4: PWM1=0;

TH0=-(8140-jd2)/256;

TL0=-(8140-jd2)%256;

break;

case 5: PWM2=1;

TH0=-jd3/256;

TL0=-jd3%256;

break;

case 6: PWM2=0 ;

TH0=-(8140-jd3)/256;

TL0=-(8140-jd3)%256;

break;

case 7: PWM3=1;

TH0=-jd4/256;

TL0=-jd4%256;

break;

case 8: PWM3=0;

TH0=-(8140-jd4)/256;

TL0=-(8140-jd4)%256;

break;

case 9: PWM4=1;

TH0=-jd5/256;

TL0=-jd5%256;

break;

case 10: PWM4=0;

order1=0;

TH0=-(8140-jd5)/256;

TL0=-(8140-jd5)%256;

TR0=0;

break;

default : delay3(1);

}

order1++;

}

void Time1_Int() interrupt 3

{

PWM0=1;

TH1=0X0F;

TL1=0X2D;

TH0=0XFE;

TL0=0XFE;

TR1=0;

TR0=1;

}

//**********功能描述:主函数****************//

void main (void)

{

Internal_Crystal();

PORT_Init();

PWM_Init();

Time_Init();

TH0=0XFF;

TL0=0X02;

TR0=1;

TH1=0X10;

TL1=0X7D;

delay1(10);

jd1=4956; //1.5ms 1.55-----1.65ms

jd2=6493; //2ms 1.95ms

jd3=6493; //2ms 1.95ms(示波器)

jd4=4956; //1.5ms 1.45ms

jd5=3800; //1ms 1.05ms

delay1(200);

TH1=0X10;

TL1=0X7D;

TH0=0XFF;

TL0=0X02;

for(;j1

{

jd1=jd1-7; //0.5

jd2=jd2-5; //1.5

jd3=jd3-3; //1.5

} jd4=jd4+3; jd5=jd5+2; delay1(10); delay3(42); jd5=4500; delay1(600); //2 //kai for(;j2

jd4=jd4+3;

jd5=jd5+3;

delay1(10);

delay3(42);

}

delay1(600);

jd5=5600;

jd5=4600;

for(;j4

{

jd1=jd1-5;

jd2=jd2+5;

jd3=jd3+3;

jd4=jd4-3;

delay1(10);

delay3(43);

}

delay1(600);

for(;j7

{

jd2=jd2-6;

jd3=jd3-6;

delay1(10);

delay3(43);

}

jd5=5600;

delay1(600);

for(;j8

{

jd2=jd2+6;

jd3=jd3+6;

delay1(10);

delay3(43);

}

delay1(600);

jd5=3500;

jd1=4856;

jd2=6493;

jd3=6493;

jd4=4956;

jd5=3800;

delay1(600);

} //2 //kai

第三章 PCB设计

下面简单介绍一下PROTEL软件制作PCB的过程以及一些常见的封装名称。

3.1 PCB的制作过程

在进行PCB设计之前,必须的工作就是加载零件封装库。

在设计管理器中单击Browse PCB标签切换到Browse PCB标签页,然后单击Browse区域的下拉式选择编辑框右边的下拉按钮,从中选择Libraries项,单击Add/Remove按钮,系统弹出PCB Libraries对话框。从其对话框的第一个列表框中选中一个零件封装库,单击Add即可。

一般情况下,加载Advpcb.ddb和Miscellaneous.ddb两个零件封装即可。 对于一般的零件封装,我们读从零件库中直接调用,但在设计电路板图过程中偶尔会遇到比较特殊的零件封装,在系统零件封装库中可能没有,这是需要自己制作零件封装。

选择主菜单的菜单项File\New,打开新建文件对话框,在对话框中双击“PCB Library Document”图标,创建新零件封装库文件。

零件封装创建有两种方法:手工创建和利用向导创建。

手工创建就是利用绘图工具,按照实际的尺寸绘制出零件的封装。进入零件封装编辑器中,选择主菜单的菜单项Tools\New Component,即启动了零件封装向导,如果要手动制作封装则点击Cancel按钮,即可在编辑窗口下绘制元件封装。在放置焊盘时要注意必须将第一个焊盘设为基准点(坐标原点)。

利用向导创建零件封装,在启动了零件封装向导后,点击Next按钮,按照其提示创建即可。

创建好封装后可以对其进行改名,在主菜单的菜单项Tools\Rename Component中输入元件名称即可。

如果在PCB设计中要使用自己建的封装,只须将此元件的封装名填入到元件属性的Footprint栏中,然后在加载零件封装库时,将自己的元件封装库加入即可。

网络表在PCB设计中占据非常重要的位置,它是系统进行自动布线的依据。 点击主菜单中的Design/Load Nets„,就会出现网络表管理对话框。

3.2 零件布局

将网络表引入PCB系统后,零件封装一般都是重叠在一起的,调整零件封装在电路板上的布局有两种方式:一是手动布局,二是自动布局。此设计中采用手动布局。

先将零件分开,然后用移动、旋转、对齐等方法将零件封装放在理想的位置。 在放置封装时要注意:

1)每个集成元件的去耦电容必须尽可能的靠近元件。

2)与集成元件连接的小元件尽可能与其放在一起,这样有利于后面的布线。

3)放置封装时从机械结构、散热、电磁干扰、美观、将来布线的方便等方面综合考虑。

布局好元件封装后,利用绘图工具画出电路板的边框。将所有元件圈起,并给固定孔留一定的空间。

3.3 布线

零件封装布局好后,根据系统飞线的指示进行手动布线。手动布线其实是按照飞线的指示如何放置导线。

在布线前,进行以下设置:在主菜单Design\Options选项下将编辑区网格间距改为25mil;在主菜单Design\Rules(设计规则)中将导线的最大最小宽度分别改为10mil、100mil;其它设置均采用系统默认设置。

在布线过程中,要使顶层导线横着走、底层导线竖着走,布线时尽可能不要布的太密;从键盘上按动“Shift+Space”键,可以在导线六种转角模式中来回切换;按动小键盘的“*”键,可以在顶层与底层间切换;当需在不同的板层间布线时,任何时候从小键盘上按“*”键,切换板层,此时会出现一个过孔跟着光标移动,移动鼠标,在合适位置点击鼠标左键即可放置过孔;地线先不要布,最后将地线网络敷铜;走线时导线的拐角不要使用直角尽可能使用45度拐角;将电源线加粗。

调整丝印层字符到合适位置,注意尽量不要放在元件下面或过孔、焊盘上面,对于过大的字符可适当缩小。

3.4 放置敷铜

敷铜就是将电路板中空白的地方铺满铜膜,主要目的是提高电路板的抗干扰能力,通常将铜膜接地,这样电路板中空白的地方就铺满了接地的铜膜,电路板的抗干扰能力就会显著地提高。此设计中将地网络接到铜膜上。

在设计规则中将安全间距改为25mil,此时PCB版中可能有些导线变为绿色,说明这些导线间的距离小于安全间距,仔细检查这些导线是否连在了一起,如果没连在一起,则可不管它,其对设计结果没影响。但如果连在一起,则需删除导线重新布线;在设计规则中将Polygon Connect Style中将Conductor Width设为30mil。

选择菜单项Place\Polygon Plane„命令或单击放置工具栏中的Polygon Plane„(敷铜)图标,即可启动敷铜命令。

在弹出的如图4.3.5所示的属性对话框中,Connect to Net项选择GND(地网络);Grid Size(敷铜是栅格大小)改为20mil;Track Width(敷铜导线的宽度)设为8mil,点击OK按钮,即可放置敷铜。

命令启动后,光标变成十字形状。按住鼠标左键,移动鼠标将整个电路板圈住,放开左键系统自动为电路空白处填充铜膜。

3.5 PCB电路图

第四章 设计过程问题分析

一个月的设计、调试的过程实质上是不断地发现问题与解决问题的过程。这个论文题目于我而言是个能力的提升。在一周的时间内,查阅了大量资料、老师的点拨和本组其他同学认真讨论后逐渐明白了舵机控制的原理并最终确定了硬件电路。在PCB电路板绘制过程中由于我没有把舵机的地及单片机地的标号用不同名字分开都用的GND,在连线时才发现这一问题,由于PCB的布局已经完成、大部分电路也已连线成功,为了节省时间我把PCB板上舵机地的标号改成无,这样再手工把所有舵机地线连接起来。进而造成PCB检错时总是这块报错,因为没有标号的引脚系统默认是不连接的。

在接下来实物的调试中,我们开始用单片机自身的PWM来简单控制舵机,但是发现只能控制五路舵机,为了方便今后舵机的扩展我们采用定时器来模拟PWM脉冲,但是当我们调试时发现计算的理论值与实际的值有很大差别,为了实现周期20msPWM波,我们用示波器来跟踪输出的脉冲并实时调整计算的理论值。

第五章 总结

在本次学年论文的设计过程中,我极大的锻炼了独立思考、发现问题和独立解决问题的能力。从一开始的查资料到后来的原理图设计,再到后来的PCB设计、实物调试,基本都是自己独立完成。当然了,在此过程中也遇到了不少困难,但是在老师和同学的帮助下,困难都一一得以解决。

在学年论文的设计过程中,我又巩固了Protel,这个软件很实用,功能也很强大,掌握这一印制电路板设计软件对以后的工作也是很有帮助的。同时,我也复习了模拟电路的相关知识。在焊接电路板的过程中,由于使用的是贴片式,我也极大的提高了动手能力。

总之,在这一个月内,我得到的不只是这一课题的相关原理性知识,更多的则是掌握了相关软件的使用以及自身能力的提高。

致谢

在一个多月的软硬件设计、硬件调试过程中,我们得到了来自老师等老师以及很多同学的热心帮助,在此向老师和同学们表示感谢。尤其是老师,更是教会了我们独立思考问题的态度,使得我们在设计过程种锻炼了独立思考的能力,再次谢谢老师。

主要参考文献:

(1)《模拟电子技术基础》 童诗白 华成英 高等教育出版社 2000.3

(2)《模拟集成电路设计》 (加)David A.Johns & Ken Martin著

(曾朝阳 赵阳 方顺 等译) 机械工业出版社2005.11

(3)《Protel 99 SE原理图与印制电路板设计》周润景 张丽娜 编著 电子工业出版社 马忠梅 《单片机的C语言应用程序设计》 北京航天航空大学出版社 第三版

⑷《Protel 99 SE印刷电路版设计教程》 肖玲妮 袁增贵 清华大学出版社 ⑸《单片机轻松入门》 周坚 北京航天航空大学出版社 第二版

⑹ 《单片机原理及接口技术》 余锡存 曹国华 西安电子科技大学出版社


© 2021 实用范文网 | 联系我们: webmaster# 6400.net.cn