Аналоговый датчик уровня воды (0-35 мм)........
Мой аквариум с морской водой иногда издает шум, потому что уровень воды в моем NYOS Opus G2 можно регулировать только с помощью маховика и насоса, но он постоянно меняется из-за отложений. Поэтому иногда оно бывает слишком низким или слишком высоким.
Поскольку я (разумно) купил насос с интерфейсом 0-10 В, моей идеей было измерить расстояние до поверхности воды, чтобы соответствующим образом отрегулировать насос.
К сожалению, не существует (доступных) датчиков, ��оторые сообщали бы мне уровень воды в виде аналогового значения, чтобы я мог позже управлять насосом с помощью ПИД-регулятора.
Поскольку оптические методы слишком подвержены ошибкам, я решил использовать датчик Холла.
Благодаря этому я могу измерить расстояние до 35 мм, что более чем достаточно для моего применения.
Мое оборудование:
Материнская плата: ESP32 D1 Mini
https://www.amazon.de/AZDelivery-Bluetooth-Internet-Entwicklungsboard-kompatibel/dp/B08BTLYSTM/ref=sr_1_3?th=1
Потенциометр: 10К
https://www.amazon.de/gp/product/B07ZJL91YP/ref=ppx_yo_dt_b_asin_title_o01_s02?ie=UTF8&psc=1
ШИМ-преобразователь 0-10 В:
https://www.amazon.de/gp/product/B09FYWWMQS/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
Понижающий преобразователь 3,3 В:
https://www.amazon.de/gp/product/B07DP2MDJQ/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1
Датчик Холла:
https://www.amazon.de/AZDelivery-KY-003-digitaler-Transistor-Arduino/dp/B07V2N9T6W/ref=sr_1_3_sspa?crid=3FHG8DF7I68B5&th=1
Позже я создам для него собственную печатную плату. Если вас тоже интересует такая плата, напишите об этом в комментариях.
Программное обеспечение для ардуино входит в комплект.
Вам понадобится неодимовый магнит 10x5 мм и две акриловые трубки диаметром ~ 120 мм и диаметром 5 мм.
Установка:
Выпаиваем из платы датчик холла и припаиваем к нему три провода.
Убедитесь, что вы используете правильные цвета для Gnd, Vcc и сигнала. На KY-003 Gnd и Vcc на печатной плате перепутаны! Изолируйте провода как можно лучше. Я просто использовал изоленту.
Согните датчик Холла на 90° так, чтобы он ровно прилегал к нижней части держателя датчика. В этом направлении можно измерить наибольшее расстояние до магнита. Я использовал горячий клей, чтобы закрепить датчик в держателе датчика и сделать его водонепроницаемым.
Затем соберите весь датчик, но пока не приклеивайте магнит плотно. Для меня полярность по-прежнему имела решающее значение для достижения 35 мм.
После этого я измерил штангенциркулем аналоговые значения для соответствующего расстояния с шагом 5 мм и записал их в исходный код. Это необходимо, поскольку датчик Холла не выдает линейных значений, пропорциональных расстоянию. Я компенсирую это программно.
Аналоговые значения передаются через последовательный интерфейс.
Вы также можете временно использовать потенциометр для настройки насоса на определенный диапазон управления на этом этапе (для этого установите для параметра Mode значение EMode::Potentiometer). С моей помпой (Aqua Medic DC Runner 3.3) я взял аналоговые значения 33% и 70%. Ниже 30% насос отключается. После ввода аналоговых значений потенциометр вам больше не понадобится.
Константы для ПИД-регуляторов установлены по умолчанию, но мне они подошли нормально.
ПИД-регулятор для меня надежно устанавливает уровень воды (kDesiredWaterLevel_mm). Это расстояние и держатель, конечно же, предназначены для переливного бокса Nyos Opus.
Поэтому вам придется разработать собственный держатель, чтобы адаптировать его к вашему применению.
Настройки печати:
Рекомендуется использовать PETG, поскольку он не попадает в воду.
Для пловца («Швиммер») я использую 5% заполнения и 4 стены. Разумеется, деталь ни в коем случае не должна тонуть и быть абсолютно герметичной. Я сделал отверстие для магнита немного глубже, чтобы защитить его от соленой воды с помощью горячего клея.
Если вы хотите поддержать меня, купите мне кофе (через PayPal) ;-).
В зависимости от вашего интереса я также могу сделать видео.
ОБНОВЛЕНИЕ:
Только что добавили поддержку MQTT и картинку с графиками входных/выходных значений.
Вы можете видеть, что датчик поддерживает уровень воды в диапазоне +- 1 мм (11 мм — уставка ПИД). На точность датчика несколько влияют плохие аналоговые входы ESP32 и кабель длиной 2 метра.





























