收藏和点赞,您的关注是我创作的动力
概要
移动式机器人的重要组成部分就是智能循迹壁障,本设计通过不断检测各个模块的传感器的输入信号。循迹模块实时检测5路循迹模块在黑线跑道上的状态,当机器人离开所设置的范围时,智能机器人自主调整机器人的方向位置。并且具有循迹以及检测前方的距离,当前方距离小于25厘米时,机器人可以自动避开继续循迹。机器人可以在LCD1602液晶上显示前方障碍物的距离,机器人的驱动是采用L298驱动芯片驱动循迹壁障小的行走。
关键词:循迹壁障机器人;STC89C52单片机;驱动芯片(L298)
一、系统方案设计
本设计采用由STC89C52单片机最小系统、电机驱动电路模块、超声波壁障模块、5路循迹模块、液晶显示模块和电源模块块组成。单片机实时检测5路循迹模块在黑线跑道上的状态,并自主调整机器人的方向。在循迹的跑道上检测前方的距离,当前方距离小于25厘米时,小车避开障碍物往回继续循迹。机器人把前方障碍物的距离显示在LCD1602液晶上,机器人的驱动是采用L298驱动芯片驱动循迹壁障小的行走。系统总体框图如图3-1所示:
1-1总体结构框图
二、系统电路设计
4.1主控制模块
主控制最系统电路如图4所示。单片机最小系统包括单片机、复位电路、时钟电路构成。STC89C52 单片机的工作电压范围:4V-5.5V,所以通常给单片机外界5V直流电源。连接方式为单片机中的40脚VCC接正极5V,而20脚VSS接电源地端。
复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工作状态。当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。
时钟电路好比单片机的心脏,它控制着单片机的工作节奏。时钟电路就是振荡电路,是向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us。
图4 单片主控电路
4.2液晶显示模块电路设计
显示模块采用LCD1602液晶显示器,能够清晰的在液晶上显示字符和数字,看到能让人感觉到舒服感。液晶的命令操作脚是RS、RW、EN接在单片机的P35、P36、P3^7脚。,数据脚D0~D7分别接单片机的的P1口。具体电路图如图5所示:
图5液晶显示电路
4.3电机驱动模块的设计
电机驱动一般采用H桥式驱动电路,L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机。通过单片机给予L298N电路PWM信号来控制小车的速度,起停。驱动电路原理图如图6所示。
图6电机驱动电路
L298N的5、7、10、12四个引脚接到单片机上,单片机通过编程就可以实现两个直流电机的正反转。
4.4总原理图程序
避障模块采用超声波避障,接口电路如图7所示。 超声波模块采用现成的HC-SR04超声波模块,该模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm。模块包括超声波发射器、接收器与控制电路。
基本工作原理:采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号;模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。实物如下图8。其中VCC 供5V 电源,GND 为地线,TRIG 触发控制信号输入,ECHO 回响信号输出等四支线。
图7 避障接口电路
图8 超声波模块实物
三、 系统软件设计
5.1程序结构分析
智能循迹壁障机器人的软件设计采用模块化的设计思想,这样就把一个复杂的软件设计分成几个相对简单的部分分别予以解决。本论文完成的功能是循迹壁障机器人,单片机实时检测5路循迹模块在黑线跑道上的状态,当前方距离小于25厘米时,机器人避开障碍物往回继续循迹,并在液晶上显示距离。先初始化超声波和液晶,读取超声波检测的距离并在液晶上把距离显示出来。利用红外传感器检测机器人循迹的位置,判断是否调整机器人的位置。在循迹的路上检测前方的距离,判断前方障碍物是否小于25cm,如果小于则机器人壁障障碍物原路返回继续循迹。流程图如图7-1所示:
5.2系统程序流图
图7-1 主程序流程图
5.3相关程序介绍
本次设计用到了液晶显示,测速,测距,以及寻迹程序,这里就不一一讲解。只在下面给我了液晶显示的程序,其他的程序见附录。
#include "std_for_wym.h"
//液晶写命令
void LCDWriteCom(unsigned char com)
{
RS_L;
RW_L;
READ_DATA = com;
EN_H;
DelayMs(5);
EN_L;
}
//液晶写数据
void LCDWriteData(unsigned char dat)
{
RS_H;
RW_L;
READ_DATA = dat;
EN_H;
DelayMs(5);
EN_L;
}
/*******************************************************************************
**函数名称:LCD_Write_str()
**函数功能:在LCD上写入一串字符
**输 入 口:hang : 要写入的行,add 要写入列 *s要写入的指针数组
**输 出 口:无
**返 回 值:无
**备 注:strlen()是引用库函数string.h ,可以求出数组的长度
**日 期:2014.2.22
*******************************************************************************/
void LcdWriteStr(unsigned char hang,unsigned char add,char*s)
{
unsigned char i;
unsigned char length = 0;
if(hang==1)
LCDWriteCom(0x80+add);
else
LCDWriteCom(0x80+0x40+add);
length = strlen(s);
for(i=0;i<length;i++)
LCDWriteData(*s++); //指针送完数据后自加一
}
/*void LcdWriteChar(unsigned char hang,unsigned char add,char Ch)
{
if(hang == 1)LCDWriteCom(0x80+add);
else LCDWriteCom(0x80+0x40+add);
LCDWriteData(Ch);
}*/
//能像printf一样使用
void Lcd1602Printf( unsigned char x, unsigned char y, unsigned char *p,...)
{
char idata LcdBuf[17];
va_list ap;
va_start(ap, p);
vsprintf(LcdBuf,p,ap);
va_end(ap);
LcdWriteStr(x,y,LcdBuf);
}
void Init_1602(void)
{
LCDWriteCom(0x38); //设置16*2显示,5*7点阵,8位数据接口
LCDWriteCom(0x0c); //开显示,不显示光标
LCDWriteCom(0x06); //地址加1,当写入数据的时候光标右移
LCDWriteCom(0x01); // 清屏
DelayMs(2);
//Lcd1602Printf(1,0," Lcd1602 Normal "); //测试液晶1602显示用 Normal:正常
}
四、 总结
经过近几个月的毕业设计,使我对集成电路的使用有了更进一步的认识和了解,要想学好它要重在实践,通过实践,我也发现我的很多不足之处,把所学习到的知识融合到一块还不是想象中的那么简单,其中涉及了单片机、数字电子技术、模拟电子技术、protel 99se等学科知识,要学好这门课程还需要更多的努力。
通过实践的学习,使我对整体的电路设计有了一个更全面的了解,锻炼了重全局考虑局部的能力。深刻体会了理论联系实际的重要性,从老师提出设计要求到完成设计报告,不断的完善自己的设计和电路。在图书馆查资料到写出具体的实施方案、画出电路图都要认真考虑,寻找最优的设计方案。经过多次修改最终于实现了设计要求。
在大学四年的学习和课题研究期间,老师们给予我许多悉心的指导和帮助,教给我知识和为人处世的道理。尤其是这次毕业论文设计,在这里非常感谢老师在设计中给我的建议、支持和帮助,非常感谢老师在我写论文期间对我的引导和启发。在整个论文的选题、理论研究、需求分析、总体设计、详细设计的过程中,自始至终得到了导师老师的悉心指导和深切关怀。感谢导师对我论文不厌其烦的精心修改,多次耐心地审阅了论文全稿,提出了许多宝贵的意见。还有一只在身边支持的同学,在我遇到问题时,他们都尽心为我解答,如果遇到我们都不熟悉的问题,他们都和我一起动手解决。由于老师的支持和同学的各方配合使我的课题能顺利的完成
五、 文章目录
目 录
摘 要 1
Abstract 2
第一章 绪论 1
1.1国内外研究动态 1
1.2 课题的目的和意义 1
1.3智能机器人总体方案设计 2
第二章系统方案比较、设计与论证 3
2.1主控制器模块选择 3
2.2壁障传感器的选择 3
2.3显示模块的选择 4
2.4循迹传感器的选择 4
2.5供电方式选择 5
第三章芯片资料简介 6
3.1L298电机驱动模块 6
3.2LCD显示模块 8
3.2.1LCD1602的特性及使用说明 8
3.3STC89C52单片机的简介 11
3.3.1 STC89C52单片机主要特性 11
第四章 硬件实现及单元电路设计 15
4.1主控制模块 15
4.2液晶显示模块电路设计 15
4.3电机驱动模块的设计 16
4.4壁障模块的设计 16
4.5循迹模块电路设计 17
4.6电源部分的设计 18
第五章系统软件设计 20
5.1程序结构分析 20
5.2系统程序流图 20
结论 21
致谢 22
参考文献 23
附录1整体电路原理图 24
附录2元器件清单 24
附录3部分源程序 25