实验目的

本实验旨在利用 Arduino 控制板实现避障智能车的控制。具体实现过程为:通过超声波测距模块采集前方距离,利用电机控制模块进行转向和前进/后退控制,实现避障智能车的基本功能。

实验器材

  • Arduino Uno 控制板
  • 超声波测距模块
  • 电机控制模块
  • 直流电机
  • 轮子
  • 9V 电池
  • 杜邦线

实验原理

超声波测距模块

超声波测距模块通过发射超声波,利用超声波在空气中的传播速度和反射时间来测量距离。本实验中使用了 HC-SR04 超声波测距模块,其工作原理如下:

  • 发射器发射出 40kHz 的超声波;
  • 超声波经过空气传播到达障碍物表面,被反射回来;
  • 接收器接收到反射回来的超声波信号;
  • 根据发射和接收的时间差,计算出距离。

电机控制模块

电机控制模块通过控制电机的正反转实现转向和前进/后退控制。本实验中使用了 L298N 电机控制模块,其接线如下:

  • IN1、IN2、IN3、IN4:分别对应电机的四个引脚,IN1 和 IN2 控制左边电机,IN3 和 IN4 控制右边电机;
  • VCC:外部电源正极;
  • GND:外部电源负极。

代码实现

本实验通过 Arduino 编程实现避障智能车的控制。具体代码实现如下:

#include <Ultrasonic.h>

#define IN1 5
#define IN2 6
#define IN3 10
#define IN4 11

Ultrasonic ultrasonic(7, 8); // 定义超声波测距模块的引脚

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {
  int distance = ultrasonic.Ranging(CM); // 获取距离值,单位为厘米
  if (distance <= 10) { // 如果距离小于等于 10cm,后退并转向
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    delay(1000);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    delay(500);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    delay(1000);
  } else { // 如果距离大于 10cm,前进
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
  }
}

代码解析

  • 首先,定义了 IN1、IN2、IN3、IN4 四个引脚,分别对应电机控制模块的四个引脚;
  • 然后,定义了一个 Ultrasonic 类型的超声波测距模块,引脚分别为 7 和 8;
  • 在 setup() 函数中,将 IN1、IN2、IN3、IN4 四个引脚设置为输出模式;
  • 在 loop() 函数中,首先通过 ultrasonic.Ranging(CM) 获取距离值,单位为厘米;
  • 然后,如果距离小于等于 10cm,执行后退并转向的操作:先将 IN1 和 IN4 设置为高电平,IN2 和 IN3 设置为低电平,实现后退;延时 1 秒;然后将 IN1 和 IN4 设置为低电平,IN2 和 IN3 设置为低电平,停止电机;延时 0.5 秒;最后将 IN1 和 IN4 设置为低电平,IN2 和 IN3 设置为高电平,实现转向;延时 1 秒。如果距离大于 10cm,执行前进操作:将 IN1 和 IN3 设置为高电平,IN2 和 IN4 设置为低电平,实现前进。

实验结果

将程序烧录到 Arduino Uno 控制板中,连接超声波测距模块和电机控制模块,将电机模块连接到电机和轮子上。当超声波测距模块检测到前方有障碍物时,电机控制模块能够自动将车辆进行后退和转向操作,避免碰撞。当障碍物消失时,车辆能够自动前进。

参考资料

[1] HC-SR04 超声波测距模块的工作原理与使用方法,https://www.elecfreaks.com/11915.html

[2] L298N 电机驱动模块使用说明,https://www.elecfreaks.com/9742.html

[3] Arduino 官网,https://www.arduino.cc/

Arduino 避障智能车控制实验报告(含详细代码)

原文地址: https://www.cveoy.top/t/topic/nXty 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录