一、智能避障小车:超声波传感器与PWM电机控制
1.1 硬件需求与工作原理
智能避障小车的核心在于超声波传感器与电机驱动模块的协同工作。超声波传感器(HC-SR04)通过发射高频声波并接收回波来测量距离,而L298N电机驱动模块则负责控制两个直流电机的转向与速度。
1.1.1 超声波传感器工作原理
HC-SR04超声波传感器的测量原理基于声波的传播时间。当传感器的TRIG引脚接收到一个10微秒的高电平触发信号后,会自动发出8个40kHz的超声波脉冲。这些脉冲在空气中传播,遇到障碍物后反射回传感器,通过ECHO引脚返回回波信号。通过测量超声波发射与接收的时间差,可以计算出与障碍物之间的距离。
公式如下:
Distance=Time×Speed of Sound2Distance=2Time×Speed of Sound
其中,声速约为343 m/s(20°C常温下的空气声速)。
1.1.2 L298N电机驱动模块
L298N是一个双H桥电机驱动模块,能够同时控制两个直流电机的转向和速度。其核心是两路H桥电路,通过控制输入引脚的高低电平,可以改变电机的旋转方向。此外,PWM(脉宽调制)信号可以通过ENA和ENB引脚控制电机的转速。
1.2 代码实现与功能扩展
以下代码实现了小车的基本避障功能:当检测到前方障碍物距离小于20厘米时,小车后退并右转;否则,小车直行。
cpp
#include <NewPing.h>
#define TRIG_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
pinMode(5, OUTPUT); // 电机A速度控制
pinMode(6, OUTPUT); // 电机B速度控制
pinMode(7, OUTPUT); // 电机方向控制
pinMode(8, OUTPUT); // 电机方向控制
}
void loop() {
int distance = sonar.ping_cm();
if (distance < 20) {
// 遇到障碍物后退并转向
analogWrite(5, 200);