
Интернет-магазин «Неглупый Дом»
Датчик уровня жидкости включает насос через реле, когда вода в баке опускается ниже нижней метки, и автоматически отключает его, когда бак снова полон — без ручного контроля и риска сухого хода насоса.
Контактные датчики уровня воды в простейшем виде представляют собой два оголённых металлических контакта (или проводящие дорожки на небольшой плате): пока контакты сухие, цепь между ними разомкнута, а когда вода покрывает их — вода (даже обычная, не дистиллированная) выступает проводником и замыкает цепь, что Arduino видит как изменение сигнала на пине.
Главная идея этого проекта — использовать СРАЗУ ДВА датчика на разной высоте, а не один. Если использовать всего один датчик и включать/выключать насос строго по одной отметке уровня, на границе этой отметки (когда вода чуть колышется от работы самого насоса) реле будет щёлкать туда-сюда десятки раз в секунду — это называется "дребезгом" и быстро убивает и реле, и сам насос частыми пусками. Два датчика с разнесёнными порогами (нижний — "пора включать", верхний — "пора выключать") создают зазор между точками включения и выключения, который называется гистерезисом, и насос работает одним спокойным циклом вместо дребезга.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int lowSensorPin = 2; // нижний датчик уровня (у дна бака)
const int highSensorPin = 3; // верхний датчик уровня (у края бака)
const int relayPin = 7; // пин управления реле насоса
bool pumpOn = false; // текущее состояние насоса
void setup() {
pinMode(lowSensorPin, INPUT);
pinMode(highSensorPin, INPUT);
pinMode(relayPin, OUTPUT);
}
void loop() {
bool low = digitalRead(lowSensorPin) == LOW; // вода не достаёт до нижнего датчика
bool high = digitalRead(highSensorPin) == HIGH; // вода достала до верхнего датчика
if (low) pumpOn = true; // уровень упал ниже минимума — включаем насос
if (high) pumpOn = false; // уровень достиг максимума — выключаем насос
digitalWrite(relayPin, pumpOn ? HIGH : LOW);
delay(1000); // пауза между проверками
}
Два датчика (нижний и верхний) вместо одного создают гистерезис по уровню — насос не будет включаться-выключаться каждую секунду на границе одной отметки.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 153 ₽ 138 ₽ (экономия 15 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.