机电综合实验报告.docx
《机电综合实验报告.docx》由会员分享,可在线阅读,更多相关《机电综合实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
![机电综合实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/27/96edc742-9425-41d4-bb6f-9ac2487c8ea8/96edc742-9425-41d4-bb6f-9ac2487c8ea81.gif)
机电综合实验报告
机电综合实验
机电一体化综合控制实验报告
履带式机器人
学院机械与运载工程学院
班级
姓名
学号
指导教师
日期2016年5月6日
湖南·长沙
摘要
随着现代工业的不断发展,工业自动化显得越发重要,作为合格的工科生,学习和掌握基本的编程知识十分重要。
作者首先对单片机原理进行理论进行学习,然后再归纳单片机原理,并以履带机器人作为贯穿实践过程的典型工程对象,使整个学习过程充满挑战和乐趣,大大提高学习效率。
同时在学习和实践的过程中,还提高自身团队意识与自学能力。
本次机电综合实验,通过王老师等的指导和组员们者们的共同协作,解决了在学习过程中的各种困难,提高了组员的自学能力,同时也通过本次实验感受到实践在学习的重要性。
该课程所涉及的内容有:
机电一体化,汽车电子设计,智能测量,自动监控系统以及计算机控制及通信。
本文主要介绍单片机的一些理论知识及团队在学习过程中的遇到一些问题,同时对一些发现的问题进行相对深入的阐释。
关键词:
机电一体化;机器人;单片机;自动化
第1章绪论
1.1实验目的和意义
近年来隨着计算机在社会各领域的滲透,单片机的应用正在不断的走向深入,在实时监测和自动控制的单片机应用系统中,单片机往往被作为一个核心部件来使用。
在我们日常生活中单片机的应用日益广泛,在工业领域,机器人就是一个常见的单片机控制装置,机器人在工业生产中扮演着十分重要的角色,随着工业自动化的不断发展,机器人的作用将越来越重要。
机电一体化是将机械技术、微电子技术和计算机结合在一起,从而产生具有智能化特性的产品,它是现代机械及电子工业的主要发展方向。
机电综合实验的开设目的不是让我们去学一门新的知识,而是通过这门课程的学习将自己所学的机械、计算机及自动控制等知识有机的结合。
在课程的开展过程中去掌握如何将所学知识统一到一个具体的项目开发和设计中,从而达到提高综合素质的能力。
该课程知识点覆盖全面、结构安排紧凑,对我们的实践与应用具有很强的提高作用。
1.2实验内容及要求
该课程所涉及的内容有:
机电一体化,汽车电子设计,智能测量,自动监控系统以及计算机控制及通信。
本实验的实验要求:
(1)了解和掌握自动化系统集成的一般过程和方法,在课程中逐步掌握使用、调试、维护自动化系统方面的能力。
(2)学会分析和使用常用的电子芯片、电子元件和仪器设备的能力。
(3)学会将机械运动和自动化(利用软、硬件)紧密结合。
(4)学会查阅科技参考资料,收集实验数据,并对结论进行分析,写好实验报告。
1.3实验具体做法及步骤
(1)根据任务内容查阅相关资料,分辨需要新学的内容与巩固的内容。
(2)项目的原理、结构、运行方式、功能模块、指令等的应用和开发。
(3)熟悉项目所需的硬件平台。
(4)了解硬件,即实验设备所采用的电子元器件的功能及原理。
(5)掌握语言的设计和调试。
a.根据自己的情况来选择采用何种编程语言(C或者汇编语言);
b.依据机械运动的方式制定控制方案;
c.依据控制方案画出编程方框图;
d.依据方框图编写程序;
e.将程序输入控制对象,进行调试。
(6)首先完成四边形的运动,在此基础上增加避障、拐弯、红外探测、前后跟随等功能。
(7)详细记载试验调试过程中的各项实验数据。
1.4本章小结
本章首先对本实验的目的、意义进行阐释,说明该实验的必要性和重要性,其次对本实验的实验内容和要求进行阐述,有利于该实验开展,最后对该实验的具体做法和步骤进行说明,让实验者对实验有一个整体的把握,达到实验的效果。
第2章实验硬件
2.1履带机器人电机
履带机器人使用的直流电机调速技术是脉宽调制(PWM)直流调速技术,具有调速范围宽、响应速度快和耗损低等特点。
其工作原理是通过AVR单片机ATmega8直接产生PWM波形经过电机驱动芯片L298分别驱动两个直流电机,PWM将占空比不同的脉冲变成不同的电压驱动直流电机转动从而得到不同的转速,且实现电机启动、停止、正反转等功能。
2.1.1电机技术参数
主要技术指标:
常规模式下时主要指标(环境温度=25℃),采用双电源供电(逻辑器件工作电压和电机工作电压)
逻辑工作电压:
5VDC
电机工作电压:
12~24VDC
输出电流(典型值):
2A
工作温度范围:
0~70℃
储存温度范围:
-20~80℃
模块尺寸大小:
69×26mm
2.1.2电机接线及安装尺寸
图2.1安装尺寸
图2.2接线定义
2.1.3通讯协议
(1)采用9600bps,8位数据位、1位停止位、无校验位;
(2)采用半双工通讯,通讯过程采取一问一答方式;
(3)控制命令采用5字节
如下表所示:
1)电机设定:
如上表格所示,command命令从D0-D7,一共8位,其功能位
A、D0为电机方向,1为正转,0为反转;
B、D1为左右电机设定,0为左电机,1为右电机;
C、D2为1的时候电机停止;
D、
2)速度设定:
speed
0-255可以调整
3)时间:
Time
0-255可以调整
2.2C51系列单片机
一提到单片机,你就会经常听到这样一些名词:
MCS51、8051、C51等等,它们之间究竟是什么关系呢?
MCS51是指由美国INTEL公司生产的一系列单片机的总称。
这一系列单片机包括了好些品种,如8031,8051,8751等,其中8051是最典型的产品,该系列单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求。
其中较典型的一款单片机AT89C51(简称C51)由于由美国ATMEL公司以8051为内核开发生产。
本教材使用的AT89S52单片机是在此基础上改进而来。
AT89S52是一种高性能、低功耗的8位单片机,内含8k字节ISP(In-systemProgrammable,系统在线编程)可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。
在实际工程应用中,功能强大的AT89S52已成为许多高性价比嵌入式控制应用系统的解决方案。
图2.3C51单片机教学版
图2.4采用C51单片机的机器人
2.3硬件连接
2.3.1串口的连接
机器人教学板通过串口电缆连接到PC机(或笔记本电脑)上以便与用户交互。
如果计算机有串行接口,直接使用串口连接电缆。
如果没有,此时需要使用USB转串口适配器,如图2.5所示。
只需将该串口线一端的串口连接到机器人教学板,而另一端连接到计算的USB口上。
图2.5USB转串口适配器
2.3.2ISP下载线的连接
机器人程序通过连接到PC机或者笔记本电脑的并口上的ISP下载线来下载到教学板上的单片机内。
图2.6所示为ISP下载线。
下载线一端连接到PC机或者笔记本的并行接口上,而另一端(小端)连接到教学板上的程序下载口上。
图2.6ISP下载线
2.4本章小结
本章主要对实验所用到的硬件进行介绍,避免实验中的不必要的错误的出现,有利于实验的开展。
第3章实验软件
3.1软件介绍及获得
在本课程的学习中,将反复用到三款软件:
KeiluVision2IDE集成开发环境、SLISP下载软件、串口调试软件等。
(1)KeiluVision2IDE集成开发环境
该软件是德国KEIL公司出品的51系列单片机C语言集成开发系统。
在KEIL公司的网站上获得该软件的安装包。
(2)SLISP软件下载工具
该软件是广州天河双龙电子有限公司推出的一款ISP下载软件,使用该软件可以将可执行文件下载到机器人单片机上。
该软件的使用需要计算机有并行口。
可以在双龙公司的网站中获得该软件。
(3)串口调试软件
此软件是用来显示单片机与计算机的交互信息的。
在硬件上,计算机至少要有串口或USB接口来与单片机教学板的串口连接。
教材光盘中提供了该软件的绿色版本,无需安装即可使用。
3.2安装软件
从网站上,或从教材配套光盘中获得了软件安装包,在教材配套光盘中提供了几个文件夹,它们分别是KeiluVision2安装包、ISP软件安装包、串口调试终端、头文件和本书例程的源码。
软件的安装很简单,与安装的其他软件过程一样。
安装KeiluVision2
(1)执行KeiluVision2安装程序,选择安装EvalVersion版进行安装
(2)在后续出现的窗口中全部选择Next按钮,将程序默认安装在C:
\ProgramFiles\Keil文件目录下
(3)将光盘“头文件”文件夹中的文件拷贝到C:
\ProgramFiles\Keil\C51\INC文件夹里KeiluVisionIDE软件安装到电脑上的同时,会在你的计算机桌面建立一个快捷方式。
安装ISP下载软件与此类似。
3.3本章小结
本章主要介绍了实验软件的获得和安装,是该实验前期的准备工作,也是一个必要工作。
第4章编程与软件使用
4.1软件使用
双击KeiluVisionIDE的图标,启动KeiluVisionIDE程序,就可以得到KeiluVision2IDE的主界面。
通过用Project菜单中的NewProject命令建立项目文件,
过程如下:
(1)点击Project,会出现图4.1所示的菜单画面,然后选择“NewProject”,将出现图4.2所示对话框
图4.1Project菜单画面图4.2CreateNewProject对话框
(2)在文件名中输入如“HelloRoBot”,保存在你想保存的位置(如D:
\中级机器人制作与编程\程序\Chapter1),可不用加后缀名,点击“保存”,后会出现图4.3所示的窗口。
图4.3单片机型号选择窗口
(3)这里要求我们选择芯片的类型,KeiluVision2IDE几乎支持所有的51核心单片机,并以列表的形式给出。
本教材使用的是Atmel公司的AT89S52,在KeiluVision2IDE提供的数据库(Database)列表中找到此款芯片,然后点击确定,会出现图4.4所示的窗口,询问你是否加载8051启动代码,在这里我们选择“否”,不加载。
之后会出现图4.5画面,此时即得到了项目文件。
图4.4是否加载8051启动代码提示窗口图4.5目标工程窗口
项目文件创建后,这时只有一个框架,紧接着需要向项目文件中添加程序文件内容。
KeiluVision2支持C语言程序。
可以是已经建立好的程序文件,也可以是新建的程序文件。
如果是建立好了的程序文件,则直接用后面的方法添加;如果是新建立的程序文件,则先将程序文件.c存盘后再添加。
点击按钮(或通过“File->New”操作)为该项目新建一个C语言程序文件,保存后弹出对话窗口,将文件保存在项目文件夹中,在文件类型中填写.C(这里.C为文件扩展名,表示此文件类型为C语言源文件),因为下面将采用C语言编写第一个程序。
4.2工程项目
1.单击图4.5中的“+”,将出现图4.6所示的列表;
2.然后右键点击“SourceGroup1”,在出现的菜单下选择“AddFileToGroup“SourceGroup1”,出现AddFilestoGroupSource‘Group1’对话框。
在该对话框中选择需要添加的程序文件,如刚才建立HelloRoBot.c,单击Add按钮,把所选文件添加到项目文件中。
一次可添加多个文件。
3.程序文件添加到项目文件中去后,这时上图中“SourceGroup1”的前面将出现一个“+”号;单击它将出现刚才添加的源文件名,如图4.7所示(注意:
图中显示的文件名是刚才输入的文件名)。
图4.6添加C语言文件到目标工程图4.7添加了C语言文件的目标工程
双击源文件即可显示源文件的编辑界面。
下面来产生下载需要的可执行文件。
要产生可执行的.Hex文件,需要对目标工程“Target1”进行编译设置,右键点击“Target1”,选择“Optionfortarget‘Target1’”。
点击“output”,选择其中的“CreateHEXFile”,如图4.8所示,点击确定关闭设置窗口。
然后点击KeiluVisionIDE快捷工具栏中的,Keil的C编译器开始根据要生成的目标文件类型对目标工程项目中的C语言源文件进行编译。
编译过程中,可以观察到源文件中有没有错误产生,如果没有错误产生,在IDE主窗口的下面出现如图4.9的提示信息,表明已成功生成了可执行文件,并存储在C语言源程序存储的目录中,文件名就是HelloRoBot.Hex。
图4.8设置目标工程的编译输出文件类型
图4.9编译过程的输出提示信息
4.3下载可执行文件到单片机
点击ISP下载软件图标,打开ISP下载软件窗口如图4.10所示,并将通信参数设置成图中所示的参数。
第一个为接口类型选择窗口,该窗口的下拉列表中提供了许多接口类型:
串口COM1~COM16、并口LPT1~LPT3以及USB接口等。
教材使用并口LPT1。
第二个为下载速度选择窗口,该窗口内容与接口类型紧密相连。
不同的接口,该窗口就提供不同内容的下载速度。
若选择LPT1,则提供了五种下载速度:
TURBO模式、FAST模式、NORMAL模式、SLOW模式和TURBOSLOW模式。
在这五种模式下,程序下载速度依次减小。
教材中的例程使用的是第一个模式TURBO模式,下载速度最快。
第三个为单片机型号选择窗口,点击“Flash”,选择要下载的可执行HEX文件——HelloRoBot.Hex,选择后点击编程开始下载。
如果下载成功,则下面显示“完成次数:
x次”,否则显示“失败次数:
x次”。
如果芯片是第二次下载程序,请先选中“擦除”复选框。
图4.10下载软件
4.4本章总结
本章主要介绍了软件的使用和编程的初级训练,便于后期实验的开展。
第5章履带机器人电机控制程序
本章主要对如何使用头文件“BetaRobot.h”进行一个简要介绍。
PWM_Init()函数该函数的作用是为初始化第一层与第二层之间的TTL串口连接。
其中TTL串口的数据输出口定义为P1.0口,在程序设计的过程中,请回避该端口,避免引起机器人运动控制的错误。
在KEIL工程中,如果要使用到机器人的运动控制部分,那么在主程序的开头部分,就必须首先执行该函数,进行TTL串口初始化。
如:
voidmain(void)
{
…//变量声明
PWM_Init();
…//其他操作
}
write_pwm(unsignedcharbDirection,unsignedcharbSide,unsignedcharbStop,unsignedchar
TimeFactor,unsignedcharSpeedByte,unsignedcharTimeByte)
作用:
AT89S52单片机向直流电机发送指令
5.1电机控制参数
bDirection:
方向参数。
1(或POSITIVE_DIR)为正向,0(或NEGATIVE_DIR)为反向
bSide:
左右电机选择参数。
0(或LEFT_MOTOR)为左电机,1(或RIGHT_MOTOR)为右电机
bStop:
是否停止。
0(或NOT_STOP)为不停止,1(或STOP)为停止。
该参数为1时,电机停止运动,且下面的速度和时间控制参数无效。
TimeFactor:
时间因数。
有3个级别,该值为0时,单位为10毫秒,1为100毫秒,2为1000毫秒。
也可以用BY_10MS,BY_100MS,BY_1000MS等宏定义代替。
Speed:
速度参数。
从慢到快,0~255。
TimeByte:
时间倍数。
该数值乘以时间因数,得到的即为实际运动时间。
该值范围为0~255。
龙人贝塔的运动方向控制:
龙人贝塔机器人与实际生活中的坦克车、推土车等依靠履带运动的设备的运动方式是一致的。
前进和后退:
两轮一个正转,一个反转,以同样的速度运转。
具体哪个正转,哪个反转,
视前轮驱动和后轮驱动的不同而不同。
原地左转或右转:
两轮以同样的速度运转,且运动方向一致。
成弧线左转或右转:
两轮以不一样的速度运转,且运动方向一致。
5.2其他头文件
uart.h:
硬串口的相关程序。
包含该文件后,在程序中调用uart_Init()函数,即可完硬串口的初始化。
soft_rs232.h:
TTL-RS232的实现程序。
在该文件中,可修改TTL-RS232的通信波特率以及输出端口。
如果在设置的TTL-RS232数据输出端口外接一个RS232电平转换芯片并搭载DB9串口接口,这样相当于构建了C51平台上的第二个串口。
该程序构建的串口为单工串口。
Movement.h:
该文件提供了龙人贝塔的运动控制函数的范例。
在包含该文件之前,请包含BetaRobot.h文件。
否则,在编译程序的时候会出现错误。
5.3电机控制程序示例
1.HelloRoBot从单片机往计算机发送一个字符串
2.HighLowLED使接在P1.5端口上的LED灯闪烁
3.SingleWheel一个轮子转动
4.BothWheel两个轮子转动
5.ControlMotorWithComputer使用串口调试工具控制机器人的运动
6.RobotForwardThreeSeconds机器人向前运动3秒
7.ForwardLeftRightBackward机器人按向前、向左转、向右转和后退的顺序动作
8.StartAndStopWithRamping机器人做加速、匀速(最大速度)和减速的动作
9.MovementsWithFunctions使用多个函数控制机器人的运动
10.MovementsWithOneFuntion仅使用一个函数控制机器人的运动
11.NavigationWithSwitch使用数组控制机器人的运动
12.TestLeftIrPair测试红外发射/接收传感器模块
13.FastIrRoaming利用红外蔽障
14.TestWhiskers测试触须传感器模块
15.RoamingWithWhiskers利用触须蔽障
16.TestLeftPhotoresistor测试光敏电阻传感器模块
17.RoamingTowardTheLight利用光敏电阻跟随光源
5.4本章小结
通过本章的学习,对履带机器人的编程有了基本的掌握,对以后的训练学习有极大的帮助,同时本章的学习可以帮助读者快速掌握履带机器人的编程控制,节省时间。
第6章履带机器人日字行走
6.1程序设计
6.2程序代码
#include
#include
intmain(void)
{
inti;
uart_Init();
delay_nms(1000);
PWM_Init();
for(i=0;i<4;i++)
{
write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,78);
write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,78);
//向右转1/4圈
delay_nms(2000);
write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,100);
write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,100);//向前
delay_nms(2000);
}
for(i=0;i<4;i++)
{
write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,80);
write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,80);
//向左转1/4圈
delay_nms(2000);
write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,100);
write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,100);//向前
delay_nms(2000);
}
delay_nms(4000);
while
(1);
}
6.3训练拓展——S形路线
#include
#include
intmain(void)
{
uart_Init();//初始化C51串口,波特率为9600bps,8位数据位,1位停
止位,无校验位
printf("Testingfortwowheels!
\r\n");
PWM_Init();//初始化C51单片机与PWM直流电机控制模块之间的连接
write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);
write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);
write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);
delay_nms(1200);
write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70)
write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);
delay_nms(900);
write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);
write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);
delay_nms(1200);
write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);
write_pwm(POSI