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

Этот ультразвуковой дальномер 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] (скачиваний: 72)

Скачать скетч —

sketch_mar23f.zip

[338 b] (скачиваний: 58)

#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] (скачиваний: 46)

#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 секунда
}

Пишите комментарии и вопросы я на всё отвечу!

Источник: usamodelkina.ru

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