一、智能避障小車:超聲波傳感器與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);