首页 > 编程知识 正文

51单片机驱动小车程序(基于单片机的智能小车设计)

时间:2023-05-06 16:30:01 阅读:75240 作者:4570

摘要:智能跟踪小车是一种在控制系统的作用下,能准确地按既定路线自动行驶的系统。 本设计采用STC89C52单片机作为主要控制芯片,结合直流电机、传感器、电源电路及其他外围电路,设计实现小车沿黑色轨迹行走的智能跟踪小车,其中小车跟踪

关键词:智能跟踪小车直流电机; 红外线光电传感器

中图分类编号: TP18文献识别码: a文章编号: 1009-3044(2011 ) 31-00000-00

随着计算机和信息技术的迅速发展智能技术的开发越来越受到广泛的重视其开发速度也在迅速增加由于智能化程度越来越高,其应用范围也在不断扩大。 同时,机器人技术发展势头迅猛,其应用领域众多,智能跟踪小车是机器人技术与智能控制技术相结合的应用典范。 一般来说,智能跟踪小车是智能机器人的另一种形式,由于机器人的双脚被车轮取代,在机械设计和电路上比智能机器人更简单。 另外,其控制系统也比智能机器人简单,但对行驶速度和行驶方向的配合有严格的要求。 首先通过传感器获取目标道路信息,结合智能车的当前行驶状态智能决策,调整其行驶方向和行驶速度,准确快速跟踪道路本文介绍了一种以STC89C52单片机为控制核心的智能跟踪小车的设计,该智能小车自动实现黑色

1介绍智能跟踪小车整体硬件结构设计及工作原理

1.1智能跟踪小车整体硬件结构设计

在本设计中,智能跟踪小车由主控制模块、跟踪模块、电机驱动模块、电源模块和其他外围电路组成,其整体硬件结构框图如图1所示。

图1智能跟踪购物车的整体硬件配置图

本设计采用STC89C52为主模块、模块化设计方法,红外光电传感器为跟踪模块,采用L293D芯片控制输出直接驱动直流电机作为电机驱动模块。 电源模块由4节1.5V电池供电,经过L7805稳压模块后,输出电压稳定在5V,为各模块供电。

1.2智能小车工作原理介绍

在本设计中,跟踪是指小车在白色地板上沿着宽2cm的黑线行走。 红外线从红外线传感器的发光管发出,由接收管接收。 同时,接收到的物理量被转换为电信号,由信号放大电路处理,从单片机的P0、P1、P2端口输入,处理后的信号从P20、P21、P22、P23、P24、P25端口输入到电机驱动电路跟踪时,由于白色地板和黑线的红外线反射系数不同,所以可以根据晶体管接收的红外线的强弱来决定购物车的行驶。 本设计采用3对红外传感器,“一字型”[1]分布。 中间传感器无法接收反射的红外线,但如果左右传感器能够接收反射的红外线,则购物车会直行,如果左侧和中央(或仅左侧)传感器无法接收反射的红外线,而只有右侧传感器能够接收,则表示购物车向右偏离了黑色轨道如果中央和右侧(或仅右侧)的传感器无法接收反射回来的红外线,而只有左侧的传感器能够接收,则表示购物车从黑色轨道向左偏移,购物车向右旋转可以实现自动跟踪。 本设计中红外传感器与地面垂直距离8cm,无强烈阳光干扰或有荧光灯的房间,完全能够满足探测要求,具有很好的可靠性和干扰能力[ 2,3 ]。

2介绍用于智能跟踪购物车的芯片设备

综上所述,本设计分为主控制模块、跟踪模块、电机驱动模块和电源模块等模块。 简要说明主要模块的工作原理。

2.1主模块STC89C52概述

这个模块是整个设计的大脑。 的输出端SEN1、SEN2、SEN3将信号通过P1.0、P1.1、P1.2端口输入单片机,经过处理后,从P20、P21、P22、P23、P24、P25端口输入到L293D的end

图2 STC89C52单片机引脚图

在本设计中,STC89C52芯片的40针VCC连接5V电源,20针GND接地。 18针XTAL1和19针XTAL2连接到频率为11.0592MHZ的石英振动,并连接有20PF的电容器。 在9针RST上外置复位电路,为单片机提供上电复位。 作为P3端口的第二个功能,10针P3.0和11针P3.1用作单片机的通信端口,即串行输入端口和串行输出端口,是下载程序所需的。 1针P1.2、2针P1.2、3针P1.2分别与3对红外线传感器的输出端子SEN1、SEN2、SEN3连接,完成电信号的输入。 1引脚P2.5、22引脚P2.5、23引脚P2.5、24引脚P2.5、25引脚P2.5、26引脚P2.5分别与L293D芯片的EN1、EN2、IN2、IN3、IN4引脚连接,实现单片机

2.2 TCRT5000红外光电传感器模块介绍

本设计采用了3对TCRT5000型号的红外线光电传感器。 这三对传感器均匀地“一字型”分布。 该方法检测一致简单,程序控制算法简单,稳定小车控制。 但这种均匀的一字型分布不利于曲线信号采集的准确性。 图3是一对传感器及其外围电路的原理图。

图3TCRT5000传感

器电路图

TCRT5000型红外光电传感器由一个高发射功率的红外光电二极管和一个接收红外线的高度灵敏的光电三极管(NPN型)组成。其中滑动变阻器R3是一个蓝白电位器,通过调整R3的阻值从而达到调整光敏三极管对反射光的灵敏度。

红外发射二极管不断的发射出红外线。当反射回来的红外线强度足够大时,光敏三极管饱和,则该模块输出为高电平;当反射回来的红外线强度不够大或者没有反射回来红外线时,光敏三极管一直处于关断状态,则该模块的输出为低电平。光敏三极管除了具有将光信号转换成电信号的功能外,还具有对电信号放大的功能。

2.3 电信号放大模块简介

传感器所产生的电信号较为微弱,不能作为单片机的输入,因此要接一个放大电路进行处理。本模块采用SN74HC04N芯片及其外围电路用作放大电路。

SN74HC04N芯片的引脚图如图4所示。

图4 SN74HC04N引脚图

首先,SN74HC04N芯片内部有六组相同的反相器。因此,当三组红外传感器产生的电信号传给SN74HC04N后,会变成与其相反的电平。本设计中,引脚1, 3, 5为红外传感器输入SN74HC04N芯片的接口,引脚2, 4, 6为经SN74HC04N处理后的输出口,对应图2中SEN1,SEN2,SEN3这三个接口。另外,74HC04N内部有6个施密特触发器电路。施密特触发器的重要特点是能够把缓慢变化的输入信号整形成边沿陡峭的矩形脉冲。同时,施密特触发器还可以利用其回差电压来提高电路的抗干扰能力。

2.4 电机驱动模块简介

图5电机驱动模块图

本模块选用L293D芯片进行控制。该芯片驱动方式比较简单,直接驱动两个直流电机。控制每一路电机,都有三个信号,分别为EN1,IN1,IN2和EN2,IN3, IN4。这六个引脚分别同STC89C52单片机的P2.0~P2.5口相连。这里芯片的工作电压为+5V。本设计中,采用两个输出控制一个电机的方式。即OUT1和OUT2控制电机1,OUT3和OUT4控制电机2。上图中的D1~D8为箝位二极管。电机在停止的瞬间会产生一个逆向的电流,切割磁场后会产生一个逆向的电动势。设置这些箝位二极管,就是为了防止逆电动势烧坏芯片,从而它们起到保护作用。

3 智能循迹小车的软件设计

单片机完成对智能小车的自动控制功能,主要是执行相应软件来实现。本设计中,利用结构化设计方法,采用C语言实现相应功能软件。下面对程序中的主要几个功能模块进行说明。

3.1 主程序函数

void main(void)

{

delay(10);

while(1)

{

switch( sensor_inp() )

{

case 0x02:forward(); break;

case 0x04: turn_left(); break;

case 0x01: turn_right(); break;

default:

break;

}

}

}

程序开始,进入主函数。调用延迟函数delay(),用以使系统达到稳定状态。在KEIL软件下进行断点运行,测得这里的delay(10)在11.0592MHz的晶振下可以延迟100ms。之后进入while循环,条件始终为真,表示小车将一直运行while函数中的语句,直至外界迫使小车停下。在switch分支语句中,case 0x02将使程序跳转至forward();,其中0x02即为二进制的00000010,这表示三个传感器中,只有中间的传感器输出的是高电平,左右两个传感器都输出低电平,故小车沿直线行走。case 0x04将使程序跳转至turn_left();,其中0x04即为二进制的00000100,这表示三个传感器中,只有左边的传感器输出的是高电平,中间和右边的传感器输出的均为低电平,故小车左拐。case 0x01将使程序跳转至turn_right();,其中0x01即为二进制的00000001,这表示三个传感器中,只有右边的传感器输出的是高电平,左边和中间的传感器均输出低电平,故小车右拐。

3.2 小车前进子程序模块

void forward()

{

IN1=1;

IN2=0;

IN3=1;

IN4=0;

EN1=1;

EN2=1;

}

该程序中,L293D芯片的两个使能端EN1和EN2一直保持高电平。IN1=1,IN2=0说明右边电机向前转动;IN3=1,IN4=0说明左边电机也向前转动。故两个电机同时向前转动,从而驱动小车向前行进。

3.3 小车左转子程序模块

void turn_right()

{

IN1=1;

IN2=0;

IN3=0;

IN4=0;

EN1=1;

EN2=1;

}

该程序中,使能端EN1和EN2仍然保持高电平。IN1=0,IN2=0,表明右边电机向前转动;而IN3=0,IN4=0,说明左边电机不动。左轮不转右轮转,这样就实现了小车向左转

3.4 小车右转子程序模块

void turn_left()

{

IN1=0;

IN2=0;

IN3=1;

IN4=0;

EN1=1;

EN2=1;

}

该程序中,使能端EN1和EN2仍然保持高电平。IN1=0,IN2=0表明右边电机停止不转动;IN3=1,IN4=0说明左边电机向前转动。右轮不转左轮转,这样就实现了小车右转。

3.5 延时子程序模块

void delay(int n)

{

unsigned char i,j,k;

for(i=n;i>0;i--)

for(j=50;j>0;j--)

for(k=100;k>0;k--);

}

该延时子程序主要是让系统初始化到最佳状态。经由KEIL软件的断点测试,在晶振频率为11.0592MHz时,当n = 10时,可延时100ms。

4 总结

本文提出了一种基于STC89C52单片机为控制核心的智能循迹小车的设计方案,该方案以红外传感器作为路径信息采集手段,以L293D芯片来控制并驱动电机运行,最终实现了小车在固定轨迹上自动循迹运行。该方案总体来说,比较简单,成本低且易于实现,但也存在缺陷,如传感器的“一字型”均匀布局使得小车在弯道行驶时可能会出现误差,另外,小车循迹过程中会出现“蛇形摆动”问题,这些问题都还有待于改进。

参考文献:

[1] 周斌,gddhxc.智能车光电传感器布局对路径识别的影响研究[J].产品世界,2006(9):139-140.

[2] ykdmf,殷战国.红外反射式传感器在自主导航小车中的应用[J].中国测试技术,2004(6):21-23.

[3] 碧蓝的嚓茶.智能小车的多传感器数据融合[J].现代电子技术,2005(6):3-6.

[4] 爱笑的网络.基于红外光电传感器的智能车自动循迹系统的设计[J].光电技术应用,2009(2):1-5.

[5] mldsc.基于HCS12的小车智能控制系统设计[J].单片机与嵌入式系统应用,2007(3):51-53,57.

收稿日期:2011-08-17

基金项目:陕西理工学院教学改革项目(XJG1135)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。