基于单片机的智能小车的设计
目录
摘要 ..............................................................................3 第一章 引言 ......................................................................3 第二章 方案说明 ..................................................................3 2.1、方案论证 ...................................................................3 2.2、总体设计方案概述 ..........................................................4 第三章 硬件电路设计 ..............................................................5 3.1、主控电路 .....................................................................5 3.1.1、L7805稳压器 ...............................................................5 3.1.2、MAX232芯片简介 ..........................................................6 3.2、八路红外传感器模块 ..........................................................6
3.2.1、LM324简介 ..............................................................6
3.2.2、74HC14D简介 ..............................................................6 3.3、L298N电机驱动模块 ..........................................................7
3.3.1、L298N简介 ..............................................................8
3.4、机械部分 .....................................................................9 第四章 软件系统设计 ..............................................................9 4.1、程序流程图 ...................................................................9 4.2、程序设计方案.................................................................9 参考文献 .........................................................................12 第五章 结束语 ...................................................................12 致谢 .............................................................................12 附录1 ...........................................................................13
0
附录2 ...........................................................................13 外文页 ...........................................................................20
基于单片机的智能小车的设计
摘要 本文介绍了基于STCC52单片机的智能小车的设计与实现。小车主要能够识别黑线并检测障碍物从而实现在固定跑道内行驶并且可自动避障。小车以STCC52单片机控制器;采用八路红外传感器及其处理模块实现对黑线及障碍物的检测;通过单片机产生PWM波并通过L298N来对小车的方向和速度进行控制。
关键字 STCC52 单片机 红外传感器 PWM L298N
第二章 方案说明
2.1、方案论证
(1)控制系统
方案二:采用STCC52单片机,该单片机是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STCC52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口
[3]
。其完全可以满足本设计对小车功能的要求,并且价格便宜;所以本设计最终选用STCC52
单片机作为其控制芯片。
(2)避障与寻线传感器
方案一:采用US-100超声波测距模块,该模块可实现2cm~4.5m的非接触测距功能,拥有2.4~5.5V的
宽电压输入范围,静态工作电流2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠且方向性好但其近距离反射时干扰较大。
方案二:采用八路红外对管及处理模块,该模块可工作在3.3到5V电压下检测距离在1-6厘米,采用多圈式电阻调节检测距离,且尺寸较小可方便的搭载在小车上,同时其平均价格要比US-100要低;其八路的传感器可分别用作测距与检测黑线;综合上述考虑,本设计采用八路红外对管作为其避障与寻线传感器。
2.2、总体设计方案概述
电机 L298N电机控制模块 1 STCC52单片机系统 八路红外传感器
图1 总体设计框图 本设计以STCC52单片机系统为控制中心,通过八路红外传感器模块中的两路传感器检测障碍物,
四路传感器检测黑线,检测障碍物的两路传感器分别分布在车头的两端,使其能够检测车前较大范围内的障碍物,尽量减小检测盲区;检测黑线的四路传感器分别分布在小车的四角,从而能够保证小车在跑道内行驶。传感器在接通电源后会不断的发送和接收红外线,接收到的信号经过LM324进行放大然后由74HC14D施密特触发器转换成数字信号输出,而当单片机检测到需要转向的传感器信号时,单片机通过改变PWM波的占空比来调整小车两侧的电机转速,从而使其两侧轮产生速度差,以实现小车的转向。
避障:在小车行驶过程中,若左侧传感器检测到障碍物而右侧传感器未检测到,则小车首先后退之后向右转;同理,若右侧检测到而左侧未检测到,小车先后退之后左转;如果左右均检测到默认小车先后退之后右转。
检测黑线:安装在小车四角的红外传感器负责检测黑线,由于小车是向前行驶所以最先驶出黑线的应该是小车的前端,当左前端传感器检测到黑线时,向单片机发送信号,小车右转;当右前端传感器检测到黑线时,小车左转;当左后端检测到黑线而左前端未检测到时小车先右转再左转,当右后端检测到黑线而左前端未检测到时先左转后右转,当前端两传感器同时检测到黑线时小车先后退之后左转。控制逻辑见 表1
表 1
检测 检测到 检测物 未检测到 障碍物 黑线 0 1 1 0 PWM:脉冲宽度调制(PWM),简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,此处我们主要通过单片机输出PWM波同时通过调节其占空比来实现对小车的控制。
第三章 硬件电路设计
3.1、主控电路
2
本模块主要是采集信号并进行分析,同时输出PWM波控制电机速度,从而控制小车前进转弯等动作。其中,此处采用STCC52单片机作为主控芯片,由9—12V直流电通过78M05稳压芯片后进行供电;单片机读写口连接了MAX232芯片,并焊接了串口接口,使其能够直接使用USB转串口线下载程序;除此之外,单片机引脚全部通过排针引出,使得此电路连接其他模块更加方便。复位及时钟电路分别见图2和图3,单片机引脚电路见附录1
3.1.1、L7805稳压器
图2 复位电路 图3 时钟电路
L7805是我们最常用到的稳压芯片,本设计中采用7节5号干电池进行供电,电容C2、C3对输入到L7805前的直流电进行滤波,之后输入到L7805,经其稳压后输出5V直流电,给单片机供电。如图4
图4稳压电路
3.1.2、MAX232芯片简介
MAX232芯片是美信(MAXIM)公司专门为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电;TTL/CMOS数据从T1IN、T2IN输入,转换成RS-232数据后从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输入到单片机的RXD、TXD口;此处MAX232主要在下载程序时对由串口发出来的信号进行转换。其电路如图5
3.2、八路红外传感器模块
3
红外线在不同颜色的物体表面具有不同的反射性质,所以我们可以利用红外对管对黑线及障碍物进行检测;此模块拥有两个LM324放大器和两个74HC14D,当红外线在不同颜色物体上的反射光被接收管接收到时会产生不同幅度的电压,经由模块的LM324芯片进行信号放大,之后输入到74HC14D进行高低电平的转换。小车在行驶过程中红外管不断地向外发射红外线,当红外光遇到白色地面时发生漫发射,反射光被接收管接收,模块输出低电平;如果遇到黑线则红外线被吸收,接收管接收不到信号,此时模块输出高电平;单片机通过程序控制不断检测模块输出引脚的高低电平从而实现信号的检测。小车的避障原理与此类似,当红外管不断发出红外线,而在距小车前方6cm无障碍物时,红外线不发生反射,此时接收管接收不到反射光,模块输出低电平;当小车前方6cm内有障碍物时,红外管发出的红外线将会被反射回来,接收管接受到反射光,模块输出高电平。
3.2.1、LM324简介
LM324内部包括有两个的、高增益、内部频率补偿的运算放大器,适合于电源电压范围很宽的单电源使用, 也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
3.2.2、74HC14D简介
74HC14D是6路施密特触发器件,内含6个的出发倒相器,在正逻辑中它们执行波形整形和倒相功能;它也是5V电源供电且不需要外围元件。
4
图5 TTL转换电路
3.3、L298N电机驱动模块
该模块采用了L298N双H桥直流电机驱动芯片,驱动电机部分VIN采用+9V直流电源供电,同时模块上安装了L78M05稳压器对vin的输入进行稳压,逻辑部分VCC采用+5V供电,小车运行时通过单片机向该模块1、2、3、4脚输入控制信息来控制小车电机的转速。其电路如图6 、7、8
图6 电机控制电路[7] 5
图7 稳压电路
图8 接口电路
3.3.1 、L298N简介
L298N内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。输出电压最高可达50V,可以直接通过电源来调节输出电压;用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机。控制逻辑见表2
输入PWM信号改变脉宽可调速 调速端A 正转 M1 反转 停止 正转 M2 反转 停止 1 0 0 / / 0 0 1 0 / / 0 6
[8]
电机 旋转方式 控制端IN1 控制端IN2 控制端IN3 / / / 1 0 / 控制端IN4 / / / 0 1 / 调速端B / / / 1 1 1 1 1 1 / / / 3.4、机械部分
小车采用了四个直流电机为其提供动力,这使其具有较大动力,可以在较大的坡道上行驶;同时,小车
的四轮底盘设计,使得小车的直线行驶性能较强,不会出现方向跑偏的现象,同时转向时的方向感较好;小车的电路部分均用铜柱及螺丝固定在底盘上,使其具有很好的稳定性;除此之外,在接线方面,各模块之间均采用杜邦线进行连接,主控板上焊接了单片机插座,这些为小车提供了充足的再开发空间。
第四章 软件系统设计
4.1、程序流程图如图9
检测到黑线? 启动电机 设置初始值 开始 检测到障碍物? Y 避障 N N
避线 Y
图9 程序流程图 停止 4.2、程序设计方案
本系统编程部分采用C语言编写完成,应用模块化的设计方法,各子程序做为实现各部分功能和过程,通过主程序不断对子程序的调用完成PWM脉宽控制、延时以及电机转动方向控制等部分的设计。
单片机资源分配如下表3: 表3 P1.0 P1.1 EN1 EN2 P1.2 左下方传感器 P2.0 左电机端口2 P2.2 右电机端口2 P2.6 右前方传感器 P1.4 右下方传感器 P2.1 左电机端口1 P2.3 右电机端口1 P2.7 左前方传感器 7
①PWM脉宽控制:本设计中采用定时器0产生定时中断来控制P1.0与P1.1的输出从而生成PWM波。中断程序如下:
void time0(void)interrupt 1 { i++; j++;
if(i<=pro_right) {en1=1;} else en1=0;
if(i==40) {en1=~en1;i=0;} if(j<=pro_left) {en2=1;} else en2=0;
if(j==40) {en2=~en2;j=0;} TH0=(65536-100)/256; TL0=(65536-100)%256; }
②左右转向子程序:通过改变左右PWM波的占空比,来实现电机的速度控制;当小车需要左转弯时,将控制左侧电机的PWM波占空比设置为0,右侧设置为20;当小车需要右转时则相反。
左转弯子程序: void turn_left(){ pro_right=0; pro_left=20; left1=1; left2=0; right1=1; right2=0;
8
}
右转弯子程序: void turn_right() {
pro_right=40; pro_left=0; left1=1; left2=0; right1=1; right2=0; }
③小车在遇到障碍物时将首先运行后退程序,之后转向;后退子程序是通过改变电机正反转控制位而实现的。程序如下:
void turn_back() { left1=0; left2=1; right1=0; right2=1; pro_right=20; pro_left=20; }
第五章 结束语
本系统采用MSC-51系列单片机STCC52、L298N电机控制芯片和红外传感器来设计智能小车,实现了小车的自动避障与检测黑线。系统不足之处为避障的检测距离较短。这是由于所选红外传感器的检测距离所限,若要
9
进行提高需更换检测距离更远的传感器即可;除此之外,可见光对于本系统也有影响,不过一般影响不大,但是若要精确的采集数据,可以利用滤波器将红外光之外的其他频率的光线滤除。
参考文献:
[1] 徐友春,王荣本,世界智能车辆近况综述, 汽车工程[J], Vol.23, No.5, 2001.10 [2] 国防科大研制出无人驾驶汽车,计算机自动测量与控制[J]第8卷,p22
[3] 郭天祥.新概念51单片机C语言教程——入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009
[4] 蔡美琴 MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,2002 [5] 冯建华,赵亮 单片机应用系统设计与产品开发[M].北京:人民邮电出版社 2004 [6] 胡汉才,单片机原理及接口技术[M].北京:清华大学出版社,1996
[7] 童诗白,华成,模拟电子技术基础(第四版)[M].高等教育出版社,2006.5 [8] 阎石.数字电子技术基础(第五版)[M].北京:高等教育出版社,2005 [9] http://www.docin.com/p-400296.html
致 谢
历时三个月的毕业设计已经告一段落。经过自己不断的搜索努力以及老师的耐心指导和热情帮助,本设计已经基本完成。在这个过程中老师以及曾做过此类设计的同学给予了我很大的帮助,给我提供了大量的硬件和软件资料,也给我的设计提出了宝贵的意见和建议。在此,对大家表示衷心的感谢!
这次设计不仅是对我们大学四年专业知识的一次集中地检验,同时也为我们提供了一个进入职场前的实战机会;通过这次在老师指导下做设计的机会,我对于技术实践方面有了更深刻的认识,也进一步夯实了所学的专业知识。虽然在设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这三个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。 最后,再次向给予我指导和帮助的老师和各位同学表示最诚挚的谢意!
10
附录1:
附录2:
#include #define uchar unsigned char #define uint unsigned int uchar pro_left=35,pro_right=35,i,j; //左右占空比标志 sbit left1=P2^1; sbit left2=P2^0; sbit right1=P2^3; sbit right2=P2^2; sbit pleft=P2^7; 11 sbit pright=P2^6; sbit en1=P1^0; sbit en2=P1^1; //循迹口 三个红外传感器 sbit left_red=P1^2; //白线位置 sbit right_red=P1^4; //白线位置 void delay(uint z) { uchar i; while(z--) {for(i=0;i<121;i++);} } void init() { left_red=0; //白线位置 right_red=0; TMOD=0X01; TH0=(65536-100)/256; TL0=(65536-100)%256; EA=1; ET0=1; TR0=1; en1=1; 12 en2=1; } void time0(void)interrupt 1 { i++; j++; if(i<=pro_right) {en1=1;} else en1=0; if(i==40) {en1=~en1;i=0;} if(j<=pro_left) {en2=1;} else en2=0; if(j==40) {en2=~en2;j=0;} TH0=(65536-100)/256; TL0=(65536-100)%256; } void straight() //走直线函数 { pro_right=20; pro_left=20; left1=1; left2=0; right1=1; right2=0; } void turn_left() //左转弯函数13 { pro_right=0; pro_left=20; left1=1; left2=0; right1=1; right2=0; } void turn_right() //右转弯函数 { pro_right=40; pro_left=0; left1=1; left2=0; right1=1; right2=0; } void turn_back() //后退(反转)函数{ left1=0; left2=1; right1=0; right2=1; pro_right=20; pro_left=20; 14 } void infrared() //循迹和避障 { uchar flag; if((pright==1)||(pleft==1)) { if((left_red==1)&(right_red==0)) {flag=1;} else if((right_red==1)&(left_red==0)) {flag=2;} else if((left_red==0)&(right_red==0)) {flag=3;} else {flag=0;} } else if((pright==0)&(pleft==1)) {flag=4;} else if((pright==1)&(pleft==0)) {flag=5;} else if((pright==0)&(pleft==0)) {flag=6;} else {flag=0;} switch (flag) 15 { case 0:straight(); break; case 1:turn_right(); delay(1000); break; case 2:turn_left(); delay(1000); break; case 3:straight(); delay(1000); break; case 4:turn_back(); delay(1000); turn_left(); delay(1000); break; case 5:turn_back(); delay(1000); turn_right(); delay(1000); break; case 6:turn_back(); delay(1000); turn_left(); 16 delay(1000); break; default: break; } } main () { init(); delay(1); while(1) { infrared(); } } 17 The design of smart car designed based on the STCC52 xialongwei Directed By JiangLifei Abstract This article introduced a smart car designed based on the STCC52. The car is capable of identifying black and obstacle, so it can run in a fixed area and automatic obstacle avoidance. The car take STCC52 as it’s controller; the six infrared sensors and their processing modules make it can identify the black line and obstacle; The car can change it’s direction and speed by the single-chip generated PWM wave and L298N. Keywords STCC52 Single chip microcomputer Infrared sensor PWM L298N. 18 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务