51单片机红外超声波避障小车

红外超声波避障小车 

功能简介:

实现小车PWM调速。 通过红外传感器感知黑线,循迹前进,不断的调整方向。 通过超声波传感器,能识别前方的障碍物并做出判断。通过液晶显示1602A,显示距离和故障信息。

3b6c9caf3b5e4656bccac87d40f9fb05.png

1)系统设计: 

 

小车采用后轮驱动,左右后轮各用一个直流减速电机驱动,通过调制后面两个轮子的转速从而达到控制转向的目的在车体前部分别装有左中右三或者两个红外反射式传感器,当小车左边的传感器检测到黑线时,说明小车车头向右边偏移,这时主控芯片控制左轮电机减速,车体向左边修正,同理当小车的右边传感器检测到黑线时,主控芯片控制右轮电机减速,车体向右边修正当黑线在车体的中间,中间的传感器一直检测到黑线,这样小车就会沿着黑线一直行走。当小车遇到前方有障碍物时,立马停止前进。 

 2)硬件设计: 

 

 2.1主控芯片的选择  340668d5d1944bf689b6cb1b5c5e8785.png

主控芯片选择为STC89C52,STC89C52是一种低功耗高性能8位微控制器,具有8K的系统可编程Flash存储器,使用高密度非易失性存储器技术制造,与80C51产品指令和引脚完全兼容,片上Flash允许程序存储器在系统可编程,亦适于常规编程器在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活超有效的解决方案。 

 

  2.2电机驱动模块的设计    

电机采用直流减速电机,直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。我们选择了后面两轮驱动,前面万向轮转向的小车,即后左右轮分别用两个转速和力矩基本完全相同的直流减速电机进行驱动,车头前部装一个万向轮这样,当我们通过I/O口控制两个直流减速电机的转速和转向时就可以实现小车的左转右转和直行

 

L298驱动产品简介:

电机驱动模块供电电压2V~10V,可同时驱动两个直流电机或者1个4线2相式步进电机,可实现正反转和调速的功能,每路电流能到1.5A持续电流,峰值电流可达2.5A,有热保护并且能够自动恢复。

 

产品亮点:

1. 采用进口原装专业电机驱动芯片,内置低导通内阻MOS开关管,发热极小,无需散热片,体积小,省电,是您电池供电的理想选择

2. 双路1.5A*2,峰值电流可到2.5A, 内置过热保护电路,不用怕电机堵转烧坏,温度下降后自动恢复。(目前市面上的智能小车电压和电流都在此范围内)

3. 体积小,质量轻,0待机电流,是您模型车载的理想选择

直流电机驱动逻辑真值表:

INx接单片机IO或者其他信号源,MOTOR-A和MOTOR-B端接电机

 

6bba7a7e1b67b06ececdf02386d39936.jpeg

产品参数:

1.双路H桥电机驱动,可以同时驱动两路直流电机或者1个4线两相式步进电机;

2.模块供电电压2V-10V;

3.信号端输入电压1.8-7V;

4.单路工作电流1.5A,峰值电流可达2.5A,低待机电流 (小于 0.1uA);

5.内置防共态导通电路,输入端悬空时,电机不会误动作;

6.内置带迟滞效应的过热保护电路 (TSD),无需担心电机堵转;

 

  3.3寻迹模块设计 

寻迹模块我们可以用光敏电阻组成,光敏电阻的阻值可以跟随周围环境光线的变化而变化当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱,因此当光敏电阻在白线和黑线上方时,阻值会发生明显的变化将阻值的变化值经过比较器就可以输出高低电平,并在程序中进行处理,实现小车行驶方向的控制。

循迹模块采用两只红外对管,分别置于小车车身前轨道的两侧,根据两只光电开关接受到白线与黑线的情况来控制小车转向来调整车向,测试表明,只要合理安装好两只光电开关的位置就可以很好的实现循迹的功能。 

红外对管产品介绍:

一、模块描述

 该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

         

二、模块参数说明

1、当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT端口持续输出低电平信号,该模块检测距离2~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。

2、传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。

3、传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器;连接方式:VCC-VCC;GND-GND;OUT-IO

4、比较器采用LM393,工作稳定;

 

 3.4超声波避障模块设计

       采用超声波模块 HC-SR04P。一款宽电压工作的超声波测距模块。

低至3V的最低工作电压,使其与3.3V供电的MCU可以直接连接。

b8a9eca50bcf4a9c9c1bbbbac5ebfb9b.png

 

代码

本程序使用11.0592M晶振,实测使用11.0592M

**********************************************************************/

#include <reg51.h>

#include <intrins.h>  //这个头文件是这个方法的核心,它包含了逐步移位函数功能

                    //即程序中的_crol_(P1,y)

#define uint unsigned int

 

/*小车变量定义*/

uint Timer1Counter;

uint PWMADuty = 0;

uint PWMBDuty = 0;

uint MotorRunBackFlag = 0;

static uint MotorStartFlag = 1;

sbit MotorAOutPut1=P0^0;

sbit MotorAOutPut2=P0^1;

sbit MotorBOutPut1=P0^2;

sbit MotorBOutPut2=P0^3;

sbit LeftEye = P1^7;

sbit RightEye = P1^6;

 

/*小车函数申明*/

void MotorDuty(uint dutyA, uint dutyB);

void MotorStartRun(void);

void MotorFullSpeedRun(void);

void MotorStop(void);

void MotorTurnLeft(void);

void MotorTurnRight(void);

void MotorRunBack(void);

 

void delay(unsigned int i)    //延时程序

{

    unsigned int j;

    unsigned char k;

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

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

}

/*超声波管教定义*/

sbit  RX  = P3^2;

sbit  TX  = P3^3;

uint  ChaoShengTimes = 0;

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道至简研究室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值