湖南大学机电综合实验两轮智能移动机器人论文.doc
- 文档编号:14733143
- 上传时间:2023-06-26
- 格式:DOC
- 页数:20
- 大小:1.54MB
湖南大学机电综合实验两轮智能移动机器人论文.doc
《湖南大学机电综合实验两轮智能移动机器人论文.doc》由会员分享,可在线阅读,更多相关《湖南大学机电综合实验两轮智能移动机器人论文.doc(20页珍藏版)》请在冰点文库上搜索。
机电综合实验之
机电一体化综合控制实验报告书
题目:
两轮智能移动机器人
实验者:
学号:
班级:
日期:
2015.4-2015.5
目录
目录 2
第一章实验目的 3
第二章实验对象 3
第三章实验原理 4
第四章实验设备及软硬件介绍 6
1、C51+AVR控制板 6
2、USBASP 下载器 6
3、Keil uVision2 IDE 集成开发环境 7
4、SL ISP软件下载工具 7
5、串口调试软件 7
第五章实验内容 7
1、安装调试 7
2、基本巡航动作 7
3、让机器人按“日”字行走 8
4、C51输入/输出接口与机器人触觉导航 11
5、C51输入/输出接口与红外线导航 15
第六章实验心得 20
第一章实验目的
让每一个学习单片机原理与应用的学生或者个人都能够以教育机器人作为工程对象,让他们在开发自己的教育机器人过程中学习和掌握单片机的基本原理与应用系统的开发技能,包括:
1.C51系列单片机的C语言编程环境和使用方法;
2.单片机的输入接口、使用方法和C程序设计;
3.单片机的输出接口、使用方法和C程序设计;
4.单片机的接口电气特性和外围电路;
5.单片机的串口通讯、应用与C程序设计;
6.单片机与LCD的连接与C编程;
7.基础传感器原理和用C51编程实现机器人基本智能的实现方法等。
第二章实验对象
本项目是使用典型的机器人工程对象,采用STC8952单片机作为大脑,行走机构为两个车轮,采用伺服电机控制。
触觉导航采用触觉开关,红外导航采用发射红外线遇障碍反射技术导航。
第三章实验原理
运用STC8952单片机,采用C语言对其进行编程,控制机器人伺服电机以不同速度运动是通过让单片机输入、输出接口输出不同的脉冲序列来实现的。
控制机器人伺服电机以不同速度运动是通过让单片机的输入/输出(I/O)口输出不同的脉冲序列来实现的。
51系列单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash.
单片机各I/O接口的内部结构有关,而且每个8位并行I/O口的使用方式也不太一样。
AT89S52引脚如图所示,AT89S52共有44根引脚,其中32根是I/O端口引脚。
在这32根引脚中,有29根具备两种用途,既可作为I/O端口,也可作为控制信号或地址及数据线
机器人伺服电机控制信号:
图1、电机转速为零的控制信号时序图
图2、1.7ms的连续脉冲序列使电机逆时针全速旋转
图3、1.3ms的控制脉冲序列使电机顺时针全速旋转
图 1所示是高电平持续 1.5ms 低电平持续 20ms,然后不断重复的控制脉冲序列。
该脉冲序列发给经过零点标定后的伺服电机,伺服电机不会旋转
程序段:
while
(1)
{
P1_0=1;//P1_0输出高电平
delay_nus(1300);//延时1.3ms
P1_0=0;//P1_0输出低电平
delay_nus(20000);//延时20ms
}
图 2所示是高电平持续 1.3ms 低电平持续 20ms,然后不断重复的控制脉冲序列。
该脉冲序列发给经过零点标定后的伺服电机,伺服电机顺时针全速旋转。
程序段:
while
(1)
{
P1_0=1;//P1_0输出高电平
delay_nus(1300);//延时1.7ms
P1_0=0;//P1_0输出低电平
delay_nus(20000);//延时20ms
}
图 3所示是高电平持续 1.7ms 低电平持续 20ms,然后不断重复的控制脉冲序列。
该脉冲序列发给经过零点标定后的伺服电机,伺服电机逆时针全速旋转。
程序段:
while
(1)
{
P1_0=1;//P1_0输出高电平
delay_nus(1700);//延时1.7ms
P1_0=0;//P1_0输出低电平
delay_nus(20000);//延时20ms
}
从图 1、2和3可知,控制电机运动转速的是高电平持续的时间,当高电平持续时间为 1.3ms 时,电机顺时针全速旋转,当高电平持续时间1.7ms 时,电机逆时针速旋转
第四章实验设备及软硬件介绍
1、C51+AVR控制板
C51+AVR 宝贝车控制板,是鸥鹏科技有限公司开发的,一款拥有C51 和AVR 功能的 单片机控制板。
C51 部分采用的是AT89S52 单片机,AVR 部分采用的是ALTMEGA8 的单片机。
功能特性:
AT89S52 是一种低功耗、高性能CMOS8 位微控制器, 具有8K 在系统可编程Flash 存 储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。
片上Flash 允许程序存储器在系统可编程,亦适于 常规编程器。
在单芯片上, 拥有灵巧的8 位CPU 和在系统 可编程Flash ,使得AT89S52 为众多嵌入式控制应用系统 提供高灵活、超有效的解决方案。
AT89S52 具有以下标准功能:
8k 字节Flash,256 字 节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器, 一 个6 向量2 级中断结构, 全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至 0Hz 静态逻辑操作,支持2 种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM 、 定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。
2、USBASP 下载器
USBASP下载器由欧鹏科技有限公司开发,是连接电脑主机与C51+AVR控制板之间的媒介,将电脑上的程序代码导入控制板,实现小车的行走。
USBASP下载器的套件组成:
USBASP下载器、USBASP Window平台驱动程序、使用说明书。
3、Keil uVision2 IDE 集成开发环境
该软件是德国KEIL 公司出品的51 系列单片机C 语言集成开发系统。
它包含一个高效的编译器、一个项目管理器和一个MAKE工具。
其中Keil C51是一种专门为单片机设计的高效率C语言编译器,符合ANIS标准,生成的程序代码运行速度极高,所需的存储器空间极小,完全可以与汇编语言媲美。
4、SL ISP软件下载工具
该软件是广州天河双龙电子有限公司推出的一款ISP下载软件,使用该软件你可以将可 执行文件下载到你的机器人单片机上。
该软件的使用需要你的计算机有并行口。
5、串口调试软件
此软件是用来显示单片机与计算机的交互信息的。
在硬件上,你的计算机至少要有串口或 USB 接口来与单片机教学板的串口连接。
第五章实验内容
1、安装调试
机器人大脑需要连接电源以便运行,同时也需要连接到PC机(或笔记本电脑)以便编程和交互。
以上接线完成后,就可以用编辑器软件来对系统进行测试。
(1)串口的连接
机器人教学板通过串口电缆连接到PC 机(或笔记本电脑)上以便与用户交互。
(2)下载线的连接
机器人程序通过连接到PC机或者笔记本电脑的并口上的ISP下载线来下载到教学板上的单片机内。
(3)电池的安装
本实验机器人采用五号碱性电池给机器人电机和教学板供电,先检查机器人底部电池盒内是否已经装好电池,并是否有正常的电压输出。
2、基本巡航动作
下面的程序片段可以使其向前走:
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
下面的程序片段可以使其向后走:
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
下面的程序片段可以使你的机器人原地左转:
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
下面的程序可以使你的机器人原地右转:
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
3、让机器人按“日”字行走
实验设计路线是一个“日”字,类似电机调零的相关操作,把程序导入单片机内,实现调试。
#include
#include
int main(void)
{
int counter;
uart_Init();
printf("Program Running!
\n");
for(counter=1;counter<=26;counter++)//向前
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向左转
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
} for(counter=1;counter<=26;counter++)//向前
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向左转
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向前
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向左转
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
} for(counter=1;counter<=52;counter++)//向前
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向左转
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向前
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向左转
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
for(counter=1;counter<=26;counter++)//向前
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
While
(1);
}
4、C51输入/输出接口与机器人触觉导航
编程让机器人通过触觉胡须导航之前,首先必须安装并测试胡须,安装机器人触觉胡须所需的硬件元件清单,包括:
金属丝2根
平头M3×22盘头螺钉2个
13mm圆形立柱2个
M3尼龙垫圈2个
3-pin公-公接头2个
220Ω电阻2个
10kΩ电阻2个
安装胡须:
拆掉连接主板到前支架的两颗螺钉,参考图1,进行下面操作螺钉依次穿过M3尼龙垫圈、13mm圆形立柱螺钉穿过主板上的圆孔之后,拧进主板下面的支架中,但不要拧紧把须状金属丝的其中一个钩在尼龙垫圈之上,另一个钩在尼龙垫圈之下,调整它们的位置使它们横向交叉但又不接触拧紧螺钉到支架上参考接线图2,搭建胡须电路。
注意:
右边胡须状态信息输入是通
过P1口的第4脚完成,而左边胡须状态信息输入是通过P2口的第3脚完成确定两条胡须比较靠近,但又不接触面包板上的3-pin头。
推荐保持3mm的距离。
图3所示是实际的参考接线图。
:
安装好触觉胡须的机器人如图4所示。
观察一下图2所示的胡须电路示意图,显然每条胡须都是一个机械式的、接地常开的开关。
胡须接地(GND)是因为教学板外围的镀金孔都连接到GND。
金属支架和螺丝钉提供电气连接给胡须。
通过编程让单片机探测什么时候胡须被触动。
由图2可知,连接到每个胡须电路的I/O引脚监视着10K上拉电阻上的电压变化。
当胡须没有被触动,连接胡须的I/O管脚的电压是5V;当胡须被触动时,I/O短接到地,所以I/O管脚的电压是0V。
胡须测试程序:
#include
#include
intP1_4state(void)//获取P1_4的状态
{
return(P1&0x10)?
1:
0;
}
intP2_3state(void)//获取P2_3的状态
{
return(P2&0x08)?
1:
0;
}
intmain(void)
{
uart_Init();
printf("WHISKERSTARTES\n");
while
(1)
{
printf("右边胡须的状态:
%d",P1_4state());
printf("左边胡须的状态:
%d\n",P2_3state());
delay_nms(150);
}
}
通过胡须导航
程序如下
#include
#include
intP1_4state(void)
{
return(P1&0x10)?
1:
0;
}
intP2_3state(void)
{
return(P2&0x08)?
1:
0;
}
voidForward(void)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
voidLeft_Turn(void)
{
inti;
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);
}
}
voidRight_Turn(void)
{
inti;
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);
}
}
voidBackward(void)
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
intmain(void)
{
uart_Init();
printf("ProgramRunning!
\n");
while
(1)
{
if((P1_4state()==0)&&(P2_3state()==0))//两胡须同时碰到
{
Backward();//向后
Left_Turn();//向左
Left_Turn();//向左
}
elseif(P1_4state()==0)//右胡须碰到
{
Backward();//向后
Left_Turn();//向左
}
elseif(P2_3state()==0)//左胡须碰到
{
Backward();//向后
Right_Turn();//向右
}
else//胡须没有碰到
Forward();//向前
}
}
5、C51输入/输出接口与红外线导航
元件清单:
(1)两个红外检测器
(2)两个IRLED
(3)四个470□电阻
(4)两个9013三极管
搭建红外线前灯
电路板的每个角安装一个IR组(IRLED和检测器)。
断开主板和伺服系统的电源
可参考实物图1,建立图2所示的电路,
测试程序
#include
#include
intP1_2state(void)
{
return(P1&0x04)?
1:
0;
}
intmain(void)
{
intcounter;
intirDetectLeft;
uart_Init();
printf("ProgramRunning!
\n");
while
(1)
{
for(counter=0;counter<38;counter++)
{
P1_3=1;
delay_nus(13);
P1_3=0;
delay_nus(13);
}
irDetectLeft=P1_2state();
printf("irDetectLeft=%d\n",irDetectLeft);
delay_nms(100);
}
}
测试步骤:
²打开教学板的电源输入、保存并运行测试程序
²保持机器人与串口电缆的连接,因为你需用调试终端来测试你的IR组²放一个物体,比如手或一张纸,距离左侧IR组大约2到3厘米,²验证当你放一个物体在IR组前时,调试终端是否会显示“0”;当你将物体移开时,它是否显示“1”
²如果调试终端显示的是预料的值,没发现物体显示1,发现物体显示0,说
明测试完成,红外发射探测器安装成功
²如果调试终端显示的不是预料的值,试试排错部分里的步骤进行排错排错,
并检查电路和输入的程序,或者调整红外发射器角度,直到测试正常。
红外避障程序
#include
#include
#include
#defineLeftIRP1_2//左边红外接收连接到P1_2
#defineRightIRP3_5//右边红外接收连接到P3_5
#defineLeftLaunchP1_3//左边红外发射连接到P1_3
#defineRightLaunchP3_6//右边红外发射连接到P3_6
voidIRLaunch(unsignedcharIR)
{
intcounter;
if(IR=='L')//左边发射
for(counter=0;counter<38;counter++)//发射时间比胡须长
{
LeftLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
LeftLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
if(IR=='R')//右边发射
for(counter=0;counter<38;counter++)
{
RightLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
RightLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
voidForward(void)//向前行走子程序
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
voidLeft_Turn(void)//左转子程序
{
inti;
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);
}
}
voidRight_Turn(void)//右转子程序
{
inti;
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);
}
}
voidBackward(void)//向后行走子程序
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南大学 机电 综合 实验 智能 移动 机器人 论文