Для тестов и последующего использования выбран дешевый китайский датчик, который использует оптическую технологию комбинации одного инфракрасного излучателя и приемника для достижения бесконтактного определения уровня жидкости. Сам датчик не оснащен схемой электронного интерфейса – он просто содержит один инфракрасный светодиод и один фототранзистор внутри.
Конструкция оптического датчика уровня
Его можно установить в любом направлении, и установка может занять всего несколько минут, поскольку нет процедуры калибровки. Рекомендуется устанавливать датчик сбоку или снизу резервуара с жидкостью для получения лучших результатов. Обратите внимание, что на работу будут отрицательно влиять другие отражающие поверхности в непосредственной близости от головки датчика.
↑ Метод измерения
Уровнемеров в продаже великое множество. Но мне как-то даже и мысль в голову не пришла искать что-то готовое, не спортивно это, не по «нашему». Вот и решил сделать прибор сам. Более того, мне недостаточно было знать, верхний и нижний уровень, я хотел знать, сколько точно литров в баке. Конечно, для данной цели – контроль уровня воды в баке, эта информация избыточна, но так солидней. Поскольку моя нынешняя работа связана с ультразвуковой дефектоскопией, то выбор способа измерения был нетрудным. В продаже есть много предложений ультразвуковых датчиков расстояния. Есть дорогие с цифровым интерфейсом и на большое расстояние, есть дешевые с более простым интерфейсом, на меньшее расстояние. Выбор пал на самый простой и дешевый датчик HC-SR04
.
Электрическая схема подключения модуля
Типовая электрическая схема для работы от БП 5 В.
Кабель выступает из герметичного узла датчика и имеет на конце небольшой 4-контактный (2-парный) проводной разъем. Одна пара этих проводов присоединена к светодиоду (световому излучателю) внутри, а другая – к фототранзистору (светоприемнику). Вот типовая схема подключения оптического датчика уровня жидкости.
Хотя приведенная выше схема дает общую идею подключения, рекомендуем перед испытанием проверить цветовой код проводов, так как неправильное подключение может привести к повреждению электроники.
Как подключить датчик воды к Ардуино
Для этого занятия нам потребуется:
- плата 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; // присваиваем имя для значений с аналогового входа A0 void setup() { pinMode(A0, INPUT); // к входу A0 подключим датчик (англ. «intput») Serial.begin(9600); // подключаем монитор порта } void loop() { water = analogRead(A0); // переменная «water» находится в интервале от 0 до 1023 Serial.println(water); // выводим значение датчика на монитор delay(1000); // задержка в одну секунду }
Пояснения к коду:
- в первой строчке мы присвоили переменной int имя water для хранения значений c входа A0, значения water могут принимать только целое число.
После загрузки скетча вы сможете получить данные с датчика на мониторе порта. Для этого перейдите в Arduino IDE в Панель меню — Инструменты — Монитор порта. Или используйте для открытия сочетание клавиш Ctrl + Shift + M. После того, как мы узнали показания датчика при его увлажнении, мы можем добавить в скетч функцию автоматического включения светодиода при превышении какого-либо значения.
Скетч для датчика воды и светодиода Ардуино
int water; // присваиваем имя для значений с аналогового входа A0 void setup() // процедура setup { pinMode(12, OUTPUT); // пин 12 со светодиодом будет выходом (англ. «output») pinMode(A0, INPUT); // к входу A0 подключим датчик (англ. «intput») Serial.begin(9600); // подключаем монитор порта } void loop() // процедура loop { water = analogRead(A0); // переменная «water» находится в интервале от 0 до 1023 if (water > 100) { digitalWrite(12, HIGH); } // включаем светодиод if (water < 100) { digitalWrite(12, LOW); } // выключаем светодиод Serial.println(water); // выводим значение датчика на монитор delay(1000); // задержка в одну секунду }
Принцип работы оптического датчика уровня
Датчик содержит инфракрасный светодиод и фототранзистор. Поскольку свет от LED передается на оптическую головку, фототранзистор получает нулевой свет (или меньше света), когда датчик погружен в жидкость – проходящий световой луч будет преломляться. Если жидкости нет, проходящий свет будет возвращаться на фототранзистор непосредственно через оптическую головку. Поэтому если датчик определяет уровень жидкости, он выдает сигнал низкого уровня.
Полезное: Регулировка вращения и реверс мотора от стиральной машины
На рисунке ниже несколько вариантов по установке датчика в различные ёмкости.
Посмотрев на выходной сигнал с помощью мультиметра, можно увидеть сигнал с высоким логическим уровнем в «сухом состоянии» и низкий логический уровень во «влажном состоянии». Следующая схема позволяет использовать выход датчика для непосредственного управления индикатором или даже стандартным электромагнитным реле.
Тут может потребоваться изменить значение R1 (минимум 390 Ом) и R2 (максимум 10 кОм), чтобы получить приемлемые результаты. Элемент BS170 (T1) представляет собой малосигнальный МОП-транзистор с N-каналом, 500 мА, 60 В, доступный в корпусе TO-92, но не с логическим уровнем.
Калибровка
Чтобы получать от датчика уровня воды точные показания, рекомендуется сначала откалибровать его для конкретного типа воды, которую вы планируете контролировать.
Как вы знаете, чистая вода не проводит электрический ток. На самом деле, проводящей ее делают минералы и примеси. Таким образом, ваш датчик может быть более или менее чувствителен в зависимости от типа используемой воды.
Прежде чем вы начнете отслеживать данные или запускать обработчиков каких-либо событий, вы должны увидеть, какие показания вы на самом деле получаете от вашего датчика.
Используя приведенный выше скетч, отметьте на то, какие значения выдает ваш датчик, когда он полностью сухой, когда он частично погружен в воду, и когда он полностью погружен в воду.
Например, используя ту же схему, что и выше, вы увидите в мониторе последовательного порта значения, близкие к следующим:
- когда датчик сухой: 0;
- когда он частично погружен в воду: ~420;
- когда он полностью погружен: ~520.
Рисунок 6 – Калибровка датчика уровня воды
Этот тест может потребовать несколько проб и ошибок. Как только вы получите хороший контроль над этими показаниями, вы сможете использовать их в качестве пороговых значений, если намерены инициировать какое-либо действие. В следующем примере мы собираемся сделать именно это.
Модернизация схемы измерителя уровня
На этот раз всё основано на популярном шестнадцатеричном инвертирующем буфере и преобразователе CD4049UB (IC1). Микросхема имеет стандартизованные симметричные выходные характеристики, широкий диапазон рабочего напряжения от 3 В до 18 В и рекомендуется для устройств, не требующих высокого тока или преобразования напряжения.
Здесь схема на основе CD4049UB обеспечивает одноточечное определение уровня жидкости через TTL-совместимый двухтактный выход, но можно добавить больше оптических датчиков уровня, чтобы реализовать свой собственный расширяемый, многоканальный, совместимый с микроконтроллером модуль определения уровня жидкости.
Как работает реле.
В исходном состоянии, пока на обмотку реле не подано напряжение, якорь под воздействием возвратной пружины находится на некотором расстоянии от сердечника.
При подаче напряжения в обмотке реле сразу начинает течь ток и его магнитное поле намагничивает сердечник, который преодолевая усилие возвратной пружины, притягивает якорь. В этот момент контакты, закрепленные на якоре, перемещаясь, замыкаются или размыкаются с неподвижными контактами.
После отключения напряжения ток в обмотке исчезает, сердечник размагничивается, и пружина возвращает якорь и контакты реле в исходное положение.
Итоги тестов и реальная работа
При тестировании обнаружено, что ложных срабатываний нет, даже когда он установлен внутри небольшого прозрачного резервуара для воды при ярком дневном свете. Если погрузить наконечник датчика (прозрачную призму) в воду, он работает как надо.
В общим этот оптический датчик уровня не имеет движущихся частей и идеально подходит для измерения предельного уровня воды. Он выдает выходной сигнал, который может сказать о наличии или отсутствии жидкости. Подобный компактный и недорогой оптический датчик уровня жидкости – хороший выбор, особенно там где точность измерения не имеет важного значения.
Обзор аппаратного обеспечения
Данный датчик содержит ряд из десяти открытых медных дорожек, пять из которых являются питающими, а пять – чувствительными.
Эти дорожки чередуются так, что между каждыми двумя питающими дорожками есть одна чувствительная дорожка.
Обычно эти дорожки не соединены между собой, но при погружении они соединяются водой.
Рисунок 1 – Датчик уровня воды
На плате расположен индикатор питания, который загорается при подаче на плату напряжения питания.
Тестирование работы проекта
После того как аппаратная часть проекта будет готова подключите плату Arduino к компьютеру (ноутбуку) и загрузите код программы в плату Arduino. Откройте окно монитора последовательной связи на скорости 9600 бод. Расположите какой-нибудь предмет напротив ультразвукового датчика, рассчитанное расстояние до него будет отображаться в окне монитора последовательной связи и на экране ЖК дисплея.
Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.