Ec metr
Измерение EC раствора гидропонной установки
Для того чтобы растения нормально росли и развивались, как известно, им нужно подавать сбалансированное питание из макро и микро элементов по профилю N-P-K. Следить за изменением профиля питания удобнее всего по электропроводности водного раствора солей (ЕС). Для этого мы организуем регулярную передачу измеренных значений электропроводимости раствора гидропонной установки в автоматическом режиме в Home Assistant, осуществляя сбор данных через контроллер Ардуино. Можно воспользоваться готовым решением, купить датчик электропроводности на Алиэкспресс . Но мы можем его собрать самостоятельно. Для этого необходимо:
- Собрать установку для калибровки ЕС раствора
- Создать для Arduino программный код замеров EC на основе примерной функции.
- Получить сырые данные в условных единицах производя измерения в баночках с разной концентрацией солей
- Для выполнения пересчета из условных единиц в ЕС, необходимо использовать поправочные коэффициенты. Для этого надо выполнить калибровку поправочных коэффициентов
- Присоединить плату Arduino к контроллеру на котором установлен Home Assistant и организовать периодический вывод данных в СОМ порт
- Поправить конфигурационный файл Home Assitant и перегрузить его
- Добавить карточку на панель Home Assistant чтобы наблюдать за историей изменения раствора в графическом виде.
Калибровка по хлориду калия Ампула 10 мл Раствор 1 литр | ||||
---|---|---|---|---|
Установка для измерения электропроводимости ЕС раствора
В себя включает в моем случае: RIS_1 Узел сбора данных, который был помещен в коробку из под пластиковой нити для 3D принтера и состоял из ATmega контроллера Arduino Nano на плате УМКИ К6_3 и по СОМ порту - через USB разъем присоединен для обмена данными с ARM контроллером Raspberry Pi4.
Для сбора данных об электропроводности раствора был использован штекер вилка 4А литая, RIS_2 два провода которой через сопротивление в 4.7 КОм были присоединены, как указано на схеме к аналоговому порту А1, и к цифровому порту D1 к цифровому порту D2 . Такая переполюсовка при снятии данных необходима для того чтобы не происходила поляризация электронов в момент замера. Всего выполняется несколько десятков тысяч замеров за единицу времени, после этого собранные данные усредняются и отправляются в порт для дальнейшей обработки. Значения данных с аналогового порта А1 оказываются в диапазоне от 600 до 1024 условных единиц.
На схеме (1)ИП - это источник питания 5В, (0)GND- земля; стрелки ведут к замерам в растворе.
формула пересчета снятых значений:
unsigned long ap,an; ap = 0 + analogRead(A1) + ap; // Позитив - первый вариант с D1 = HIGH ; D2 = LOW an = 1023 - analogRead(A1) + an; // Негатив - второй вариант с D2 = HIGH ; D1 = LOW
Выполняем калибровку поправочных коэффициентов
Чтобы пересчитать и выводить на экрана для анализа и принятия решений информацию о концентрации полезных микроэлементов в растворе - необходимо пересчитать полученные ('сырые' RAW) данные от условных значений в диапазоне 600-1024 (условных единиц) до нужных нам миллисименс на см в диапазоне 0.5-3.5 (мСм/см)
Для этого свели все снятые данные в табличку
Создали 4 банки по 1 литру дистиллята, добавили туда ампулы KLC
1. 1 ампула на 1 литр = 0.7 EC; 25 C; 8.0 pH 2. 2 ампула на 1 литр = 1.3 EC; 22 C; 3.4 pH 3. 3 ампула на 1 литр = 1.9 EC; 25 C; 5.0 pH 4. 4 ампула на 1 литр = 2.6 EC; 26 C; 5.2 pH
Выполнили замеры и свели их в табличку.
По полученным результатам построили график в LibreOffice и для графика построили линию тренда - прямую. Указали, что формулу нужно отобразить на графике.
По этим замерам подбор коэффициентов составил (детектор вилка 10 А штыри 4.5 мм):
Y=0.04* Х- 37.366
Настройка контроллера с Home Assistant для сбора данных
Установить сам Home Assistant
Присоединить плату Arduino, в нашем случае контроллер УМКИ К6_3 к контроллеру с Home Assistant, как это показано на фотографии.
Настроить в OS где установлен HomeAssistant сбор данных из файла лога, если это удаленный хост HAOS, то заходим туда по ssh.
Для вывода данных в командную строку, в ОС Линукс выполняем настройку COM порта, в нашем случае это /dev/ttyUSB0, задаем ему скорость обмена 9600 бод и запускаем сам вывод данных
ssh root@192.168.9.132 /bin/stty -F /dev/ttyUSB0 raw -echo 9600 /usr/bin/cat < /dev/ttyUSB0
В том случае, если же мы хотим, чтобы результат вывод данных складывался бы в файл лога catusb.log в папку /config, для дальнейшей обработки и загрузки данных в HomeAssistant , то мы можем объединить эти команды в один скрипт и запускать его при старте системы, как сервис
#!/bin/bash /bin/stty -F /dev/ttyUSB0 raw -echo 9600 /usr/bin/cat < /dev/ttyUSB0 > /config/catusb.log &
После того как скрипт начнет работать можно будет посмотреть постоянно обновляющееся содержимое лог файла - следующей командой:
tail -f /config/catusb.log
Вывод будет примерно в таком виде:
ec_raw1= 964.781 ec_1= 1.225 T1= 24.0 H1= 39.0 Wlevel= 289.00 t_raw= 286.00 ec_raw1= 964.653 ec_1= 1.220 T1= 24.0 H1= 40.0 Wlevel= 292.00 t_raw= 278.00 ec_raw1= 964.651 ec_1= 1.220 T1= 24.0 H1= 40.0 Wlevel= 290.00 t_raw= 276.00
Чтобы получить конкретное - последнее значение ЕС можно выполнить следующую команду:
cat /config/catusb.log |tail -n 2|head -n 1|awk '{print $4}' 1.220
Это значит, что мы увидели четвертое значение (считаем через пробелы) 1.220 в предпоследней строке.
Присединяем детектор ЕС к контроллеру | Прокладываем кабель связи | Погружаем сам детектор ЕС (вилку) в бак с раствором |
---|---|---|
Редактирование конфигурационного файла Home Assistant
В конфигурационном файле, расположенном моем случае в путях ОС /config/configuration.yaml необходимо внести следующие правки в раздел:
sensor: - platform: command_line name: "ec_raw" command: "cat /config/catusb.log |tail -n 2|head -n 1|awk '{print $2}'" scan_interval: 600
Это значит, что задействуем платформу - командные строки в ОС, имя сенсора ес_raw - придумали сами, далее следует сама команда, которую мы проверяли как она работает в операционной системе, указываем, что из последней строки нашего лог файла, который находится в папке от рута /config мы берем второй параметр, и интервал времени через который мы проводим сканирование этих параметров.
и так же вносим в раздел шаблонов необходимые строки записи:
- platform: template
sensors:
ec10:
value_template: "{{states('sensor.ec_raw')|float*0.040- 37.366|round(2)}}"
unit_of_measurement: 'EC'
Это значит, что значения полученные в нашем сенсоре ес_raw мы пересчитываем, используя полученные ранее поправочные коэффициенты для прямой (y=a*x+b) а=0.040, в=-37.366 и округляя до двух значений после запятой.
После внесения правок и сохранения изменений в файле , незабываем, что нужно будет перегрузить сам инстанс Home Assistant. Для этого идем в меню приложения: Настройки>>Система>>Нажимаем справа вверху экрана кнопочку - Перезагрузить HomeAssistant
После перезагрузки проверяем, у нас должен появиться новый объект, пока без привязки к пространству нашего дома:
ec10 sensor.ec10 Сенсор —
Ищем его в списке всех объектов: Настройки>>Устройства и службы>>Меню Объекты - вверху экрана
Карточка на панели Home Assistant
В меню Обзор настраиваем меню панели (нажимаем три точки справа и выбираем Изменить панель) Здесь нам необходимо добавить новую карточку, чтобы она выводила результат замеров ЕС раствора. Текстовый редактор этой карточки может быть примерно такой
type: gauge entity: sensor.ec10 unit: ec min: 0 max: 4
Выглядеть это может примерно так:
Текстовый режим добавления | Графический режим добавления | График замеров за период | Изменение ЕС - при высыхании раствора в банке |
---|---|---|---|
Если же у вас ни чего не получается, но очень хочется организовать измерения, то для этого можно купить готовый прибор Датчик минерализации (TDS/EC-метр) с дисплеем, RS485 / Modbus