Датчик уровня воды и Arduino: подключение, показания по ступеням, контроль бака
Датчик уровня воды — плоская плата с гребёнкой из десяти пар дорожек. Чем глубже он опущен, тем больше дорожек замкнуто водой и тем выше напряжение на выходе. Никакой электроники, кроме резисторов и транзистора: три вывода и всё.
Меряет он грубо, ступенями по пять миллиметров, и дорожки со временем окисляются, как у любого резистивного датчика. Зато для задачи «бак пустой — бак полный — перелив» он идеален и стоит меньше кабеля к нему.
Схема подключения
Распиновка
| Провод | Куда и зачем |
|---|---|
| S | Сигнал, аналоговый выход. |
| + (VCC) | 3,3–5 В. |
| − (GND) | Земля. |
Характеристики
- Рабочая зона
- 40 мм, 10 ступеней
- Питание
- 3–5 В
- Ток
- менее 20 мА
- Выход
- аналоговый, 0 — сухо
- Размер
- 62 × 20 мм
Что показывают числа
В воздухе датчик даёт ноль. При касании воды значение прыгает сразу на сотню-другую, дальше растёт ступенями с каждой парой дорожек и упирается в 600–700 при полном погружении. В проценты переводить не стоит: удобнее задать два-три порога — «есть вода», «половина», «полный» — и опираться на них.
Электроника на плате не герметична: в воду опускают только зону дорожек, до белой линии. Провода и резисторы сверху должны оставаться сухими.
Библиотека
не нужна— analogRead и пороги.
Готовый скетч
const int LEVEL_PIN = A0;
const int POWER_PIN = 7;
// Пороги подберите под свой бак: значения при касании, половине и полном
const int TOUCH = 150;
const int HALF = 400;
const int FULL = 600;
void setup() {
Serial.begin(9600);
pinMode(POWER_PIN, OUTPUT);
}
void loop() {
digitalWrite(POWER_PIN, HIGH);
delay(50);
int level = analogRead(LEVEL_PIN);
digitalWrite(POWER_PIN, LOW);
Serial.print(level);
if (level < TOUCH) Serial.println(" — сухо");
else if (level < HALF) Serial.println(" — низкий уровень");
else if (level < FULL) Serial.println(" — половина");
else Serial.println(" — полный, стоп насос");
delay(1000);
}Скетч собирается arduino-cli под Arduino UNO
Питание на время замера — та же защита от электролиза, что у датчика почвы: под постоянным током дорожки чернеют за месяц.
Частые ошибки
Показания растут скачками
Так устроен датчик: десять пар дорожек — десять ступеней. Плавного уровня от него не добиться; для точности берут ультразвуковой дальномер сверху бака или поплавок.
Разные жидкости — разные показания
Дистиллированная вода почти не проводит, солёная проводит отлично. Калибруйте на той воде, что будет в баке.
Через месяц значения упали
Окисление дорожек. Питание только на замер и хромированные щупы вместо этой платы, если бак с водой постоянно.
Датчик утонул целиком
Верхняя часть с резисторами не должна быть в воде: показания станут случайными, а плата начнёт корродировать.
Что понадобится
- Датчик уровня воды
- Arduino UNO
- Провода «папа-мама»