Ec metr: различия между версиями
Woronin (обсуждение | вклад) Нет описания правки |
Woronin (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
== Измерение EC раствора гидропонной установки == | == Измерение EC раствора гидропонной установки == | ||
Для | [[Файл:СхемаЕСметра.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, осуществляя сбор данных через контроллер Ардуино. Можно воспользоваться готовым решением, купить датчик электропроводности на Алиэкспресс . Но мы можем его собрать самостоятельно. Для этого необходимо:
- Собрать установку для калибровки ЕС раствора
- Создать для 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