Датчик уровня воды для Arduino: сигнализация затопления

Погружной датчик уровня воды: как он работает, какие у него выводы и как собрать на Arduino звуковую сигнализацию с тремя уровнями тревоги.
Зачем нужен датчик и как он устроен
Датчик уровня воды применяют для контроля заполнения ёмкостей, в которые нельзя заглянуть, чтобы вовремя узнать о превышении критической отметки и не допустить переполнения. По конструкции такие датчики бывают поплавковыми, врезными и погружными; рассматриваемый модуль относится к погружным.

Принцип работы основан на сопротивлении: чем глубже плата опущена в воду, тем меньше сопротивление между соседними проводниками. На выходе получается аналоговый сигнал, по которому контроллер может судить о глубине погружения. О наличии питания сообщает красный светодиод.
Выводов три: «+» — питание, «−» — земля, S — аналоговый выход.
Характеристики
| Напряжение питания | 3,3–5 В |
| Ток потребления | 20 мА |
| Выход | аналоговый |
| Зона обнаружения | 16×30 мм |
| Размеры | 62×20×8 мм |
| Рабочая температура | 10–30 °C |
Проект: звуковая сигнализация затопления
В качестве примера собирают сигнализацию, которая по мере подъёма воды подаёт три разных звуковых сигнала: при небольшом затоплении, при среднем уровне и при критическом. Пьезоизлучатель, подключённый прямо к цифровому выводу, звучит слишком тихо, поэтому используется динамик, включённый через транзистор.
- плата Arduino Uno;
- датчик уровня воды;
- динамик 8 Ом;
- резистор 500 Ом;
- транзистор КТ503Е;
- соединительные провода.

Выход S датчика подключается к аналоговому входу A0, цепь динамика — к цифровому контакту 11.
Логика скетча
Аналоговый вход Arduino — это 10-битный АЦП, поэтому функция analogRead возвращает числа от 0 до 1023. Раз в секунду скетч считывает значение с A0, выводит его в монитор последовательного порта и сравнивает с тремя порогами. Пороги найдены опытным путём:
- больше 400 — минимальное погружение, звучит тон 293 Гц (ре первой октавы);
- больше 500 — средний уровень, тон 466 Гц (си-бемоль первой октавы);
- больше 600 — большое погружение, тон 587 Гц (ре второй октавы).
Сигнал воспроизводится функцией tone в течение двух секунд. Если значение ниже нижнего порога, то есть датчик сухой, звук отключается вызовом noTone. Так как пороги получены экспериментально, для конкретного экземпляра датчика их стоит проверить по показаниям в мониторе порта.
Что проверить при неполадках
Если светодиод питания не горит, проверяют, подано ли на датчик напряжение 3,3–5 В и соблюдена ли полярность. Если при погружении аналоговое значение не меняется, помимо питания стоит проверить соединение выхода датчика со входом Arduino.