Недавно у меня появилась необходимость определять критический уровень жидкости в емкости и сигнализировать об этом. Первым делом я, конечно, отправился искать готовый датчик уровня воды на просторах aliexpress. Но ни чего подходящего за разумные деньги там не нашлось, поэтому поиски перенеслись на форумы и сайты электронщиков. Там тоже не удалось откопать ни чего простого в реализации и дешевого. Делать нечего, прошлось изобретать самому – несколько часов проектирования и датчик готов. За основу был взят обычный геркон, который срабатывает при приближении к нему магнита.
Принцип работы датчика уровня воды
Идею работы датчика, как бы это ни было смешно, я подсмотрел в смывном бочке унитаза. Датчик оборудован поплавком, который держится на шарнирном соединении. Шарнир находится посередине подвижного рычага. На одном краю рычага расположен поплавок, который приводит в движение всю конструкцию, при изменении уровня воды. А на другом краю рычага крепится магнит, который в зависимости от положения поплавка, то приближается, то отдаляется от геркона. Геркон же, в свою очередь, прикреплен к неподвижной части датчика и срабатывает на замыкание, только когда поплавок поднят жидкостью, а магнит соответственно приблизился.
Для лучшего понимания работы датчика, ниже приведена картинка с двумя положениями датчика.
Датчик был напечатан на 3D принтере, магнит «выдран» из динамика от старых и не рабочих наушников, ну а геркон уже пришлось купить – стоимость его 10 руб. Таким образом, датчик обошелся совсем дешево и получился довольно качественным. Единственное, что нужно его немного довести до ума, пропитав или просто покрыв, смолой или лаком. Это увеличит срок годности датчика, поскольку он будет постоянно соприкасаться с жидкостью.
Подключение геркона к arduino
Датчик готов, остается только подключить его к ардуино и написать простую прошивку. По сути, весь датчик состоит из одного геркона и магнита, все остальное, это просто корпус. Поэтому подключение элементарное: геркон не имеет полярности, поэтому все что нужно, это подключить одним электродом к 5V, а другим к любому цифровому или аналоговому пину. И не забыть притянуть геркон к земле через резистор номиналом от 10 кОм. Все то же самое, что и с обыкновенной кнопкой. Но на всякий случай, для ясности, ниже приведена схема подключения.
Код для определения положения датчика уровня воды
И остается только приложить код для использования датчика. В качестве примера, при срабатывании датчика, будет загораться встроенный в ардуино светодиод, он висит на 13м пине.
int ledPin = 13; // пин светодиода int sensorPin = 9; // пин датчика void setup() { // инициализация пинов pinMode(ledPin, OUTPUT); pinMode(sensorPin, INPUT); } void loop() { // считываем показания геркона int sensorState = digitalRead(sensorPin); if (sensorState == HIGH) { // если геркон замкнут, то включаем светодиод digitalWrite(ledPin, HIGH); } else { // если геркон разомкнут, то выключаем светодиод digitalWrite(ledPin, LOW); } delay(300); }
Послесловие
Вдруг, кто-то захочет повторить датчик, то пишите мне на почту или в комментарии, я скину 3d-модели и даже могу помочь с их печатью :)