Ультразвуковой дальномер HC-SR04

Ультразвуковой дальномер HC-SR04

Недавно мне пришла идея, как можно немного «прокачать» гараж, а именно сделать проезд через ворота, чуток удобнее. Водитель я не самый профессиональный, а гараж довольно небольшого размера – после всевозможных манипуляций с расширением ворот, оказалось, что размер проема всего-навсего на 15 сантиметров шире автомобиля. С таким зазором, заезжать в гараж, мягко говоря, страшновато. Поэтому, некоторое время, поломав голову, пришла мысль, что можно добавить чуть-чуть современных технологий в деревенский быт. А именно, было решено «присобачить» с трех сторон(слева, справа и спереди от ворот) дальномеры. Зазоры между стенами и автомобилем будут измеряться в режиме онлайн, а данные отобразятся на цифровом табло, которое разместится на стене, внутри гаража и будет висеть всегда перед глазами во время парковки.

Выбор дальномера для подключения к arduino

Для определения расстояния есть несколько способов – инфракрасный датчик приближения, лазерный дальномер и ультразвуковой дальномер. Возможно, есть еще какие-то варианты, но я их сходу не нашел. Поэтому выбирал из трех вариантов. Датчик приближения был сразу забракован, поскольку он не умеет измерять, а только настраивается на определение конкретных расстояний. Лазерный датчик умеет делать измерения и довольно точно, но стоит он не мало, из-за этого выбор был остановлен на ультразвуковом датчике, который стоит в 8-10 раз дешевле лазерного, а точность измерения отличается не на много.
Очевидно, что выбор пал на более дешевый датчик HC-SR04, который стоит 50 руб и способен измерять расстояние от 2 до 400 см с точностью до 3 мм, а эффективный угол наблюдения 15 градусов.

Подключение датчика HC-SR04 к arduino

Ультразвуковой датчик HC-SR04 имеет 4 ножки для подключения:

  • VCC – для подключения +5 вольт
  • GND – для подключения минусового провода
  • Trig – для отправки ультразвукового сигнала
  • Echo – для приема отправленного ранее сигнала

Подключаем VCC и GND к питанию arduino без изменений напряжения, поскольку и ардуино и HC-SR04 работают от 5 вольт. Две оставшиеся ножки, нужно подключять к цифровым пинам ардуино, например, к 11 и 12.

Пример работы HC-SR04

Для испытаний HC-SR04 написан небольшой код, который осуществляет измерение расстояния и выводит информацию на 7-сегментный индикатор TM1637, про который я уже писал.
Для измерения расстояния с помощью HC-SR04, необходимо сначала отправить сигнал, а потом получить его обратно и замерить время, за которое сигнал прошел туда и обратно, тем самым легко высчитать расстояние до препятствия. Зная, что скорость звука в воздухе составляет, примерно, 340 м/с, получаем скорость 0.034 м/мкс. Но так как, сигнал должен пройти туда и обратно, скорость будет в два раза медленней, то есть будет равна 0.017 м/мкс. Итого получаем, формулу: расстояние = время умножить на 0.017 и умножить на 10, чтобы перевести в миллиметры. Или можно перевести пропорцию к более читабельному виду: расстояние = время / 5.8

Что использовалось в проекте:

Скетч ультразвукового дальномера на arduino с помощью HC-SR04 и TM1637

// подключение индикатора TM1637
#include <TM1637.h>
#define CLK 3
#define DIO 2 
TM1637 tm1637(CLK,DIO);

// пины для HC-SR04
int echoPin = 12; 
int trigPin = 11; 

void setup() { 
  Serial.begin (9600); // для вывода в мониторе порта
  pinMode(trigPin, OUTPUT); // пин отправки сигнала
  pinMode(echoPin, INPUT);  // пин приема сигнала

  // инициализация индикатора
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);
} 
 
void loop() { 
  int duration, mm; // переменные для хранения расстояния
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  // отправляем ультрозвуковой сигнал
  digitalWrite(trigPin, HIGH); 
  // ждем 10 микроскунд
  delayMicroseconds(10); 
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  // замеряет длину положительного импульса на пине echoPin
  duration = pulseIn(echoPin, HIGH); 
  // высчитываем расстояние до препядствия
  mm = duration / 5.8;
  // вывод данных в монитор порта
  Serial.print(mm); 
  Serial.println(" mm"); 
  // вывод данных на индикатор
  tm1637.display( mm );
  delay(100);
}

Послесловие

Если будет время и возможность, то постараюсь написать еще несколько статей про оборудование гаража дальномерами: нужно еще придумать большое табло, которое будет видно хотя бы метров с 5, а также нужно все собрать в кучу и смонтировать по месту применения.

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*