基于单片机的三维运动轨迹寻迹系统的研究与设计毕业论文
2020-03-28 12:18:14
摘 要
本次设计是通过AT89C51单片机与舵机驱动的机械臂及单片机的外部电路组成的一个单片机控制系统来完成51单片机对机械臂轨迹的记录和重现。
本次设计的单片机控制系统中,用中断的编程方式产生PWM信号来驱动机械臂的舵机转动,而对舵机的控制是通过改变对PWM信号的高电平持续的时间来实现的,为此将单片机外接了一个矩阵键盘来实现人机交互。对于机械臂的轨迹数据,采用了AT24C02芯片来存储,而机械臂运动的轨迹则是通过嵌入在机械臂上的MPU6050模块对运动数据的捕捉来实现记录的。其中,AT24C02芯片和MPU6050模块都是采用IIC总线的结构来实现与AT89C51单片机的通信。单片机还接入了LCD1602液晶显示器,用来显示MPU6050捕获并处理后数据。由于MPU6050在获取加速度和角速度的原始数据会存在零点漂移和高斯噪声等误差,本次设计采用卡尔曼滤波算法来对这些原始数据进行滤波,从而获得更加准确的数据。
本次设计采用C语言编程,并用Proteus进行了除运动寻迹部分的仿真来辅助设计的完成。
关键词:AT89C51;IIC总线结构;MPU6050
Abstract
This design is based on a single-chip computer control system composed of AT89C51 single-chip microcomputer, the manipulator driven by the steering gear and the external circuit of the single-chip microcomputer to record and reproduce the track of the manipulator by the single-chip microcomputer 51.
In this designed single chip microcomputer control system, PWM signals are generated by interrupt programming to drive the steering gear of the manipulator, and the control of the steering gear is realized by changing the high level of the high level of the PWM signal. A matrix keyboard is connected to the computer to realize the interaction between the computer and the manipulator. The AT24C02 chip is used to store, and the trajectory of the motion of the manipulator is recorded by the capture of the motion data embedded in the MPU6050 module on the manipulator. Among them, the AT24C02 chip and the MPU6050 module are all IIC bus. To realize the communication with AT89C51 microcontroller. MCU also connected to LCD1602 , used to display MPU6050 captured and processed data. Due to the error of zero drift and Gao Si noise in the acquisition of acceleration and angular velocity in MPU6050, Kalman filter algorithm is used to filter the original data, so that more accurate data can be obtained.
This design uses C language programming, and Proteus to carry out part of the simulation to complete the design.
Keywords:AT89C51 ; IIC bus structure; MPU6050
目 录
第1章 绪论 1
1.1研究背景及意义 1
1.2国内外研究现状 2
1.3技术路线 3
第2章 技术原理与相关通信协议 5
2.1 IIC通信协议 5
2.1.1 IIC通信协议简介 5
2.1.2 IIC通信协议模拟程序 7
2.2 中断技术 9
2.3卡尔曼滤波理论 10
2.3.1卡尔曼滤波原理与运用 11
2.3.2卡尔曼滤波器算法 13
第3章 系统设计与实现 14
3.1 AT89C51单片机 14
3.2 舵机 15
3.3 MPU6050寻迹系统 16
3.3.1 MPU6050模块寻迹设计 16
3.3.2 MPU6050读写程序 18
3.4 矩阵键盘系统 19
3.4.1 矩阵键盘设计 19
3.4.2 矩阵键盘程序 21
3.5 LCD1602液晶显示器系统 22
5.5.1 LCD1602液晶显示设计 22
3.5.2 液晶显示器驱动程序 23
3.6 AT24C02存储系统 25
第4章 测试结果与分析 27
4.1 PWM信号测试与分析 27
4.2 静态角度测量与分析 28
4.3 旋转角度测量与分析 29
第5章 总结与展望 30
5.1 总结 30
5.2展望 31
文献参考 32
致谢 33
第1章 绪论
在不久的将来,机器必然会越来越多的代替人的工作,从而推动制造业更一步向自动化和智能化方向发展,而这其中,机械臂起到了重要的部分,因其不仅生产时的效率远高于人力,而且还能够进行人所达不到精密的操作或是人所不能的重货搬运等。在机械臂的各种技术中,对于机械臂的控制更是其重要的一面。
1.1研究背景及意义
科学技术水平正随着时代不断的进步,社会的发展形态也在不停的变化,自动化机器的运用越来越普遍,其中,机械臂的运用更是深入到自动化生产的各行各业中。无论是精密的智能芯片生产,还是沉重的集装箱管理,都越来越离不开机械臂周而复始、循规蹈矩的操作。由于传统工厂里参与生产的都是人力,对于一些重型零件的搬运和装配或是精密仪器的生产,工人的能力往往相形见绌;而机械臂能够补足人力所不能的缺陷,且只要提供动力,便可以不停歇的运作,不仅能够有效的节省成本,还能大大提高生产效率。然而,机械臂参与工作中的重点难题便是如何进行人所需要的动作并重复下去。为了能使机械臂进行人为预想的动作,对机械臂三维运动轨迹的寻迹与重现就显得尤为重要。
人口老龄化的问题日益加重的今天,每个人对社会保障和服务的需求也越加的紧迫起来,如此家庭服务型机器人就将有广大的市场。机器代替人进行生产将是时代发展的趋势,不久的将来我们可能能够看见各种机器人融入到我们的生活里。伴随着机器人行业的兴起,作为机器人“手”的作用的机械臂将在机器人行业里占据重要的一席之地。而机械臂能像人类的手那样进行灵活准确的动作,那么其必须首先能够感知运动、声音等信息,故而传感器在这中间将发挥无可替代的作用,它是机械臂称为“手”的基础。
在不知不觉中,机械臂已经在我们的生活中有着方方面面地运动,为我们优质的生活提供更好的服务。在物流业中,航运码头上,货物集装箱化已经全面展开,而重以吨计的集装箱依靠人力几乎不可能实现其搬移,如若不能够搬移这些集装箱,则就使物流停滞,这行业不可能发展壮大起来,所幸大型机械臂凭借其钢筋骨架可以轻而易举地搬运沉重的集装箱,只需要人操纵其控制程序即可,这大大减省了人力资源,提高了物流的效率,促进了这个行业的飞速发展。相较于大型货物的搬运,快递行业的货物就相对更加轻巧小件,但是全国每天的快递货物数件要以亿计,这如果依靠人力来进行包装分类,无疑是巨大的人力消耗而且效率低下,而今快递行业的兴起与流行恰恰是离不开机械臂的自动包装与货物分类,而且随着机械臂自动化技术在这一行业中的大规模使用,必然能够将快递行业推向一个新的高度。
除了物流行业外,在工厂和生产车间更是随处可见机械臂的身影,其就像是工业的金属手臂,不断地完善和推动工业化的发展。芯片作为一款机器精密的器件,其制程都需以纳米进行标记,而传统的手工技术无法达到这样的精度,这就需要微型的机械臂进行高度精密的操作,在这一方面,机械臂的地位几乎无可替代,其大大推动时代向信息时代前进的步伐,也是今日智能电脑和各种智能移动终端幕后的功臣。此外,在工业高度发达的今天,各种商品的生产都是流水线的自动化作业,每道工序上都有机械手的操作,诸如汽车骨架的焊接,只需要在机械臂的末端接上焊枪,于机械臂的预定动作轨迹上定时开启与关闭就能够实现,相对于原始的人工焊接,不仅仅因其流水线作业的高自动化而效率高,而且能够严格控制焊接时间与焊接时火焰大小,效果更好。
1.2国内外研究现状
自从1946年来,世界上第一台计算机被发明出来后,科学家们意识到隐藏在计算机技术之后的工业自动化的远大前景,于是在1947年,正处于第二次世界大战,美国当时正在抓紧研究核物理技术,然而某些物质具有放射性,对人体有害,故而科学家们就开始着手机械臂的遥控技术的研究,以求能够代替人手进行操作,次年,他们又研制出来了机械式的主从机械臂。
与机械臂技术最息息相关的便是机器人的研究,两者相互促进发展,因而戴沃尔公司在1954年进行工业机器人研究的时候,其主要需要解决的难题便是机器人各个关节之间的控制,这也是机械臂亟需解决的最核心的问题。该公司采用了伺服控制的技术,从而可以控制机器人的动作并且能够实现记录动作和重复做出。自此之后,美国的研究人员们不断的改进技术,也使得机械臂的构造越来越复杂,能进行的工作也越来越多,不断向生产的机械化和自动化的目标靠近。至1962年,AMF公司推出了世界上最早的实用型机器人产品,将机械臂的发展进程有推进了一步。
随着传感器技术的不断发展,机械臂迎来了新的时代。在第二代机械臂中,借助着视感和触感等传感器,机械臂拥有了模拟人的视觉和触觉等功能,从而能够通过智能的感官判断,自动的做出相应的动作,而并不是全部机械的重复一个动作,其对外部条件的变化能够捕捉并且可以简单处理,已经向人工智能化更加迈进了一步。当前,研究人员在在研制第三代机械臂,这代机械臂将依托于人工智能技术的发展,具有自动规划和决策的功能,如同一个有思想的手臂一样去工作。
近年来人们对人工智能等领域的热情空前的高涨,这也就需要机械臂行业能够跟随时代的潮流,向着更加智能化的方向发展。此中,模块化发展的趋势愈见明显。传感器的性能要求也随着越来越高,人们想用更加稳定敏感的传感器来让机械臂感应更多的信息。
直到上世纪90年代后,在改革开放的浪潮下,我国关于机械臂方面的研究才有序地开始发展起来,其相对于国外而言起步较晚。但经过科研人员们的不懈努力,我国在多种机械臂操作机方面有了显著的成效,基本解决了其设计制作的难题,并且对于关键的技术有了突破发展。同时,通过机械臂进行自动化操作的技术实现了突破,能在工厂里使用上国产的机械臂,推动了我国制作业的飞速发展。
1.3技术路线
AT89C51单片机作为本次设计系统的核心,进行程序的存储和运行以及数据的运算。LCD1602液晶显示器模块用来显示MPU6050模块获取并处理后的数据。
矩阵键盘用来进行人机的交互,将其接在单片机的P1端口。通过编程,为每个按键编写独立的功能,通过按动按键来实现对机械臂的控制。
图1-1 系统结构图
本设计将AT24C02模块作为数据的存储器,存储机械臂运行轨迹的数据。
机械臂是由四个舵机控制的,每个舵机都需要PWM信号来驱动和控制,故而将单片机的P3^0、P3^1、P3^2和P3^3四个端口分别与机械臂的四个舵机的信号线相连接,为驱动和稳定舵机的旋转,需要外部引入一个5V的直流电源对其供电。
MPU6050模块是获取机械臂运动轨迹的数据,将其固定在机械臂上。MPU6050模块与单片机也是通过IIC总线进行通信的,故而将对应的数据总线和时钟总线与单片机上的相连接即可,MPU6050模块在IIC总线上的地址是0xD0。
第2章 技术原理与相关通信协议
2.1 IIC通信协议
在本设计中,AT89C51单片机与MPU6050模块及存储芯片AT24C02之间是通过软件模拟的IIC通信协议进行数据交换的。采用串行总线技术只需要两根地址总线,所以对系统的更改和扩充只需要在总线上更改器件或是接入新的器件,这使得系统的体积减小,并且也使得系统的硬件设计很大程度上的简化了。
2.1.1 IIC通信协议简介
IIC总线结构只有两根信号线,其中一根是时钟总线,另一根是数据总线,可以进行数据的双向传输。这种设计一方面占用较少的端口资源,但另一方面也限制了数据的传输效率和传输速度。主机是通过查询器件在IIC总线上唯一的地址来进行数据传输的。当主机作为发送器时,从机在总线上接受数据;当主机作为接受器时,从机发送数据到总线上。在本次设计中,我们将AT89C51单片机作为系统的主机,其余器件都看作为从机。
IIC总线在通信协议中有着明确的规定,当时钟上的信号为高电平时,数据线上的数据不允许发生跳变,必须保持稳定,数据线上的电平如果要发生改变,必须等到时钟线上的信号变为低电平才行。
当接收器并不是总能够立刻接收IIC总线上传来的下一个字节,在这种情况下,接收器将会让时钟线保持低电平,以此通知主机暂时无法接受下一个字节,从而让主机保持等待状态。如果接收器完成了其内部的工作,又可以接受下一个字节了,此时只要再将时间总线保持高电平即可。
图2-1 数据传送示意图
IIC总线技术是将9位作为一帧,其中前8位是数据,按照高位到低位的顺序排列发送,最后一位是按照通信协议必须要跟随的应答位。
IIC总线传输数据信号并发送地址信号。在发送启动信号之后,主机必须发送7位从属地址和第八位来表示数据传输方向(R/T)。只有在接收到从机的应答信号之后,主机才会发送下一组8组数据。每当主机接收到一组8位数据后,应当在第9个时钟周期向从机返回一个应答信号,收到应答信号后从机才会继续发送下一组8位的数据,若没有收到主机的应答信号,从机就会停止发送数据,直至主机返回了一个停止命令来释放总线。
主机向IIC总线发送一个地址信号后,其中高7位地址码将会被每个接入总线的器件一一比对,一旦相同,就说明那个器件正是被寻找的那个,然后再根据最后一位数据将该器件确认为是发送器还是接收器。每个从机的地址是有两个部分组成的,其中一部分是固定不可改变的,还有一部分是可以通过将位选引脚接入高低电平来改变的,而且这一部分是可以确定该类器件最多可以接入几个在IIC总线上。
由于51单片机没有IIC总线技术的硬件接口,其IIC总线技术的实现,需要通过我们根据IIC总线的通信协议来自己编写程序接口,从而模拟出IIC总线结构进行通信。
图2-2 IIC总线模拟时序图
2.1.2 IIC通信协议模拟程序
/******起始信号******/
void IIC_start()
{
sda = 1;
delays();
scl = 1;
delays();
sda = 0;
delays();
}
/******终止信号******/
void IIC_stop()
{
sda = 0;
delays();
scl = 1;
delays();
sda = 1;
delays();
}
/******应答信号******/
void IIC_respons()
{
uchar i;
scl = 1;
delays();
while((sda == 1) amp;amp; (i lt; 250)) i ;
scl = 0;
delays();
}
/******初始化IIC总线******/
void IIC_init()
{
sda = 1;
delays();
scl = 1;
delays();
}
/******发送器写一个字节到接收器******/
void IIC_write_byte(uchar date)
{
uchar i,temp;
temp = date;
for(i = 0;i lt; 8;i )
{
temp = temp lt;lt; 1;
scl = 0;
delays();
sda = CY;
delays();
scl = 1;
delays();
}
scl = 0;
delays();
sda = 1;
delays();
}
/******从总线上读取一个字节******/
uchar IIC_read_byte()
{
uchar i,date;
scl = 0;
delays();
sda = 1;
delays();
for(i = 0;i lt; 8;i )
{
scl = 1;
delays();
date = (date lt;lt; 1) | sda;
scl = 0;
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。