当前位置:文档之家› 基于51单片机的智能循迹避障小车+C源程序

基于51单片机的智能循迹避障小车+C源程序

项目名称:智能小车系别:信息工程系专业:11电气工程及其自动化姓名:刘亮、崔占闯、韩康指导老师:**崔占闯联系邮箱:*****************目录摘要: (3)关键词: (3)绪论: (3)一、系统设计 (4)1.1、任务及要求 (4)1.2车体方案认证与选择 (4)二、硬件设计及说明 (5)2.1循迹+避障模块 (5)2.2主控模块 (6)2.3电机驱动模块 (6)2.4机械模块 (7)2.5 电源模块 (7)三、自动循迹避障小车总体设计 (7)四、软件设计及说明 (8)4.1系统软件流程图 (9)4.2系统程序 (9)五、系统测试过程 (12)六、总结 (13)七、附录:系统元器件 (13)摘要本设计主要有三个模块包括信号检测模块、主控模块、电机驱动模块。

信号检测模块采用红外光对管,用以对有无障碍与黑线进行检测。

主控电路采用宏晶公司的8051核心的STC89C52单片机为控制芯片。

电机驱动模块采用意法半导体的L298N专用电机驱动芯片,单片控制与传统分立元件电路相比,使整个系统有很好的稳定性。

信号检测模块将采集到的路况信号传入STC89C52单片机,经单片机处理过后对L298N发出指令进行相应的调整。

通过有无光线接收来控制电动小车的转向,从而实现自动循迹避障的功能。

关键词:智能循迹避障小车,STC89C52单片机,L298N驱动芯片,信号检测模块,循迹避障绪论(一)智能小车的作用和意义自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。

近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。

人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。

随着科学技术的发展,机器人的感系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。

视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。

但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。

视觉的典型应用领域为自主式智能导航一种实用有效的方法。

机器人要实现自动导引循迹功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。

避障控制系统是基于自动导引小车系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。

使用传感器感知路线和障碍并作出判断和相应的执行动作。

该智能小车可以作为机器人的典型代表。

它可以分为三大组成部分:传感器检测部分、cpu、执行部分。

机器人要实现自动循迹避障功能,感知导引线和障碍物。

可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。

基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD 传感器而考虑使用价廉物美的红外光电传感器来充当。

智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向。

单片机驱动直流电机一般有两种方案:第一,勿需占用单片机资源,直接选择有PWM功能的单片机,这样可以实现精确调速;第二,可以由软件模拟PWM输出调制,需要占用单片机资源,难以精确调速,但单片机型号的选择余地较大。

考虑到实际情况,本文选择第二种方案。

CPU使用STC89C52单片机,配合软件编程实现。

(二)智能小车的现状现智能小车发展很快,从智能玩具到其它各行业都有实质成果。

其基本可实现循迹、避障、检测贴片、寻光入库、避崖等基本功能,这几节的电子设计大赛智能小车又在向声控系统发展。

比较出名的飞思卡尔智能小车更是走在前列。

我此次的设计主要实现循迹避障这两个功能一、系统设计本组智能小车的硬件主要有以STC89C52单片机作为核心的主控器部分、自动循迹+避障部分、电机驱动部分。

电机驱动部分和其他部分由一个电源通过串联供电。

小车硬件系统示意图如下:1.1、任务及要求设计一个基于直流电机的自动循迹避障小车,使小车能够自动检测地面黑色轨迹和道路两侧的挡板(没有黑线时),并沿着黑色轨迹和挡板行驶。

1.2、车体方案认证与选择方案一:自己动手制作电动车,一方面材料缺少,另一方面制作过程要花费大量的时间,而且同学中手艺也不好,制作出来的小车还可能机械性能不好。

考虑到时间与性能这两方面,我们放弃了这一方案方案二:购买小车全套零件,购买的小车全套零件具有组装完整的车架车轮、电机及其驱动电路。

易改装,好控制。

机械性能有保障。

小车图片如下:综合考虑,最终选择方案二二、硬件设计及说明2.1循迹+避障模块我们选择四路红外探测寻迹光电传感器此模块是为智能小车、机器人等自动化机械装置提供一种多用途的红外线探测系统的解决方案。

使用红外线发射和接收管等分立元器件组成探头,并使用LM339 电压比较器(加入了迟滞电路更加稳定)做为核心器件构成中控电路。

此系统具有的多种探测功能能极大的满足各种自动化、智能化的小型系统的应用。

此模块的特点:易于安装,使用简便;4 路分别独立工作,工作时不受数量限制;中控板与探头分开,安装位置不受限制;模块高度≤10 毫米;安全工作电压范围在 3伏特至 6 伏特之间;4 路全开工作电流 30 毫安至 55 毫安之间。

2.2主控模块我们采用宏晶公司的STC89C52单片机作为主控制器。

STC89C52是一个高速,低功耗,超强抗干扰的8位单片机,片内含32k 空间的可反复擦写100,000 次Flash 只读存储器,具有4K 的随机存取数据存储器(RAM),32 个I/O口,2个8位可编程定时计数器,且可在线编程、调试,方便地实现程序的下载与整机的调试。

时钟电路和复位电路(与单片机构成最小系统)1)采用外部时钟,晶振频率为12MHZ2)采用按键复位2.3电机驱动模块电机电机采用直流减速电机,直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。

由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。

可选用减速比为1:74 的直流电机,减速后电机的转速为100r/min。

若车轮直径为6cm,则小车的最大速度可以达到V=2πr·v=2*3.14*0.03*100/60=0.314m/s能够较好的满足系统的要求。

驱动驱动模块采用专用芯片L298N 作为电机驱动芯片,L298N 是一个具有高电压大电流的全桥驱动芯片,其响应频率高,一片L298N可以分别控制两个直流电机。

以下为L298N的引脚图和输入输出关系表。

图L298N外部引脚表1 L298N输入输出关系驱动电路的设计如图2 所示:图2 L298N电机驱动电路L298N 的5、7、10、12 四个引脚接到单片机上,通过对单片机的编程就可实现两个直流电机的PWM调速控制。

2.4电源模块采用4节普通1.5V干电池单电源供电,采用串联方式同时给单片机与电机供电。

三、自动循迹避障小车总体设计3.1 总体电路图四、软件设计及说明4.1系统软件流程图4.2循迹避障程序#include<reg51.h>#define uchar unsigned char #define uint unsigned intunsigned char zkb1=0 ;//**左边电机的占空比**//unsigned char zkb2=0 ;//**右边电机的占空比**//unsigned char t=0;//**定时器中断计数器**//sbit LSEN2=P2^0;sbit LSEN1=P2^1;sbit RSEN1=P2^2;sbit RSEN2=P2^3;//**传感器***/sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;sbit ENA=P1^4;sbit ENB=P1^5;//**********初始化定时器中断***********// void init(){TMOD=0x01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;}//***********中断函数+脉宽调制***********// void timer0() interrupt 1{if(t<zkb1)ENA=1;elseENA=0;if(t<zkb2)ENB=1;elseENB=0;t++;if(t>=50){t=0;}}//******************直行******************// void qianjin(){zkb1=50;zkb2=50;}//***************左转函数1***************//void turn_left1(){zkb1=0;zkb2=50;}//***************左转函数2***************//void turn_left2(){zkb1=0;zkb2=50;}//***************右转函数1***************//void turn_right1(){zkb1=50;zkb2=0;}//***************右转函数2***************//void turn_right2(){zkb1=50;zkb2=0;}//***************循迹函数*****************//void xunji(){uchar flag;if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1)){ flag=0; }//*******直行*******//else if((RSEN2==1)&&(RSEN1==1)&&(LSEN1==0)&&(LSEN2==1)) { flag=1;}//***左偏1,右转***//else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=2; }//***右偏1,左转***//else if((RSEN2==0)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==1)){ flag=3; }//***右偏2,左转***//else if((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==0)){ flag=4;}//***左偏2,右转***//switch (flag){case 0:qianjin();break;case 1:turn_right1();break;case 2:turn_left1();break;case 3:turn_left2();break;case 4:turn_right2();break;default: break;}}//****************主程序****************//void main(){init();zkb1=50;zkb2=50;while(1){//******给电机加电启动******//IN1=1;IN2=0;IN3=1;IN4=0;ENA=1;ENB=1;while(1){xunji(); //*********寻迹**********//}}}五、系统测试过程本小车能实现循迹避障功能,它能沿着地面上黑色轨迹行驶实现循迹功能,也能检测到跑道两侧的挡板,沿挡板行驶实现避障功能。

相关主题