Ec metr

Материал из УМКИwiki
Перейти к навигации Перейти к поиску

Измерение EC раствора гидропонной установки

Схема ЕС замеров

Для того чтобы растения нормально росли и развивались, как известно, им нужно подавать сбалансированное питание из макро и микро элементов по профилю N-P-K. Следить за изменением профиля питания удобнее всего по электропроводности водного раствора солей (ЕС). Для этого мы организуем регулярную передачу измеренных значений электропроводимости раствора гидропонной установки в автоматическом режиме в Home Assistant, осуществляя сбор данных через контроллер Ардуино. Можно воспользоваться готовым решением, купить датчик электропроводности на Алиэкспресс . Но мы можем его собрать самостоятельно. Для этого необходимо:

  1. Собрать установку для калибровки ЕС раствора
  2. Создать для Arduino программный код замеров EC на основе примерной функции.
  3. Получить сырые данные в условных единицах производя измерения в баночках с разной концентрацией солей
  4. Для выполнения пересчета из условных единиц в ЕС, необходимо использовать поправочные коэффициенты. Для этого надо выполнить калибровку поправочных коэффициентов
  5. Присоединить плату Arduino к контроллеру на котором установлен Home Assistant и организовать периодический вывод данных в СОМ порт
  6. Поправить конфигурационный файл Home Assitant и перегрузить его
  7. Добавить карточку на панель Home Assistant чтобы наблюдать за историей изменения раствора в графическом виде.


Калибровка по хлориду калия Ампула 10 мл Раствор 1 литр
Одна ампула ЕС=0.6 (мСм/см)
Две ампулы ЕС=2.2 (мСм/см)
Четыре ампулы ЕС=3.2 (мСм/см)
Узел сбора данных с датчиками ЕС, темпратуры и влажности воздуха, температуры воды, освещенности
Узел сбора данных Контроллер Arduino Nano и RaspberryPi4

Установка для измерения электропроводимости ЕС раствора

Схема ЕС замеров

В себя включает в моем случае: 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


RIS 1 Узел сбора данных Контроллер Arduino Nano и RaspberryPi4
RIS 2 Узел сбора данных с датчиками ЕС, температуры и влажности воздуха, температуры воды, освещенности
RIS 3 подключение детектора (вилки) к плате контроллера
RIS 4 Задействованы разъемы А0 (А1 на схеме), А1(D1 на схеме), А2(D2 на схеме)


Выполняем калибровку поправочных коэффициентов

Калибровочные коэффициенты ЕС для вилки 10А

Чтобы пересчитать и выводить на экрана для анализа и принятия решений информацию о концентрации полезных микроэлементов в растворе - необходимо пересчитать полученные ('сырые' 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 для сбора данных

Узел сбора данных Контроллер Arduino Nano и RaspberryPi4

Установить сам 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 в предпоследней строке.


Присединяем детектор ЕС к контроллеру Прокладываем кабель связи Погружаем сам детектор ЕС (вилку) в бак с раствором
Задействанные разьемы.jpg
Присоединение детектора к контроллеру.jpg
Детектор в баке - вилка.jpg


Редактирование конфигурационного файла 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