本项目主要有三个模块包括信号检测模块、主控模块、电机驱动模块。信号检测模块采用光电传感器,用来对黑线进行检测。主控电路采用STM32F103C8T6单片机为控制芯片。电机驱动模块采用意法半导体的L298N专用电机驱动芯片,使用OLED显示行驶的路程和速度,单片机控制与传统分立元件电路相比,使整个系统有很好的稳定性。信号检测模块将采集到的路况信号传入STM32F103C8T6单片机,经单片机处理过后对L298N发出指令进行相应的调整。小车速度由单片机输出的PWM波控制。控制电动小车的速度及转向,从而实现自动循迹的功能。
一、总体设计
基于STM32平台实现智能循迹小车系统,含以下功能:
1、主要围绕STM32F103RBT6开展系统的控制实现设计;
2、采用红外对管传感器,自动检测循迹路线并反馈给主控中心;
3、在OLED屏上显示实时路程、实时速度;
4、通过红外发射按键可控制小车前后前进与左右转弯;
5、采用PWM方式控制电机的供电模式,当偏离路线差值较大时,通过调整左右电机使用 PWM 控制小车进 行差速转弯,当小车偏向左边时降低右边小车车轮达到右转,当小车偏向右边时降低左边小车车轮达到左转。
二、硬件电路
(1)stm32最小系统
为了能够实现对数据进行高速准确的处理,本系统采用STM32F103C8T6作为主控核心。
(2)循迹检测模块
TCRT5000传感器的红外发射二极管不断发射红外线。
当发射出的红外线没有被反射回来或被反射回来但强度不够大时(即检测到黑线),红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;
被检测物体出现在检测范围内时红外线被反射回来且强度足够大(即检测到白线),红外接收管饱和,此时模块的输出端为低电平,指示二极管被点亮。
(3)电机驱动模块
由于STM32管脚直接输出的功率太小,系统若要控制电机使小车转弯和执行,就需要采用双路大电流3AL298N 电机驱动模块作为电机驱动电路。
L298N是一种电压很高、电流很大的电机驱动芯片,逻辑电路电平支持常规的3V至5.5V。它的工作时的操作电压最高的时候可达到46V;输出的电流最高的时候可达到3A;在控制端输入PWM斩波信号能够进行调速;左右输出回路均具备使能,正转,反转及停止状态能独立控制,具有灵活的电源配置,支持3V~5.5V逻辑电路电平。
L298N模块信号示意图
上图中P6,P3为模块控制端,分别控制P5,P4两个输出端的信号。IN为逻辑控制信号,EN是使能信号。P1,P2为电源控制端子,P2为电源接入端,其中VPOWER及GND提供P4,P5输出电源,VIN提供板上LDO(三端稳压器)电源,如使用板上LDO,需将VIN及VPOWER连接,并且使用短路帽将P1的3V3与VCC相连,并且要注意的是,此时的最大输入电压为12V。
(4)液晶显示模块
使用的是OLED,即有机发光二极管,又称为有机电激光显示。
该显示屏使用的是IIC通信协议,一个 I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
(5)红外控制模块
通用红外遥控器,采用的是 NEC 编码格式。在使用前一定要记得给红外遥控器上电池,还有红外遥控器要结合红外接收模块使用,它负责将接收红外遥控器发射过来的信息并将其解码成十六进制码,这样才能实现既定的通信。
红外遥控器
红外接收器
三、软件设计
左右电机驱动IN1、IN2、IN3、IN4分别接PA4、PA5、PA2、PA3。
循迹模块,3个光电对管,左光电接PA10 ,中光电接 PA11,右光电接 PA12 。
红外遥控接收器 接PA1 端口。
软件工程文件夹目录结构如下:
四、成品效果
免费开源《基于STM32的智能循迹小车》,含stm32 cube完整工程、c程序源码。
下载地址: https://download.csdn.net/download/u011818860/89495381