У анализатора углекислого газа eSENSE II Display есть выход 4-20 мА, через резистор 150 Ом подключен к GPIO0 для считывания напряжения. Подвязал ESP32 в Home Assistant через ESPHome.
Замерил показания на пине GPIO0 и показания в PPM. Вышла следующая зависимость:
|V|ppm|
|0|0,6|
|200|0,8|
|300|0,91|
|400|1,02|
|500|1,15|
|630|1,32|
|660|1,35|
|702|1,4|
|743|1,45|
|787|1,5|
|780|1,5|
|852|1,58|
|864|1,59|
|871|1,6|
|875|1,61|
|916|1,65|
|960|1,7|
|999|1,75|
|1040|1,8|
|1070|1,85|
|1146|1,94|
|1243|2,03|
|1242|2,04|
|1314|2,12|
|1349|2,16|
|1449|2,27|
|1505|2,34|
|1520|2,36|
|1562|2,41|
|1617|2,47|
|1720|2,6|
|1950|2,94|
Подскажите как теперь это воткнуть в скетч, чтобы получать показания ppm в Home Assistant?
Самый прямой и банальный путь: оформить в виде массива с табличными значениями, либо ещё тупее, кучу if-else использовать.
Сложный, небанальный путь: найти формулу, по которой пересчитывать. Зависимость явно нелинейная, но в даташите должна быть информация.
Нифига не нашёл. В официальных бумагах выход 4-20мА, диапазон 0-2000 ppm и всё. Кстати там Modbus есть. @restiv нарисуй где-нить график, хоть в Екселе. Тогда будет наглядно видно кривизну. Оттуда уже плясать.
Самый простой вариант как с точки зрения программиста, так и с точки зрения расхода ресурсов МК - табличная функция.
Если есть такая возможность - сделать аргумент с постоянным шагом. Если нет, обращаем внимание, что массив упорядочен, и используем бинарный поиск.
Ну а дальше - либо кусочно-линейная функция, либо - сплайн.
Я так понял, что аналоговый пин не считывает напряжение с анализатора и выдает нулевое значение при 4 мА около 0,6 в. Почему не считывает - не могу понять. Уже пробовал менять GPIO с 0 на 1. Результат такой же.
Это язык программирования YAML, применяется в Home Assistant.
Что касается точности, нет прям высокая точность по любому не получится. Меня устроит и +/-10%.
А как вы снимали табличку из первого поста? Там написано, что она регистрировалась на пине А0 ЕСП. Почему тогда пин считывал, а теперь нет? Может подключили по другому?
А зачем было врать? Зачем писали что это данные с ЕСП, зачем градуировать табличку в единицах АЦП ?
Думаю Вам надо начать с любого примера использования функции analogRead() в Ардуино. На той плате, с которой собираетесь использовать сенсор - подключите пин А0 сначала к GND, а потом к 3в3 - и напишите что показывает.
Посторонние не поймут над чем мы ржем!
YAML == Yet Another Markup Language (Еще Один Язык Разметки). Это очередной способ разметки, чтобы описывать настройки чего-либо.
Как XML. В какой-то степени JSON. И собственно HTML.
Никому не придет в голову называть html языком программирования.
Кста. Просто вдруг по ассоциации вспомнил, У тебя нет ссылки на хорошую CSS анимацию сдачи карт, шоп летали красиво? Не могу от чатЖПТ добиться красивости. Он тупой, как Буратино! А сам я совершенно лево-полушарный человек. Понятие “красиво” от меня да другом полюсе.
Я давно не занимаюсь этим (веб-версткой, PHP и тп), поэтому не смогу помочь. Сейчас стили (что немного замечаю) стали ленивыми. Раньше для придания скругления элементу нужно было десятки строк написать описывая стиль, а сейчас это делается парой строк. Просто выдели время и почитай. Думаю есть (и не мало) подобного.