Драйвер 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, тем большее напряжение можно измерить на данном физическом канале.