ADC:Измерение сопротивлений - технические детали: различия между версиями

Материал из Wiren Board
Строка 4: Строка 4:
См. также описание в  [[Freescale i.MX233|документации на процессор]], стр. 1334.
См. также описание в  [[Freescale i.MX233|документации на процессор]], стр. 1334.


== Устройство канала ==
Если к каналу АЦП подключен резистор, то
Сопротивления:
* Последовательно соеденены <b>r</b> - измеряемое, <b> R2 </b> - последовательное сопротивление канала
* Параллельно к ним <b>R1</b> - плечо делителя/токи утечки.
Для разных версий:
* Wiren Board Smart Home rev. 3.5:  сопротивление <b>R2</b> = 620 Ohm.
R1=93kOhm.
* Wiren Board rev. 2.8.  сопротивление <b>R2</b> = 12kOhm  + некое эквивалентное сопротивление мультиплексора (~1kOhm).  R1=33.0 kOhm


== Формула для расчёта ==
== Формула для расчёта ==

Версия 15:45, 29 сентября 2014

Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков.

См. также описание в документации на процессор, стр. 1334.


Формула для расчёта

V - напряжение на входе LRADC, измеряемое процессором.

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

Установка выходного тока

Установка выходного тока не поддерживается драйвером, поэтому реализуется с помощью userspace-приложения с прямым доступом в память.

Команда lradc-set-current (https://github.com/contactless/wirenboard/tree/master/utils/adc/resistance).


root@wirenboard:~# lradc-set-current
Set output current for LRADC1 channel
USAGE: ./lradc_current <uA>|off
Available currents: 0uA, 20uA, ..., 280uA, 300uA
Use "off" to switch off current source. 0uA setting could result in some current

Максимальный ток - 300 мкА. Ток устанавливается с шагом в 20 мкА.

Установка тока в 100 мкА:

root@wirenboard:~# lradc-set-current 100

Отключение источника тока:

root@wirenboard:~# lradc-set-current off

Порядок измерений

Отключение выхода

Выбора канала

С помощью wb-adc-set-mux выберите канал (ADC)

Установка выходного тока

Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на LRADC не зашкаливает за 1.85V, т.е. сырой результат не равен 4095.

В примере 40 мкА - оптимальный ток:

root@wirenboard:~# lradc-set-current 100
root@wirenboard:~# wb-adc-get-value
4095
root@wirenboard:~# lradc-set-current 20 
root@wirenboard:~# wb-adc-get-value
1663
root@wirenboard:~# lradc-set-current 60
root@wirenboard:~# wb-adc-get-value
4095
root@wirenboard:~# lradc-set-current 40
root@wirenboard:~# wb-adc-get-value
3154

Вычисление результата

Сопротивление вычисляется по формуле, указанной выше. При этом

V =  N / 4095 * 1.85V

N - сырые показания LRADC, I - ток, R1 = 33kOhm, R2 ~ 13.3kOhm

Калибровка R2

Для увеличения точности можно измерить значение R2. Для этого надо соединить выход ADC с землёй: открыть транзистор (клеммники 2-7) или установить значение gpio в логический ноль (клеммник 8). При этом r = 0 и по формуле можно вычислить значение R2.