Skip to content

Latest commit

 

History

History
151 lines (124 loc) · 6.9 KB

File metadata and controls

151 lines (124 loc) · 6.9 KB

wb-homa-adc

Драйвер ADC запускается командой /etc/init.d/wb-homa-modbus start При запуске драйвер считывает конфигурацию для каналов с файла /etc/wb-homa-adc.conf, ниже приведен пример конфигурационного файла с объяснением параметров.

// Configuration options
{
    // Под каким именем будет опубликовано устройство в MQTT
    // то есть ../meta/name ADCs
    "device_name" : "ADCs",
    "debug" : false,
    "iio_channels" : [
        {
    // режим работы драйвера однопоточный, данное значение указывает
    // сколько раз считать значение в данном канале за один проход,
    // по умолчанию 10
                "readings_number" : 10,

    // указывает сколько значащих цифр после запятой выводить у данного канала
    // по умолчанию 3
                "decimal_places" : 3,
    // указывает по скольки выборкам происходит усреднение значения
    // указывается в кратных от readings_number, в примере 4 * readings_number
                "averaging_window": 4,

    // номер физического канала, указывает с какого файла будет читаться значение :
    // /bus/iio/devices/iio:device0/in_voltage1_raw , т.е. in_voltageНОМЕРКАНАЛА_raw
                "channel_number" : 0,
    // указывает максимальное значение напряжение, которое может быть измерено
    // на данном канале (следует задавать только для особых физических каналов),
    // например 7 канал, с большими значениями scale
                "max_voltage" : 15,

    // под каким id будет публиковаться данный канал в MQTT
    // то есть /devices/wb-adc/controls/ID
                "id" : "Vin",
                "multiplier" : 3.73

        },

        {
    // тип mux указывает, что канал мультиплексированный
            "type" : "mux",

            "averaging_window": 4,

    // указывает сколько времени драйверу ждать после переключения
    // мультиплексора

            "min_switch_interval_ms": 100,

   // гпио, которые переключают мультиплексор, важно расположить
   // в правильном порядке, по умолчанию, поставлены корректно.
            "gpios" : [51, 57, 54],
            "channels" : [
    // порядок в котором каналы будут публиковаться в MQTT
    // совпадает с порядком, по которому они перечислены в конфиге
                    {
                        "id" : "A1",
                        "multiplier" : 0.903,

    // к какому мультиплексированному каналу АЦП привязан данный канал
                        "mux_channel_number" : 3
                        "readings_number" : 10,
                    },
                    {
                        "id" : "A2",
                        "multiplier" : 0.903,
                        "mux_channel_number" : 4

                    },
                    {
                        "id" : "A3",
                        "multiplier" : 0.903,
                        "mux_channel_number" : 6

                    },
                    {
                        "id" : "A4",
                        "multiplier" : 3.73,
                        "mux_channel_number" : 0
                    },
                    {
                        "id" : "A5",
                        "multiplier" : 3.73,
                        "mux_channel_number" : 1

                    },
                    {
                        "id" : "R1",
                        "multiplier" : 0.497,
                        "mux_channel_number" : 7,
    // указывает на какой канал мультиплексору следует переключиться для разрядки
    // (использовать для каналов R1-R2) перед тем как переключиться на данный канал
                        "discharge_channel" : 3


                    },
                    {
                        "id" : "R2",
                        "multiplier" : 0.497,
                        "mux_channel_number" : 5,
                        "discharge_channel" : 3

                    },
                    {
                        "id" : "li_pol",
                        "multiplier" : 1.694,
                        "mux_channel_number" : 2

                    }
                ]
        }
    ]
}

Для измерения сопротивлений с помощью драйвера ADC в конфигурационном файле /etc/wb-homa-adc.conf, для того канала, на котором будет измеряться сопротивление, требуется поменять тип канала и указать необходимые параметры, пример :

{
    "id" : "A1",
    "mux_channel_number" : 0,
    "resistance1" : "93kOhm",
    "resistance2" : "600Ohm",
    "type" : "ohm_meter",
    "current" : 80
}

Расчет сопротивления проходит по формуле:

r = 1.0/(I/V  - 1/R1) - R2

При указании сопротивлений, можно использовать Mohm, kohm или ohm в качестве единиц измерения, пробел между числом и единицами измерения не ставится. Ток указывать просто числом, единицы измерения тока мкА. Максимальный ток 300 мкА. Ток устанавливается с шагом в 20 мкА.

Драйвер ADC считывает с файла in_voltageНОМЕРКАНАЛА_scale_available (если он существует) возможные значения scale, максимальное из них записывается в файл in_voltageНомерКанала_scale. Множитель scale отвечает за перевод значений считанных с in_voltageНомерКанала_raw в вольты, соответственно чем больше scale, тем большее напряжение можно измерить на данном физическом канале.