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

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

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

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

Что нам понадобится:

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

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

    Ультразвуковой датчик:

      Термистор LM35:

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

        Далее мы заливаем скетч.
        Скачать библиотеку для датчика HC-SR04 —

        iarduino_hc-sr04.zip

        [299.69 Kb] (скачиваний: 238)

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

        sketch_mar23f.zip

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

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

        #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