1 / 11
文档名称:

【毕业设计】基于51单片机的智能小车的设计与开发(整理版).doc

格式:doc   页数:11
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

【毕业设计】基于51单片机的智能小车的设计与开发(整理版).doc

上传人:3099984911 2015/2/28 文件大小:0 KB

下载得到文件列表

【毕业设计】基于51单片机的智能小车的设计与开发(整理版).doc

文档介绍

文档介绍:基于单片机控制的智能小车
设计背景
随着人们物质生活水平的提高,汽车已经越来越普及,但交通事故也随之增加,危及了人们的财产及生命安全。与此同时,随着科学技术的发展,探险、排爆等危险场合工作的机器人,以及自动化生产中运输小车的应用也日益广泛,汽车已经不再只是拥有四个轮子的交通工具,人们更加希望汽车作为日常生活以及工作范围的一种延伸。所以智能小车的设计与发展是必须的,智能小车是一个集坏境感知、规划决策等功能于一体的综合系统,它集中的运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体。
二、设计总框图
八路红外传感器
STC89C51单片机系统
L298N电机控制模块
电机
三、硬件电路设计
总体设计框图
1、L7805稳压器
L7805是我们最常用到的稳压芯片,本设计中采用7节5号干电池进行供电,电容C2、C3对输入到L7805前的直流电进行滤波,之后输入到L7805,经其稳压后输出5V直流电,给单片机供电。
稳压电路
2、八路红外传感器模块
红外线在不同颜色的物体表面具有不同的反射性质,所以我们可以利用红外对管对黑线及障碍物进行检测;此模块拥有两个LM324放大器和两个74HC14D,当红外线在不同颜色物体上的反射光被接收管接收到时会产生不同幅度的电压,经由模块的LM324芯片进行信号放大,之后输入到74HC14D进行高低电平的转换。小车在行驶过程中红外管不断地向外发射红外线,当红外光遇到白色地面时发生漫发射,反射光被接收管接收,模块输出低电平;如果遇到黑线则红外线被吸收,接收管接收不到信号,此时模块输出高电平;单片机通过程序控制不断检测模块输出引脚的高低电平从而实现信号的检测。小车的避障原理与此类似,当红外管不断发出红外线,而在距小车前方6cm无障碍物时,红外线不发生反射,此时接收管接收不到反射光,模块输出低电平;当小车前方6cm内有障碍物时,红外管发出的红外线将会被反射回来,接收管接受到反射光,模块输出高电平。
TTL转换电路
3、L298N电机驱动模块
该模块采用了L298N双H桥直流电机驱动芯片,驱动电机部分VIN采用+9V直流电源供电,同时模块上安装了L78M05稳压器对vin的输入进行稳压,采用+5V供电,小车运行时通过单片机向该模块1、2、3、4脚输入控制信息来控制小车电机的转速。
电机控制电路
4、L298N简介
L298N内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。输出电压最高可达50V,可以直接通过电源来调节输出电压;用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,~7 V电压。4脚VS接电源电压,VS电压范围VIH为+~46 V。输出电流可达2 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机
。控制逻辑见表:
电机
旋转方式
控制端IN1
控制端IN2
控制端IN3
控制端IN4
输入PWM信号改变脉宽可调速
调速端A
调速端B
M1
正转
1
0
/
/
1
/
反转
0
1
/
/
1
/
停止
0
0
/
/
1
/
M2
正转
/
/
1
0
/
1
反转
/
/
0
1
/
1
停止
0
0
/
/
/
1
四、程序流程图
开始
设置初始值
启动电机
Y
避障
检测到障碍物?
N
N
检测到黑线?
Y
避线
停止
五、程序设计
#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;
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