51单片机学习之智能小车(1)

说明

这是我学习一段时间51之后自己动手做的,比较简陋。此篇作为总结和复习,如有问题,请评论指出。
下篇:51单片机学习之智能小车(2)

小车概述(功能,所用模块)

(1)蓝牙控制
通过手机上蓝牙串口调试助手,实现无线控制小车运动与用户信息交流。
所用模块: BT-06蓝牙模块
(2)红外循迹
通过红外循迹模块,检测轨迹,自动按预定轨迹运动。
所用模块:红外循迹模块
(3)超声波避障
通过超声波模块检测障碍物的距离,实现自动避障。

功能的实现

这里简单说明功能实现的原理,以及各个模块的使用。
1、基础功能的实现:
1.小车电机:
采用TT马达,工作电压为3-6V,6V供电时,空载输出电流为230ma。(这里数据对后来调试有较大的影响)

图示为电机实物图:

51单片机学习之智能小车(1)_第1张图片
2.小车电机的驱动:
单片机IO口的驱动能力很弱,无法直接驱动电机,所以需要驱动模块驱动电机转动。

采用驱动模块为L298nmini,有四个输入引脚可独立驱动两个电机,相较于普通版本的L298n,少了使能端口,对电压的要求也降低了,方便了对电机电压的控制,使用方法大体相同。按照真值表通过PWM调速原理(可参考:PWM波调速原理及循迹小车调速方法)控制电机的转速,以及对电机的正反转进行控制,可使一侧电机反转,一侧电机正转,在原地改变方向,实现转弯。

图示为模块实物图:在这里插入图片描述
此模块可工作电压范围为2V~10V,单路工作电流为1.5A,峰值电流可达2.5A,待机电流小于0.1uA。双H桥,可控制两个或四个电机(四个电机为两两并联)。在本项目中通过开发板集成的DC电源5V供电。

引脚定义,变量以及函数声明:
51单片机学习之智能小车(1)_第2张图片

2、主要功能实现

1.蓝牙控制:

蓝牙模块BT-06,遵循蓝牙v3.0协议,支持多种波特率,收发灵敏,体积小,功耗低,对电压要求较低,等多种优点。(选择HC-05模块的比较多,用法大致相同,价钱贵了大概六块钱儿)

图示为模块实物图:
在这里插入图片描述
在这里插入图片描述

蓝牙模块的RXD引脚连接单片机TXD引脚(P3.1),TXD引脚连接单片机RXD引脚(P3.0)。VCC
可接3.3V或5V。与手机APP配合使用。出厂无配置的情况下模块的名字为BT-04-A,地址以及波特率也是可以自己配置的(我用的是默认,可恶的AT模式无论如何都进不去),模块上电后,LED指示灯连续闪烁代表未连接设备,长亮代表已成功连接设备,无线连接的距离大概在10到15米。

蓝牙模块需要与单片机波特率相同,蓝牙模块在无设置的默认情况下波特率为9600bps。因此单片机的波特率也要设置为同样的波特率。通常单片机的波特率由T1定时器产生,因超声波避障功能占用了T0、T1定时器,所以改为52单片机的T2定时器。(这里不再详细说明T2定时器的使用,查看数据手册或者具体参考:STC89C52单片机定时器2详细整理)

通过赋值T2CON寄存器,设置T2定时器为16位波特率产生器(自动重装),替代T1定时器产生波特率。通常T2MOD不需定义,在单片机头文件中未定义。将初值存放在RCAP2H , RCAP2L。
图示为T2CON:
在这里插入图片描述

通过单片机串口中断的方法接收小车与手机之间通信的数据,通过查询方式判断接收到的数据,控制电机驱动的输出状态,达到控制小车的运动状态的目的。
以下为相关变量与函数的声明:

51单片机学习之智能小车(1)_第3张图片

2.红外循迹

小车采用四路传感器,每一路单独工作,由驱动板统一供3.3电源,输出口连接单片IO口。经传感器采集地面轨迹数据后,由单片机判断是否在轨迹上。

当轨迹为黑线,吸收红外线能力更强,传感器接收不到或接收很少的反射的红外线,将向单片机返回高电平,反之,返回高电平。单片机的IO口应设置为准输入/输出模式(具体可查看数据手册),在每一次判断前,首先将IO口拉高初始化,才能正确判断传感器状态。(在调试过程中问题较大,在后面会说明)

图示为模块实物图(包括传感器以及驱动板):
51单片机学习之智能小车(1)_第4张图片
传感器根据反射距离,返回连续电压值,再通过驱动板上的电压比较器才可输出高低电平。驱动板统一供电可减少电源的占用。

模块引脚定义,此模块与超声波模块结合使用:

在这里插入图片描述

单路循迹检测范围,0~10cm,检测角度35°,响应时间极短,约为几ms。在此模式下,小车转弯速度为最大速度的80%。

3.超声波避障

小车采用HC-SR04超声波测距模块,当单片机向模块控制端口(Trlg)发送超过10us的高电平时,模块就会自动发射8个40kHz的超声波信号,从障碍物反弹回的超声波会被接收端(Echo)接收,模块自动产生一个高电平信号,其高电平信号持续时间就为,超声波发射到接收所用的时间,通过公式:S = 340m/s(声速) * T /2,就可计算出到障碍物的距离。

图示为模块实物图:51单片机学习之智能小车(1)_第5张图片

利用51单片机片内定时器,周期性发射超声波信号与计时超声波模块在接收到回波后的高电平时间,相比利用软件延时的方法,更为精准灵活。

此模块配合红外循迹模块,当小车在轨迹运行时,小车自动判断前方障碍物的距离,若小于50cm则小车原地停止,等待障碍物(例如:人,其他小车等)经过。当判断距离大于50cm时,继续沿轨迹前进。
模块引脚定义,与变量,函数的声明:
51单片机学习之智能小车(1)_第6张图片

超声波模块每30ms启动一次发送8个40kHz的超声波,最大检测距离为510cm,电机响应时间时间很短约为几十ms。

结语

代码部分在下篇会介绍。如有不足或者错误,还请指出。

你可能感兴趣的:(单片机,单片机)