Wb 5.8 измерение напряжения на входе

Добрый день, подскажите пожалуйста, в наличии 2 контроллера WB5.8
1wb
cat /sys/bus/iio/devices/iio:device0/in_voltage5_raw
3239 ( * 3.8 / 1000 = 12,30) - соответстует входному напряжению

2wb
cat /sys/bus/iio/devices/iio:device0/in_voltage5_raw
1635 ( * 3.8 / 1000 = 6,21) - примерно в 2 раза ниже чем подается на вход

С чем это может быть связано.

Здравствуйте!

Подскажите пожалуйста, а почему вы решили читать из sysfs, вместо того, чтобы пользоваться нашим системным драйвером?

Его значения (которые в веб-интерфейсе показываются) тоже тривиально из командной строки можно прочитать.

Задача читать из командной строки без использования mqtt, этот способ я нашел в документации, если есть более правильный способ укажите пожалуйста.
И все же очень интересно с чем связаны разные значения.

Есть способ читать с использованием MQTT, но из командой строки.

mosquitto_sub -C 1  -t /devices/wb-adc/controls/A1

MQTT - это официально поддерживаемый способ чтения напряжения на наших контроллерах.
Так что предлагаю так: вы рассказываете подробнее почему у вас возникла задача читать без MQTT, а я вам рассказываю почему могут быть разные значения и заодно пытаюсь уговорить работать через наш стандартный интерфейс :slight_smile:

Скрипт у меня на python, mqtt использую только для связи с интерфейсом, ранее частично использовал mqtt и сервисы wb, напряжение на входе использую для определения статуса питания (сеть-акб), wb подключен к блоку питания с функцией ББП, поэтому если значение на входе WB > 12 вольт, значит работает от сети, < 12 значит работет от батареи. При использовании mqtt и получении значения через подписку на соответствующий топик, было замечено в процессе тестирования несколько раз за месяц что при отключении от сети (значение меньше 12 вольт, проверял мультиметром) от mqtt так и приходило >12, до перезагрузки WB. Для меня диагностировать такое поведение оказалось проблематично, поэтому почитав документацию стал читать из sysfs, что решило проблему, 4 месяца работает без проблем. Но на 2 контроллере, купленном позднее показывает в 2 раза меньше.

Останавливаю сервис wb-homa-adc через sysfs показывает адекватное напряжение
Запускаю сервис wb-homa-adc через sysfs показывает в 2 раза меньше

Для сценариев я очень рекомендую использовать наш движок правил wb-rules. Там к сожалению не Python, а JS, зато объём кода, который нужно будет написать получится в несколько раз меньше, за счёт того, что движок очень многое берёт на себя.

Давайте всё-таки продиагностируем, мы поможем. Пользовались wbmqtt или напрямую подписывались на топики через mosquitto? На какой конкретно топик подписывались? В веб-интерфейсе значение менялось нормально?

Это всё довольно сложные штуки, к тому же аппаратно-специфичные. Поэтому мы и рекомендуем работать через MQTT и поэтому написали wb-homa-adc.

В вашем случае, скорее всего, дело в делителе. Дело в том, что каналы АЦП имеют настраиваемый делитель пополам, который можно активировать для увеличения точности. Наш драйвер расставляет эти делители автоматически, чтобы точность была наибольшей.

Правильный способ читать данные из /sysfs/ (ещё раз оговорюсь: способ официально не поддерживается кроме специальных случаев): взять число из in_voltageX_raw и умножить его на значение из in_voltageX_scale . Это получится значение в милливольтах на входе АЦП. Дальше это значение нужно умножить на коэффициент, задаваемый внешним делителем.

Большое спасибо за ответ, постараюсь выделить время и вернуть считывание значений через wb-homa-adc, попробую отловить этот момент и разобраться.
Подписывался через python mosquitto не на конкретный топик, а на /devices/wb-adc/controls/#.

Здравствуйте! Можно по подробней про /sysfs/ ?
У нас wb5 и на нём слишком большая погрешность.
Если мультиметром замерять 9.80в, в вёб морде на А1 8.51в.
Или можно в настройках вёб морды как-то это исправить?

А на чем измеряете напряжение? Возможно дело не в погрешности, а в падении напряжения из-за небольшого входного сопротивления (100кОм) канала А1. Проведите измерение мультиметром при подключенном канале А1.

изначально при подключенном и измерял)