机电综合实验报告-两轮机器人

机电综合实验 之

机电一体化综合控制实验报告

课程项目:两轮智能移动机器人

  院系:机械与运载工程学院

班级:2011级 车辆   班

姓名:         

学号:     

二O##年

目录

前言

一、设计要求……………………………………………………4

二、设计对象……………………………………………………4

三、设计原理……………………………………………………4

四、实验设备……………………………………………………5

五、实验过程及结果……………………………………………5

(一)硬件与软件介绍…………………………………………5

1、硬件介绍……………………………………………5

2、软件介绍……………………………………………6

(二)实验过程…………………………………………………6

实验一:日字行走………………………………………6

实验二:触须避障………………………………………7

实验三:红外避障………………………………………11

六、实验心得……………………………………………………15

参考文献…………………………………………………………16

前 言

本课程的开设目的不是要同学们去学一门新的知识,而是通过本门课程的学习将自己所学的机械,计算机及自动控制等知识有机结合。在课程的开展过程中去掌握如何将所学的各种知识点统一到一个具体的项目开发和设计中,从而达到提高综合素质的能力。本课程知识点覆盖全面、结构安排紧凑,对学生的实践与运用具有很强的提高作用。

本课程的重点是同学们在已有的知识基础上,通过一项具体的任务把已学的知识用活,需要补充的知识同学们通过资料的查找和自学将其串接起来,融会贯通,从而达到完成项目设计任务的目的。

一、设计要求:

(1)了解AT89S52芯片的主要性能

(2)学习三款软件的开发环境

(3)掌握伺服电机工作原理及控制方法

(4)掌握机器人机械工作方式、触觉开关及红外导航工作原理,掌握机器人尾随行走所需要的闭环控制算法

(5)根据自己的设计任务和设计方法编制程序、调试程序

(6)软、硬件联机调试,达到设计要求

二、设计对象

本项目是使用典型的机器人工程对象,采用AT89S52单片机作为大脑,行走机构为两个车轮,采用伺服电机控制。触觉导航(采用触觉开关),红外导航采用发射红外线遇障碍反射技术导航。

三、设计原理

运用AT89S52,采用汇编或C语言对其进行编程,使机器人实现下述4个基本智能任务:

(1) 控制机器人运动

(2) 基于传感器信息作出决策

(3) 安装传感器以探测周边环境

(4) 与用户交换信息

控制机器人伺服电机以不同的速度运动是通过让单片机的输入\输出接口输出不同的脉冲序列来实现的。

四、实验设备

两轮智能机器人, USBASP下载器 ,电源,电脑,4节电池,触须开关,红外线接收、发射器。

五、实验过程及结果

(一)硬件与软件介绍

1、硬件介绍

机器人芯片不仅需要连接电源以便运行,同时也需要连接到电脑以便编程和交互。接线完成后,就可以用编辑器软件来对系统进行测试。

(1)USBASP 下载器

USBASP是一种基于ATMEL公司的AVR系列RISC单片机的高性价比和一个由纯软件的USB通信协议栈而 构成的一个可以向51系列,AVR系列单片机下载(烧写)程序的下载器。

(2)AT89S52 单片机

AT89S52 是一种高性能、低功耗的8 位单片机,内含8k 字节ISP(In-system Programmable,系统在线编程)可反复擦写1000 次的FLASH 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS51 指令系统及其引脚结构。

2、软件介绍

本项目采用汇编语言、C语言编程。用下面3款软件形成集成开发环境。

(1)   Keilu Vision2

Keil uVision2是51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,同时提供丰富的库函数和功能强大的集成开发调试工具。

(2)   progisp172

使用该软件你可以将可执行hex文件下载到你的机器人单片机上。

(3)   串口调试软件

此软件是用来显示单片机与计算机的交互信息的。

(二)实验过程

实验一:日字行走

通过编制程序控制机器人行动路线,设计路线为 “日”字行走,把程序导入单片机并调试程序。

实验程序:

#include <BoeBot.h>

#include <uart.h>

void Move(int counter,int PC1_pulseWide,int PC0_pulseWide)

{

int i;

for(i=1;i<=counter;i++)

{

P1_1=1;

delay_nus(PC1_pulseWide);

P1_1=0;

P1_0=1;

delay_nus(PC0_pulseWide);

P1_0=0;

delay_nms(20);

}

}

int main(void)

{

uart_Init();

printf("Program Running!\n");

Move(65,1700,1300);

Move(26,1300,1300);

Move(65,1700,1300);

Move(26,1300,1300);

Move(65,1700,1300);

Move(26,1300,1300);

Move(65,1700,1300);

Move(26,1700,1700);

Move(65,1700,1300);

Move(26,1700,1700);

Move(65,1700,1300);

Move(26,1700,1700);

Move(65,1700,1300);

while(1);

}

实验二:触须避障

1、   元件补充

 (1)金属丝2根

 (2)平头M3×22盘头螺钉2个

 (3)13mm圆形立柱2个

 (4)M3尼龙垫圈2个

 (5)3-pin公-公接头2个

 (6)220Ω电阻2个

(7)10kΩ电阻2个

胡须按照下图连接

在机器人前端安装一个触觉开关,当机器人遇见障碍物时,机器人大脑通过传感器获取外部信息,由单片机根据反馈信息进行计算和决策,生成控制命令,然后通过输出接口去控制相应的执行机构,完成系统所要完成的任务。

实验程序

#include <at89x52.h>

#include <BoeBot.h>

void Forward(void)

{

int i;

for(i=1;i<=65;i++)

{

P1_1=1;

delay_nus(1700);

P1_1=0;

P1_0=1;

delay_nus(1300);

P1_0=0;

delay_nms(20);

}

}

void Left_Turn(void)

{

int i;

for(i=1;i<=26;i++)

{

P1_1=1;

delay_nus(1300);

P1_1=0;

P1_0=1;

delay_nus(1300);

P1_0=0;

delay_nms(20);

}

}

void Right_Turn(void)

{

int i;

for(i=1;i<=26;i++)

{

P1_1=1;

delay_nus(1700);

P1_1=0;

P1_0=1;

delay_nus(1700);

P1_0=0;

delay_nms(20);

}

}

void Backward(void)

{

int i;

for(i=1;i<=40;i++)

{

P1_1=1;

delay_nus(1300);

P1_1=0;

P1_0=1;

delay_nus(1700);

P1_0=0;

delay_nms(20);

}

}

int P1_4state(void)

{

return (P1&0x10)?1:0;

}

int P2_3state(void)

{

return (P2&0x08)?1:0;

}

int main(void)

{

Forward();

while(1)

{

if((P1_4state()==0)&&(P2_3state()==0))

{

Backward();

Left_Turn();

Left_Turn();

}

else if(P1_4state()==0)

{

Backward();

Left_Turn();

Forward();

Right_Turn();

Forward();

Forward();

Right_Turn();

Forward();

Left_Turn();

}

else if(P2_3state()==0)

{

Backward();

Right_Turn();

Forward();

Left_Turn();

Forward();

Forward();

Left_Turn();

Forward();

Right_Turn();

}

else

Forward();

}

}

实验三:红外避障

1、   元件补充:

(1)两个红外检测器

(2)两个IR LED

(3)四个470□电阻

(4)两个9013三极管

按下图连接

使用红外线来照射机器人器件的路线,然后确定何时有光线从探测的目标反射回来,通过检测反射回来的红外光就可以确定前方是否有障碍物。

实验程序:

#include<BoeBot.h>

#include<uart.h>

#include<intrins.h>

void Forward(void)

{

int i;

for(i=1;i<=52;i++)

{

P1_1=1;

delay_nus(1700);

P1_1=0;

P1_0=1;

delay_nus(1300);

P1_0=0;

delay_nms(20);

}

}

void Left_Turn(void)

{

int i;

for(i=1;i<=26;i++)

{

P1_1=1;

delay_nus(1300);

P1_1=0;

P1_0=1;

delay_nus(1300);

P1_0=0;

delay_nms(20);

}

}

void Right_Turn(void)

{

int i;

for(i=1;i<=26;i++)

{

P1_1=1;

delay_nus(1700);

P1_1=0;

P1_0=1;

delay_nus(1700);

P1_0=0;

delay_nms(20);

}

}

void Backward(void)

{

int i;

for(i=1;i<=26;i++)

{

P1_1=1;

delay_nus(1300);

P1_1=0;

P1_0=1;

delay_nus(1700);

P1_0=0;

delay_nms(20);

}

}

void Fashe(unsigned char IR)

{

int i;

if(IR=='L')

for(i=1;i<=37;i++)

{

P1_3=1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

P1_3=0;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

}

if(IR=='R')

for(i=1;i<=37;i++)

{

P3_6=1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

P3_6=0;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

}

}

int main(void)

{

   int IRL,IRR;

   Forward();

   while(1)

{

Fashe('R');

IRR = P3_5;

Fashe('L');

IRL = P1_2;

if((IRL==0)&&(IRR==0))

{

Backward();

Left_Turn();

Left_Turn();

}

else if(IRL==0)

{

Backward();

Right_Turn();

}

else if(IRR==0)

{

Backward();

Left_Turn();

}

else

Forward();

}

}

六、实验心得

通过这次实验,我得到了以下两点收获:

(1)提高专业基本知识的重要性 

作为一名车辆工程专业的学生,对机电一体化这一领域并没有过深入了解,但这次实验也让我认识到了自己身上很多的不足。在对《C51单片机应用与C语言程序设计》的学习过程中,虽然有过C语言和单片机编程的学习基础,但实验过程中还是遇到了不小的阻力,这就需要我们在学习过程中,多回想以前学过的知识,这样才能在学习工作中提高效率,出色完成任务。 

(2)增强团队合作的能力 

在这次实验中,我收获了许多许多,其中让我感悟最深的是团队的重要性。在实验中,每当我一遇到知识的死角以及技能上的空缺,就会一筹莫展,从而停滞不前。但是在团队其他成员的带动以及帮助下,我能够解决问题,重整士气。与此同时,在遇到我懂而其他人不懂的问题时,我能够将自己的知识教给别人,也给我带来了一定的成就感,让我对本实验有了更多的成就感,以及兴趣,成为我不断探索的动力。  

在整个实验过程中,老师对我们的纪律要求都非常的高,让我们在操作的过程中,保持工作环境。这也进一步规范了我们的劳动纪律,提高了遵守规则的自觉性。让我们在了解、熟悉和掌握一定的工程基础知识和操作技能过程中,善于发现问题、提出问题、解决问题,并在这个过程中不断培养、提高学习能力。

参考文献:

[1]C51单片机应用与C语言程序设计

[2] C51+AVR控制板介绍手册

[3] C51-AVR-Arduino微控制器

[4]谭勇,王珂娜,机电综合实验之机电一体化综合控制实验课程指导书 [M]湖南大学,2014

 

第二篇:机电综合实验报告模板

机电综合实验

实验报告

班级:_______

学号:_______

姓名:_______

日期:_______

西安科技大学机械工程学院

相关推荐