Ec metr: различия между версиями

Материал из УМКИwiki
Перейти к навигации Перейти к поиску
(Новая страница: « == Измерение EC раствора гидропонной установки == Для передачи значений в Home Assistant измерен…»)
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:


== Измерение EC раствора гидропонной установки ==
== Измерение EC раствора гидропонной установки ==
Для передачи значений в Home Assistant измерения электропроводимости раствора гидропонной установки в автоматическом режиме с использованием контроллера Ардуино при выращивании растений необходимо :
[[Файл:СхемаЕСметра.png|link=http://wiki.laser.ru/images/e/ef/СхемаЕСметра.png|thumb|360px| Схема ЕС замеров]]
# Собрать установку согласно схемы
Для того чтобы растения нормально росли и развивались, как известно, им нужно подавать сбалансированное питание из макро и микро элементов по профилю N-P-K. Следить за изменением профиля питания удобнее всего по электропроводности водного раствора солей (ЕС). Для этого мы организуем регулярную передачу измеренных значений электропроводимости раствора гидропонной установки в автоматическом режиме в Home Assistant, осуществляя сбор данных через контроллер Ардуино. Можно воспользоваться готовым решением, купить датчик электропроводности на Алиэкспресс . Но мы можем его собрать самостоятельно.  Для этого необходимо:
# Создать для ардуино программный код на основе примерной функции.
 
# Получить сырые данные
# Собрать [[Установка для калибровки ЕС раствора | установку для калибровки ЕС раствора]]
# Произвести калибровку поправочных коэффициентов  
# Создать для Arduino [[Программный код замеров EC - пример функции| программный код замеров EC на основе примерной функции]].
# Организовать периодический вывод данных в СОМ порт
# Получить сырые данные в условных единицах производя измерения в [[Журнал замеров разных концентраций солей| баночках с разной концентрацией солей]]
# Присоединить плату Arduino к контроллеру на котором установлен Home Assistant
# Для выполнения пересчета из условных единиц в ЕС, необходимо использовать поправочные коэффициенты. Для этого надо выполнить [[Калибровка поправочных коэффициентов| калибровку поправочных коэффициентов]]
# Поправить  конфигурационный файл Home Assitant и перегрузить его
# Присоединить плату Arduino к [[Настройка контроллера с Home Assistant| контроллеру на котором установлен Home Assistant]] и организовать периодический вывод данных в СОМ порт
# Добавить карточку на панель Home Assistant
# Поправить  конфигурационный файл [[Конфигурационный файл Home Assitant | Home Assitant и перегрузить его]]
# Добавить [[Редактирование карточек панелей в Home Assistant | карточку на панель Home Assistant]] чтобы наблюдать за историей изменения раствора в графическом виде.
 
 
{| align="center" class="standard"
|+
! |Калибровка по хлориду калия Ампула 10 мл Раствор 1 литр
|-----
| [[Файл:1 ампула.jpg|link=http://wiki.laser.ru/images/f/ff/1_ампула.jpg|thumb|160px| Одна ампула ЕС=0.6 (мСм/см)]] 
| [[Файл:2 ампулs.jpg|link=http://wiki.laser.ru/images/d/d0/2_ампулs.jpg|thumb|160px| Две ампулы ЕС=2.2 (мСм/см)]]
| [[Файл:IMG 20230428 144833.jpg|link=http://wiki.laser.ru/images/0/0f/IMG_20230428_144833.jpg|thumb|160px| Четыре ампулы ЕС=3.2 (мСм/см)]]
| [[Файл:Узел сбора данных.jpg|link=http://wiki.laser.ru/images/c/c0/Узел_сбора_данных.jpg|thumb|170px| Узел сбора данных с датчиками ЕС, темпратуры и влажности воздуха, температуры воды, освещенности]]
| [[Файл:Состав узла сбора данных.jpg|link=http://wiki.laser.ru/images/0/06/Состав_узла_сбора_данных.jpg|thumb|180px| Узел сбора данных Контроллер Arduino Nano и RaspberryPi4]]
|+
|}
 
== Установка для измерения электропроводимости ЕС раствора ==
[[Файл:СхемаЕСметра.png|link=http://wiki.laser.ru/images/e/ef/СхемаЕСметра.png|thumb|360px| Схема ЕС замеров]]
 
В себя включает в моем случае: '''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
 
 
{| align="center" class="standard"
|+
| [[Файл:Состав узла сбора данных.jpg|link=http://wiki.laser.ru/images/0/06/Состав_узла_сбора_данных.jpg|thumb|280px| RIS 1 Узел сбора данных Контроллер Arduino Nano и RaspberryPi4]]
| [[Файл:Узел сбора данных.jpg|link=http://wiki.laser.ru/images/c/c0/Узел_сбора_данных.jpg|thumb|270px| RIS 2 Узел сбора данных с датчиками ЕС, температуры и влажности воздуха, температуры воды, освещенности]]
| [[Файл:Подключение к плате.jpg|link=http://wiki.laser.ru/images/4/44/Подключение_к_плате.jpg|thumb|270px| RIS 3  подключение детектора (вилки) к плате контроллера]]
| [[Файл:Задействанные разьемы.jpg|link=http://wiki.laser.ru/images/5/55/Задействанные_разьемы.jpg|thumb|270px| RIS 4 Задействованы разъемы А0 (А1 на схеме), А1(D1 на схеме), А2(D2 на схеме)]]
 
|+
|}
 
 
== Выполняем калибровку поправочных коэффициентов ==
[[Файл:EC вилка 10 А.png |link=http://wiki.laser.ru/images/0/0d/EC_вилка_10_А.png |thumb|360px| Калибровочные коэффициенты ЕС для вилки 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  для сбора данных==
 
 
[[Файл:Состав узла сбора данных.jpg |link=http://wiki.laser.ru/images/0/06/Состав_узла_сбора_данных.jpg |thumb|180px| Узел сбора данных Контроллер Arduino Nano и RaspberryPi4]]
 
Установить сам [[Home Assistant install |Home Assistant]]
 
Присоединить плату Arduino, в нашем случае контроллер [https://www.umkikit.ru/index.php?route=product/product&product_id=33 '''УМКИ К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 в предпоследней строке.
 
 
 
{| align="center" class="standard"
|+
! |Присединяем детектор ЕС к контроллеру
! |Прокладываем кабель связи
! |Погружаем сам детектор ЕС (вилку) в бак с раствором
|-----
| [[Файл:Задействанные разьемы.jpg |link=http://wiki.laser.ru/images/5/55/Задействанные_разьемы.jpg |thumb|300px| ]]
| [[Файл:Присоединение детектора к контроллеру.jpg |link=http://wiki.laser.ru/images/5/5d/Присоединение_детектора_к_контроллеру.jpg |thumb|300px| ]]
| [[Файл:Детектор в баке - вилка.jpg |link=http://wiki.laser.ru/images/2/2d/Детектор_в_баке_-_вилка.jpg |thumb|300px| ]]
|+
|}
 
 
== Редактирование конфигурационного файла 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 мы берем второй параметр, и интервал времени через который мы проводим сканирование этих параметров.
 
и так же вносим в раздел шаблонов необходимые строки записи:
<syntaxhighlight lang="C">
  - platform: template
    sensors:
      ec10:
        value_template: "{{states('sensor.ec_raw')|float*0.040- 37.366|round(2)}}"
        unit_of_measurement: 'EC'
</syntaxhighlight>
 
Это значит, что значения полученные в нашем сенсоре ес_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
 
Выглядеть это может примерно так:
 
{| align="center" class="standard"
|+
! |Текстовый режим добавления
! |Графический режим добавления
! |График замеров за период
! |Изменение ЕС - при высыхании раствора в банке
|-----
| [[Файл:Home Assistant текстовая.png |link=http://wiki.laser.ru/images/e/e7/Home_Assistant_текстовая.png |300px|thumb|left|Текстовая форма ввода]]
| [[Файл:Home Assistant графическая.png |link=http://wiki.laser.ru/images/e/ee/Home_Assistant_графическая.png |300px|thumb|left|Графическая форма ввода]]
| [[Файл:ЕС11.png |link=http://wiki.laser.ru/images/3/35/ЕС11.png |300px|thumb|left|График изменения ЕС раствора]]
| [[Файл:ЕС температура.png |link=http://wiki.laser.ru/images/0/03/ЕС_температура.png |300px|thumb|left|Связь изменений и температуры в помещении]]
|+
|}
 
 
Если же у вас ни чего не получается, но очень хочется организовать измерения, то для этого можно купить готовый прибор  [https://iarduino.ru/shop/Sensory-Datchiki/ec-tds-Modbus.html Датчик минерализации (TDS/EC-метр) с дисплеем, RS485 / Modbus]
 
 


[[Категория: Home Assistant]]
[[Категория: Home Assistant]]
[[Категория:Датчики]]

Текущая версия от 17:45, 2 августа 2023

Измерение 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