摘要:智能循迹小车是一种在控制系统的作用下,可以准确沿既定路线自动行驶的系统。本设计中,采用STC89C52单片机为主控制芯片,结合直流电机、传感器、电源电路及其他外围电路,设计实现了小车沿黑色轨迹行走的智能循迹小车,其中小车循迹功能由红外式光电传感器完成,小车的驱动功能由L293D驱动电路完成。

关键词:智能循迹小车;直流电机;红外光电传感器

中图分类号: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口输出给电机驱动电路的L293D芯片,从而达到驱动小车行走和循迹的目的。循迹时,由于红外线在白色地板和黑线上的反射系数不同,所以可以根据三极管接收红外线的强弱来决定小车的走向。本设计采用三对红外传感器,采用“一字型”[1]分布。中间传感器接收不到反射回来的红外线,而左右两个传感器能接收到反射回来的红外线,则小车直线前进;当左边和中间(或只有左边)的传感器接收不到反射回来的红外线,只有右边传感器能接收到时,说明小车向右偏离黑色轨道,则小车向左转动;同理,当中间和右边(或只有右边)的传感器接收不到反射回来的红外线,只有左边传感器能接收到时,说明小车向左偏离黑色轨道,则小车向右转动,从而实现自动循迹。本设计中红外传感器离地面垂直距离为8cm,能在没有强烈日光干扰或在有日光灯的房间里,完全能满足探测要求,具有很好的可靠性与抗干扰能力[2,3]。

2 智能循迹小车所用芯片器件简介

上文已经介绍,本设计一共分为主控制模块、循迹模块、电机驱动模块和电源模块等模块。下面对主要模块的工作原理作简单说明。

2.1 主控模块STC89C52简介

该模块是整个设计的大脑。传感器的输出端SEN1,SEN2,SEN3将信号通过P1.0,P1.1,P1.2口输入单片机,经过处理后,由P20, P21,P22, P23,P24,P25口输出给L293D的EN1, EN2, IN1, IN2, IN3, IN4引脚,从而完成对小车的控制。该模块的主要由STC89C52单片机及其外围电路组成,如图2所示。

图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.0,2引脚P1.1,3引脚P1.2分别和三对红外传感器的输出端SEN1,SEN2,SEN3相连,以完成电信号的输入。21引脚P2.0,22引脚P2.1,23引脚P2.2,24引脚P2.3,25引脚P2.4,26引脚P2.5分别和L293D芯片的EN1,EN2,IN1,IN2,IN3,IN4引脚相连,以完成将经过单片机处理过的信号输入给电机驱动电路。

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

本设计中,采用三对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] 周斌,李立国.智能车光电传感器布局对路径识别的影响研究[J].产品世界,2006(9):139-140.

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

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

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

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

收稿日期:2011-08-17

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

智能小车52单片机c语言,基于STC89C52单片机的智能循迹小车设计相关推荐

  1. 基于arduino的5路循迹小车(1)

    基于arduino的5路循迹小车(1) 初步小车运动 1.硬件选用 1.开发板使用arduino 2560 2.电机驱动板使用 大功率电机驱动板(PWM由两个端子控制) 3.电源12V锂电池 4.降压 ...

  2. 基于arduino的5路循迹小车(2)

    基于arduino的5路循迹小车(2) 小车5路红外循线 接第一篇链接 https://blog.csdn.net/weixin_45984029/article/details/103437347 ...

  3. 基于arduino的5路循迹小车(4)与舵机控制板的通信控制

    基于arduino的5路循迹小车(4) arduino与舵机控制板的通信控制 以及语音播报模块 接第一篇链接 https://blog.csdn.net/weixin_45984029/article ...

  4. 基于arduino的5路循迹小车(3)

    基于arduino的5路循迹小车(3) 使用红外模块的定位停车 以及超声波避障 接第一篇链接 https://blog.csdn.net/weixin_45984029/article/details ...

  5. 温度警报c语言,基于STC89C52单片机温度报警器.doc

    基于STC89C52单片机温度报警器 摘 要 温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快 ...

  6. 基于STM32开发板的循迹小车设计

    STM32的简单应用之循迹小车 前言 智能寻迹基于自动引导机器人系统,可以实现小车自动识别路线.智能寻迹小车运用传感器.单片机.电机驱动及自动控制等技术实现,管理时自动寻迹导航.该技术已经应用于无人驾 ...

  7. 基于STM32芯片的四驱循迹小车

    循迹小车包括三个基本模块: 1.宏定义模块 2.电机驱动模块 3.红外循迹模块 4.PWM调速模块 我将代码部分分为4个模块进行模块化编程:interface(各个引脚口的宏定义,方便记忆).moto ...

  8. 基于Arduino控制的网格循迹小车

    1.元器件选型 电子元器件清单 序号 标号 名称 规格 数量 1 / Arduino板 / 1 2 / 驱动模块 LM298N 1 3 / 巡线模块 5 机械零部件清单 序号 标号 名称 规格 数量 ...

  9. 89c51控制小车运行c语言,基于STC89C52单片机和STM32的智能小车控制系统

    摘要:针对智能车的控制系统, 选用STC89C52作为整个系统的主控芯片, 并进行硬件电路设计;以NREF24L01作为无线接收模块, 选取E18-D80NK-N红外光电传感器作为避障模块的核心器件; ...

  10. 万年历设计单片机c语言,基于51单片机的电子万年历的设计

    基于51单片机的电子万年历的设计(论文9400字) 功能要求 1. 万年历能用数码管显示阳历年.月.日.星期.[小]时.分.秒并设置指定时间的闹铃. 2. 数字式温度计要求测温范围-50~100°C, ...

最新文章

  1. 【南洋理工-CVPR2022】视觉语言模型的条件提示学习
  2. TikTok跨境出海:Tiktok怎么月入几十W?
  3. Output Operations on DStreams
  4. mysql 导入json_JsonToMysql(json导入mysql数据库工具)
  5. 关于@AspectJ的几个问题
  6. 三星Note 10 Pro曝光:搭载骁龙855处理器 后置四摄
  7. 【廖雪峰官方网站/Java教程】设计模式(一)
  8. 题目:[汪老师结婚]婚礼上的袭击
  9. selenium-远程调用
  10. Java1.5并发包下阻塞队列的生产者与消费者功能简单实现
  11. location 获取参数和锚_window.location获取url各项参数详解
  12. 良田高拍仪接口文档对接
  13. 复杂系统理论解释了Covid为何粉碎世界
  14. 飞腾D2000 偶尔识别不到网卡
  15. 程序人生hello-P2P
  16. Gradle安装部署与基础入门详解
  17. .xin是什么域名?
  18. html5服务器推送消息的各种解决办法,WEB服务器推送消息的各种解决办法
  19. c++ 入门(自学过程)
  20. AES原理的经典Flash

热门文章

  1. 2021年第四届安洵杯WriteUp(转)
  2. python爬虫下载付费音乐包有什么用_听歌音乐还要我付费?看我用Python批量下载!...
  3. CPDA数据分析师认证,大数据分析的综合型人才
  4. AD9361开发:接收与发送滤波器配置
  5. 【笔记17】使用 jad 工具把 java 的 class 文件转换为 java 文件;使用 luyten 把 java 的 jar 包转换为 java文件
  6. 花样机模板电脑CAD免费打板转格式软件PS300B使用步骤教程:日本兄弟牌Brother花样机通用CAD画图打板.dxf文件转.emb文件
  7. windows安装tomcat8
  8. 华为手机序列号前三位_华为手机序列号怎么查询?
  9. 龙门上下料样本程序,四轴。用台达AS228T和台达触摸屏编写
  10. 原生WebView长截图 和 Tencent x5webview截长图