Очень точный ультразвуковой дальномер

Этот ультразвуковой дальномер HC-SR04 был усовершенствован с помощью датчика температуры LM35.Ещё со школы можно вспомнить что скорость звука зависит от плотности воздуха, а плотность воздуха зависит от тем...



Этот ультразвуковой дальномер HC-SR04 был усовершенствован с помощью датчика температуры LM35.

Ещё со школы можно вспомнить что скорость звука зависит от плотности воздуха, а плотность воздуха зависит от температуры.
Рассчитывать температуру мы будем по этой формуле
temp2 = ( temp/1023.0 )*5.0*1000/10;

Где temp2 это готовое значение температуры после формулы,
А где temp это сырое значение с датчика.

Что нам понадобится:
  • Ультразвуковой дальномер HC-SR04
  • Arduino
  • Макетная плата
  • Перемычки
  • Термистор LM35 (Датчик температуры)


Имейте в виду что HC-SR04 бывает двух видов-
Вот у меня хороший и он стабильно измеряет расстояние.
Они оба измеряют от 4 см до 400 см.
Питаются от 3.3 до 5 v


Начнём с того что смакетируем всё это на макетной плате.

Ультразвуковой датчик:
  • GND - gnd
  • Echo - 3 контакт
  • Trig - 2 контакт
  • Vcc - 5v

Термистор LM35:
  • 1 - 5v
  • 2 - A0
  • 3 - GND

Очень точный ультразвуковой дальномер

Должно получится так:

Далее мы заливаем скетч.
Скачать библиотеку для датчика HC-SR04 -
iarduino_hc-sr04.zip [299,69 Kb] (скачиваний: 12)

Скачать скетч -
sketch_mar23f.zip [338 b] (скачиваний: 11)

#include <iarduino_HC_SR04.h> // подключаем библиотеку для работы с ультразвукового датчика HC-SR04
iarduino_HC_SR04 hcsr(2,3); // обозначаем контакты Trig и Echo
int temp = 0; // сырое значение температуры
float temp2 = 0; // готовое значение температуры
void setup() { // запускаем 1 раз
 Serial.begin(9600); // запускаем монитор порта
 pinMode( A0, INPUT ); // обозначаем контакт А0 как вход
}
void loop() { // повторяется бесконечное количество раз
 temp = analogRead(A0); // читаем значение контакта А0 и назначаем ему переменную temp
 temp2 = ( temp/1023.0 )*5.0*1000/10; // вычисляем сырое значение по формуле чтобы получить готовое значение температуры
 Serial.println(hcsr.distance(temp2)); // пишем готовую дальность в мониторе порта
 delay(1000); // задержка 1 секунда
}

А вот скетч для lcd дисплея-
Скачать скетч -
sketch_mar23f-1.zip [861 b] (скачиваний: 9)


#include <iarduino_HC_SR04.h> // подключаем библиотеку для работы с ультразвукового датчика HC-SR04
#include <LiquidCrystal_I2C.h> //подключаем библиотеку для работы с дисплеем по шине I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // обозначаем (адрес, столбцы, сторки)
iarduino_HC_SR04 hcsr(2,3); // обозначаем контакты Trig и Echo
int temp = 0; // сырое значение температуры
float temp2 = 0; // готовое значение температуры
void setup() { // запускаем 1 раз
 lcd.init(); // инициализируем дисплей
 lcd.backlight(); // включаем подсветку дисплея
 pinMode( A0, INPUT ); // обозначаем контакт А0 как вход
}
void loop() { // повторяется бесконечное количество раз
 temp = analogRead(A0); // читаем значение контакта А0 и назначаем ему переменную temp
 temp2 = ( temp/1023.0 )*5.0*1000/10; // вычисляем сырое значение по формуле чтобы получить готовое значение температуры
 lcd.setCursor(2, 0); // ставим курсор на 2 столбец и 0 строку
 lcd.print(temp2); // пишем расстояние
 lcd.setCursor(5,0);// ставим курсор на 5 столбец и 0 строку
 lcd.print("cm"); // пишем см
 delay(1000); // задержка 1 секунда
}

Жми «Нравится» и получай только лучшие посты в Facebook ↓

Очень точный ультразвуковой дальномер