- Составные части
- Модуль ультразвукового датчика
- Работа автоматического регулятора уровня воды
- Принципиальная схема и объяснение
- Программирование
В этом проекте автоматического индикатора и контроллера уровня воды на базе Arduino мы собираемся измерять уровень воды с помощью ультразвуковых датчиков. Основной принцип ультразвукового измерения расстояния основан на ECHO. Когда звуковые волны передаются в окружающей среде, они возвращаются к источнику как ECHO после столкновения с любым препятствием. Таким образом, нам нужно только рассчитать время прохождения обоих звуков, то есть исходящее время и время возврата к исходной точке после столкновения с любым препятствием. И после некоторых вычислений мы можем получить результат - расстояние. Эта концепция используется в нашем проекте контроллера воды, где водяной насос автоматически включается, когда уровень воды в резервуаре становится низким. Вы также можете проверить эту простую схему индикатора уровня воды для более простой версии этого проекта.
Составные части
- Ардуино Уно
- Модуль ультразвукового датчика
- ЖК-дисплей 16x2
- Реле 6 Вольт
- ULN2003
- 7806
- PVT
- Медная проволока
- Аккумулятор на 9 В или адаптер на 12 В
- Соединительные провода
Модуль ультразвукового датчика
Ультразвуковой датчик HC-SR04 используется для измерения расстояния в диапазоне от 2 см до 400 см с точностью до 3 мм. Сенсорный модуль состоит из ультразвукового передатчика, приемника и цепи управления.
Модуль ультразвукового датчика работает с естественным явлением ЭХО звука. Для запуска модуля отправляется импульс длительностью около 10 мкс. После чего модуль автоматически отправляет 8 циклов ультразвукового сигнала 40 кГц и проверяет его эхо. Сигнал после удара о препятствие возвращается и улавливается приемником. Таким образом, расстояние от препятствия до датчика просто рассчитывается по формуле, представленной как
Расстояние = (время x скорость) / 2.
Здесь мы разделили произведение скорости и времени на 2, потому что время - это общее время, которое потребовалось, чтобы достичь препятствия и вернуться обратно. Таким образом, время, необходимое для преодоления препятствия, составляет лишь половину от общего времени.
Работа автоматического регулятора уровня воды
Работа этого проекта очень проста: мы использовали модуль ультразвукового датчика, который отправляет звуковые волны в резервуар для воды и обнаруживает отражение звуковых волн, то есть ECHO. Прежде всего нам нужно запустить модуль ультразвукового датчика для передачи сигнала с помощью Arduino, а затем дождаться получения ECHO. Arduino считывает время между запуском и получением ECHO. Мы знаем, что скорость звука составляет около 340 м / с. поэтому мы можем рассчитать расстояние, используя данную формулу:
Расстояние = (время в пути / 2) * скорость звука
Где скорость звука составляет примерно 340 м / с.
Используя этот метод, мы получаем расстояние от датчика до поверхности воды. После этого нам нужно рассчитать уровень воды.
Теперь нам нужно рассчитать общую длину резервуара для воды. Поскольку мы знаем длину резервуара с водой, мы можем рассчитать уровень воды, вычтя полученное расстояние, полученное по ультразвуковому изображению, из общей длины резервуара. И мы получим расстояние до уровня воды. Теперь мы можем преобразовать этот уровень воды в процент воды и отобразить его на ЖК-дисплее. Работа полного проекта индикатора уровня воды показана на блок-схеме ниже.
Принципиальная схема и объяснение
Как показано на схеме контроллера уровня воды, приведенной ниже, контакты «триггера» и «эха» модуля ультразвукового датчика напрямую подключены к контактам 10 и 11 Arduino. ЖК-дисплей 16x2 подключен к Arduino в 4-битном режиме. Управляющий штырь RS, RW и En напрямую подключены к контактам 7, GND и 6 Arduino. А контакт данных D4-D7 подключен к 5, 4, 3 и 2 Arduino, а зуммер подключен к контакту 12. Реле на 6 Вольт. также подключен к выводу 8 Arduino через ULN2003 для включения или выключения водяного насоса. Стабилизатор напряжения 7805 также используется для подачи 5 В на реле и оставшуюся цепь.
В этой схеме модуль ультразвукового датчика размещен в верхней части ведра (резервуара для воды) для демонстрации. Этот модуль датчика будет считывать расстояние между модулем датчика и поверхностью воды, и он будет отображать расстояние на ЖК-экране с сообщением «Объем воды в резервуаре:». Это означает, что мы здесь показываем пустое место расстояния или объема для воды вместо уровня воды. Благодаря этой функциональности мы можем использовать эту систему в любом резервуаре для воды. Когда уровень пустой воды достигает примерно 30 см, Arduino включает водяной насос, управляя реле. И теперь на ЖК-дисплее отобразится «НИЗКИЙ уровень воды» «Двигатель включен», а светодиод состояния реле начнет светиться.
Теперь, если пустое пространство достигнет расстояния примерно 12 см, arduino выключит реле и на ЖК-дисплее отобразится «Бак полон» «Мотор выключен». Зуммер также подаст звуковой сигнал в течение некоторого времени, и индикатор состояния реле погаснет.
Программирование
Чтобы запрограммировать Arduino для контроллера уровня воды, сначала мы определяем все контакты, которые мы собираемся использовать в проекте для взаимодействия с внешними устройствами, такими как реле, ЖК-дисплей, зуммер и т. Д.
# определить триггер 10 # определить эхо 11 # определить двигатель 8 # определить зуммер 12
Затем мы инициализируем все устройства, используемые в проекте.
lcd.begin (16,2); pinMode (триггер, ВЫХОД); pinMode (эхо, ВХОД); pinMode (двигатель, ВЫХОД); pinMode (зуммер, ВЫХОД); lcd.print («Уровень воды»); lcd.setCursor (0,1); lcd.print («Индикатор»); задержка (2000);
Теперь инициализируйте модуль ультразвукового датчика и считайте время отправки и приема ультразвуковых волн или звука с помощью pulseIn (контакт). Затем выполните вычисления и отобразите результат на ЖК-дисплее 16x2, используя соответствующие функции.
digitalWrite (триггер, ВЫСОКИЙ); delayMicroseconds (10); digitalWrite (триггер, LOW); delayMicroseconds (2); time = pulseIn (эхо, ВЫСОКИЙ); расстояние = время * 340/20000; lcd.clear (); lcd.print («Водное пространство внутри»); lcd.setCursor (0,1); lcd.print («Резервуар:»); lcd.print (расстояние); lcd.print («См»);
После этого мы проверяем условия, если резервуар для воды полный или уровень воды НИЗКИЙ, и принимаем соответствующие меры.
если (расстояние <12 && темп == 0) {digitalWrite (двигатель, НИЗКИЙ); digitalWrite (зуммер, ВЫСОКИЙ); lcd.clear (); lcd.print («Резервуар для воды полный»); lcd.setCursor (0,1); lcd.print («Мотор выключен»); задержка (2000); digitalWrite (зуммер, LOW); задержка (3000); temp = 1; } иначе, если (расстояние <12 && темп == 1) {digitalWrite (двигатель, НИЗКИЙ); lcd.clear (); lcd.print («Резервуар для воды полный»); lcd.setCursor (0,1); lcd.print («Мотор выключен»); задержка (5000); }