【51单片机实例】智能小车(一)--------小车的前进、后退和停止
时间:2023-07-08 11:07:00
51智能小车系列
智能小车(二)-------- 红外遥控调速
智能车(三)-------- 汽车的红外跟踪
文章目录
- 前言
- 一、硬件选择
-
- 1.1 小车底盘
- 1.2 电机
- 1.3 51单片机最小系统板
- 1.4 L298N双路电机驱动模块
- 1.5 电源
- 1.6 杜邦线
- 二、硬件连接
- 三、编程
- 总结
前言
本文主要讲的是如何让基于51单片机的智能车移动。智能车有很多项目,比如跟踪避障、蓝牙遥控、视觉控制等。我会一步一步带你进入单片机项目。这也是我第一次写文章。可能有很多缺点。请给我更多的建议。
一、硬件选择
1.1 小车底盘
你可以根据自己的意愿选择底盘的形状。我在这里选择的是4WD智能车底盘组装方便,使用方便。
1.2 电机
我使用工作电压3-6v直流减速电机TT电机(如果要两轮(四轮)驱动,需要安装两个(四个)直流减速电机,电机接线需要自行焊接)。
1.3 51单片机最小系统板
对于最小系统板,没有特殊要求。只需使用您熟悉的芯片。我在这里使用的是STC89C52芯片。
1.4 L298N双路电机驱动模块
L298N,它是一种高压电机驱动器,可由直流电机和步进电机驱动。一个驱动芯片可以同时控制两个直流减速电机的不同动作V到46V在电压范围内,提供2安培电流,具有过热自断和反馈检测功能,可通过主控芯片直接控制电机I/O设置输入控制电平,可为电机进行正反转驱动,操作简单,稳定性好,可满足直流电机的大电流驱动条件。
L298N它是一种常用的直流电机驱动模块,也更适合新手。A、B可以用跳线帽盖住,下图中已经标注了每个引脚的具体使用情况,基本属性也可以参考下表。
1.5 电源
我用的是18650锂电池3.7V移动电源2500mAh可充电电池,当然也需要组合相应的电池组,具体也可以根据自己的需要进行选择,选择时要注意电池的电压和电容。
1.6 杜邦线
分为公对公、公对母、母对母三种线形,主要用于电路实验,可与插针连接,具有很好的可靠性,也可以省略焊接过程,快速进入电路实验,广泛应用于电子产品,是必要的辅助部件。
二、硬件连接
这里我用的是双轮驱动,所以硬件部分是:两个直流减速电机,三节三节.7v电池和电池组,51最小系统板(由于设备缺陷,我使用它STC89C52开发板11.0592MHz)、汽车底板,四个车轮,一个L298N双路电机驱动模块、多个铜柱螺钉、杜邦线等。
例子:
三、编程
我在这里使用双轮驱动,只有两个电机M1、M2.驱动汽车IN1~IN在4的逻辑输入中,由IN1、IN2控制电机M1;IN3、IN4控制 电机M2.改变电机的电平变化,使电机正反转。如果没有电平变化,电机将停止旋转,例如IN输入高电平1,IN2输入低电平0,对应电机M1正转;IN输入低电平0,IN输入高电平1,对应电机M1反转,IN1和IN2输入低电平0或高电平1,对应电机M1停止转动,IN3和IN4同理可得。
具体代码如下(示例):
#include sbit IN1=P2^0; //使IN1~IN四端通过杜邦线接收不同的P口,我在这里接收P2 sbit IN2=P2^1; //其中IN1、IN2控制电机M1;IN3、IN4控制电机M2 sbit IN3=P2^2; sbit IN4=P2^3; void Delay1000ms() ///延迟函数,延迟函数为1s {
//@11.0592MHz unsigned char i, j, k; i = 43; j = 6; k = 203; do {
do {
while (--k);
} while (--j);
} while (--i);
}
int main()
{
while(1)
{
//未调制pwm前小车速度可能比较快
IN1=1;IN2=0; //两电机正转,小车前进
IN3=1;IN4=0;
Delay1000ms(); //延迟1s
IN1=0;IN2=0; //两电机停转,小车不动
IN3=1;IN4=1;
Delay1000ms(); //延迟1s
IN1=0;IN2=1; //两电机反转,小车后退
IN3=0;IN4=1;
Delay1000ms(); //延迟1s
}
return 0;
}
总结
本节是以STC89C52单片机为CPU,通过一些外围电路和软件编程实现小车前进、后退、停止的功能。整个设计过程中最大的特点是利用简单的原理图将TT电机、L298N驱动模块、51单片机这三个模块有效的结合起来,利用经典的H桥路作为小车前进、后退和停止的编程理论基础,提高了效率,降低了编程的复杂度,具有很强的研究的意义,智能化的发展促使了智能小车往功能更加强大的方向发展。