- Индикатор уровня воды на Arduino Uno
- Необходимые компоненты
- Модуль ультразвукового датчика
- Работа индикатора автоматического определения уровня воды
- Работа схемы
- Исходный код программы
- Как сделать индикатор уровня воды с помощью Arduino
- Когда может пригодиться?
- Как работает индикатор уровня воды Arduino?
- Комплектующие
- Схема соединений
- Скетч для Ардуино
- Ультразвуковой датчик и водный резервуар
- Как подключить датчик воды к Ардуино
- Датчик уровня жидкости (Water Sensor Arduino)
- Как подключить датчик воды к Ардуино
- Скетч для датчика воды (water sensor)
- Пояснения к коду:
Индикатор уровня воды на Arduino Uno
В этом проекте на основе Arduino мы рассмотрим индикатор автоматического определения уровня воды. Уровень воды мы будем определять с помощью ультразвукового датчика. Основные принципы измерения расстояния с помощью ультразвукового датчика основаны на эффекте эхо. Когда звуковые волны излучаются в окружающую среду они после встречи с каким-нибудь препятствием возвращаются обратно к источнику в виде эхо. То есть для измерения расстояния нам необходимо лишь определить время за которое звуковая волна достигает препятствия и возвращается обратно к источнику. Потом после произведения некоторых вычислений мы сможем получить значение расстояния. Этот принцип определения расстояния и будет использован в нашем проекте, в котором водяной электронасос будет автоматически включаться когда уровень воды в цистерне станет низким.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Модуль ультразвукового датчика (купить на AliExpress).
- ЖК дисплей 16х2 (купить на AliExpress).
- Драйвер двигателей ULN2003 (купить на AliExpress).
- Реле на 6 В.
- Батарейка на 9 Вольт или адаптер на 12 Вольт.
- Медный провод.
- Соединительные провода.
Модуль ультразвукового датчика
Его внешний вид представлен на следующем рисунке.
Ультразвуковой датчик HC-SR04 используется для измерения расстояний в диапазоне 2-400 см с точностью 3 мм. Модуль датчика состоит из ультразвукового передатчика, приемника и схемы управления. Принцип действия датчика показан на следующих диаграммах. Более подробно о работе данного датчика можно прочитать в статье про измерение расстояния с помощью Arduino.
Для того чтобы датчик начал работу на него необходимо подать импульс длительностью 10 мкс. После этого датчик автоматически излучает 8 импульсов с частотой 40 кГц и затем проверяет вернулись ли они обратно (эхо). Если отраженные импульсы вернулись, то они принимаются приемником. После этого расстояние до препятствия можно рассчитать по формуле:
Distance= (time x speed)/2.
Произведение времени и скорости в этой формуле делится на 2 потому что общее время распространения звуковой волны в нашем случае состоит из времени когда она распространялась до препятствия и возвращалась обратно.
Работа индикатора автоматического определения уровня воды
Как уже указывалось, принцип работы рассматриваемого нами индикатора уровня воды достаточно прост. Модуль ультразвукового датчика передает звуковые волны в цистерну с водой и затем принимает отраженные волны в виде эхо. Вначале на модуль подается импульс длительностью 10 мкс чтобы запустить его в работу. Затем после приема отраженного сигнала (эхо) плата Arduino считывает время, прошедшее между передачей звукового сигнала и его приемом. Поскольку скорость звука (speed of sound) приблизительно равна 340 м/с, то мы можем рассчитать расстояние по формуле:
Distance= (travel time/2) * speed of sound
С использованием этого метода мы можем определить расстояние от датчика до поверхности воды. После этого нам необходимо рассчитать уровень воды. Для этого нам нужно знать общую длину (высоту) водяной цистерны. Зная эту длину мы можем рассчитать уровень воды как разницу между длиной цистерны и расстоянием, измеренным ультразвуковым датчиком. После этого мы можем конвертировать этот уровень воды в проценты и отобразить это значение на ЖК дисплее. Обобщенная структурная схема работы устройства показана на следующем рисунке.
Работа схемы
Схема устройства представлена на следующем рисунке.
Как показано на приведенной схеме контакты “trigger” и “echo” модуля ультразвукового датчика напрямую подсоединены к контактам 10 и 11 платы Arduino. ЖК дисплей подключен к Arduino в 4-битном режиме. Его управляющие контакты RS, RW и En напрямую подключены к контактам Arduino 7, GND и 6. Контакты данных ЖК дисплея D4-D7 подключены к контактам 5, 4, 3 и 2 Arduino. Буззер (звонок) подключен к контакту 12. Реле на 6 Вольт подключено к контакту 8 Arduino через микросхему ULN2003. Реле используется для включения и выключения водяного электронасоса. Регулятор напряжения 7806 (7805) используется для обеспечения реле и части схемы напряжением питания 5 В.
Модуль ультразвукового датчика устанавливается на верх водяной цистерны. Датчик будет измерять расстояние до поверхности воды и затем на ЖК дисплее будет высвечиваться сообщение “Water Space in Tank is:”. Фактически в этом случае мы будем показывать пустой объем цистерны (не занятый водой) вместо уровня воды. Но благодаря этому мы сможем применять наше устройство в любой водяной цистерне. В нашем случае когда пустой уровень воды достигает дистанции приблизительно 30 см плата Arduino с помощью реле осуществляет включение водяного электронасоса. При этом на ЖК дисплее будут показываться сообщения “LOW Water Level” (низкий уровень воды), “Motor turned ON” (двигатель включен).
Исходный код программы
В коде программы автоматического индикатора уровня воды нам первым делом необходимо инициализировать все контакты Arduino, которые мы будем использовать для подключения внешних устройств: реле, ЖК дисплей, буззер (звонок) и т.д.
#define trigger 10
#define echo 11
#define motor 8
#define buzzer 12
Затем мы инициализируем все устройства, задействованные в проекте.
lcd.begin(16,2);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(motor, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.print(» Water Level «);
lcd.setCursor(0,1);
lcd.print(» Indicator «);
delay(2000);
После этого инициализируем модуль ультразвукового датчика и считаем время между передачей и приемом ультразвуковой волны с помощью функции pulseIn(pin). Затем произведем вычисления и покажем результат на экране ЖК дисплея.
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
delayMicroseconds(2);
time=pulseIn(echo,HIGH);
distance=time*340/20000;
lcd.clear();
lcd.print(«Water Space In «);
lcd.setCursor(0,1);
lcd.print(«Tank is: «);
lcd.print(distance);
lcd.print(«Cm»);
Потом запишем условия, позволяющие проверить полна или пуста цистерна с водой и в зависимости от результатов проверки этих условий произведем соответствующие действия.
Источник
Как сделать индикатор уровня воды с помощью Arduino
Используем плату Ардуино и ультразвуковой модуль для создания своими руками проекта по определению уровня воды в баке.
Когда может пригодиться?
Представим ситуацию, когда у вас на дачном участке есть душ, основу которого составляет бак с водой, который наполняется либо через насос либо дождевой водой.
Часто узнать количество воды в резервуаре может быть утомительной задачей. Обычно вы поднимаетесь по лестнице и проверяете уровень вручную или вы услышите что вода переполняется сверху.
В наши дни появилось много разных электронных индикаторов уровня воды, но они часто имеют высокую цену и обычно сложны в установке. Большинство доступных систем используют электроды или поплавковые переключатели, которые могут быть головной болью в долгосрочной перспективе.
Мы решим эту задачу с совершенно другим подходом к знанию уровня воды — с использованием ультразвукового модуля и Ардуино. Преимущество этого метода заключается в том, что он бесконтактный, поэтому такие проблемы, как коррозия электродов, не будут влиять на эту систему. Кроме того, этот индикатор уровня воды Arduino намного проще устанавливать, чем обычные системы.
Как работает индикатор уровня воды Arduino?
Этот индикатор уровня воды Ардуино использует ультразвуковой датчик или, по-другому, Ping датчик для определения уровня воды в баке. Датчик Ping измеряет расстояние, используя гидролокатор.
Из аппарата передается ультразвуковой импульс (значительно выше человеческого слуха), а расстояние до цели определяется путем измерения времени, необходимого для возврата эха. На выходе Ping датчика импульс переменной ширины, который соответствует расстоянию до цели. Затем он подается в микроконтроллер, который определяет уровень воды и отображает его через ряд светодиодов.
Этот проект может быть реализован на одной из плат Arduino, если микроконтроллером платы является непосредственно микроконтроллер ATmega 328.
Комплектующие
По традиции переходим к комплектующим, набор деталей довольно большой:
1 | Микроконтроллер ATMega328P или плата Arduino |
1 | HC-SR04 ультразвуковой модуль (также известный как датчик PING) |
1 | 10K резистор |
1 | Кристалл 16 МГц |
2 | 22pf дисковые конденсаторы |
Провода-перемычки | |
1 | Регулятор LM7805 5V |
1 | 9В батарея и разъем |
1 | Электролитический конденсатор 10uF |
1 | Макетная плата (или печатная плата) |
1 | Инструмент для зачистки проводов |
Схема соединений
Все детали нужно собрать соответственно диаграмме выше. Сразу заметим, что в данной схеме на макетную плату размещается микроконтроллер ATmega328. Если вы используете плату Arduino, вы можете просто установить соединения для светодиодов и ультразвукового датчика.
Скетч для Ардуино
Скопируйте прилагаемый ниже скетч в Arduino IDE и найдите строку «int d = 18;» и измените «18» на глубину вашего резервуара в сантиметрах.
Загрузите код для индикатора уровня воды Arduino непосредственно на плату Arduino или в микроконтроллер ATMega328P.
Ультразвуковой датчик и водный резервуар
Закрепите датчик так, чтобы он непосредственно смотрел на воду в баке. Основная плата управления со светодиодами может быть закреплена внутри дома в любом удобном положении. Любые многожильные кабели (Ethernet-кабель) могут использоваться для соединения датчика и остальной части схемы.
Теперь просто подключите аккумулятор (питание) и ваш индикатор уровня воды Ардуино готов к использованию.
Источник
Как подключить датчик воды к Ардуино
Рассмотрим на этом занятии аналоговый датчик протечки воды (уровня жидкости). Расскажем, как подключить датчик к аналоговому порту на Arduino. Самостоятельно напишем скетч для вывода показаний датчика протечки воды на серийный порт. Рассмотрим команды Serial.begin и Serial.print в языке программирования C++ для вывода информации с микроконтроллера Arduino на серийный монитор порта.
На этом занятии мы соберем схему и напишем скетч для автоматического включения светодиода при попадании воды на наш датчик (Water Sensor). Для начала нам необходимо узнать, какое значение мы будем получать на аналоговом порту, когда датчик будет в воде. Далее в скетче мы добавим условие включения светодиода при достижении максимального порога и его автоматического отключения.
Датчик уровня жидкости (Water Sensor Arduino)
Рабочее напряжение аналогового сенсора — 5v. Выходное напряжение (показания датчика) зависит от степени погружения датчика в жидкость и от параметров, влияющих на коэффициент передачи напряжения, например, проводимость жидкости. Это простой в использование и недорогой датчик уровня жидкости, который широко применяется в системах автоматизации и при разработке Умного дома.
Подключение к Ардуино датчика воды (Water Sensor)
Как вы уже заметили на фото к этому занятию, датчик уровня жидкости имеет три контакта. Правый контакт (-) подключается к Земле (GND), средний к питанию 5v, а левый к аналоговому входу, например, A0. При полностью сухом датчике выходное напряжение и показания на аналоговом входе будут равны нулю, чем больше датчик будет погружен в воду, тем больше будут его показания (от 0 до 1023).
Как подключить датчик воды к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- датчик воды;
- 1 светодиод и резистор 220 Ом;
- провода «папа-папа» и «папа-мама».
Перед тем как, подключить датчик протечки воды к плате Ардуино, следует написать скетч. Откройте программу Arduino IDE и вы увидите скетч, где уже прописаны процедуры void setup() и void loop() . Для начала зададим переменную water с помощью оператора int . Переменную мы будем использовать для хранения данных в памяти и присваивания ей значения, получаемого с датчика воды.
Перейдите в Панель меню — Инструменты — Монитор порта
В процедуре void setup() мы прописываем режим работы аналогового порта, как вход — команда pinMode(AO,INPUT) и подключаем монитор порта с помощью Serial.begin(9600) . Далее в процедуре void loop() получаем значение с аналогового порта с помощью команды water = analogRead(A0); и передаем значение на монитор порта Arduino IDE Serial.println(water); и ставим паузу для нашего удобства.
Скетч для датчика воды (water sensor)
Пояснения к коду:
- в первой строчке мы присвоили переменной int имя water для хранения значений c входа A0, значения water могут принимать только целое число.
После загрузки скетча вы сможете получить данные с датчика на мониторе порта. Для этого перейдите в Arduino IDE в Панель меню — Инструменты — Монитор порта. Или используйте для открытия сочетание клавиш Ctrl + Shift + M. После того, как мы узнали показания датчика при его увлажнении, мы можем добавить в скетч функцию автоматического включения светодиода при превышении какого-либо значения.
Источник