ADC:Измерение сопротивлений - технические детали: различия между версиями
Fizikdaos (обсуждение | вклад) |
Fizikdaos (обсуждение | вклад) |
||
(не показано 20 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. | Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. | ||
Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков. | Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков. | ||
См. также описание в [[Freescale i.MX233|документации на процессор]], стр. 1334. | |||
См. также описание в документации на процессор, стр. 1334 | |||
== Устройство канала == | |||
Если к каналу АЦП подключен резистор, то | |||
< | Сопротивления: | ||
* Последовательно соеденены <b>r</b> - измеряемое, <b> R2 </b> - последовательное сопротивление канала | |||
* Параллельно к ним <b>R1</b> - плечо делителя/токи утечки. | |||
=== | Для разных версий: | ||
* Wiren Board Smart Home rev. 3.5: сопротивление <b>R2</b> = 470 Ohm + сопротивление мультиплексора (~200 Ohm). | |||
R1=93kOhm. | |||
* Wiren Board rev. 2.8. сопротивление <b>R2</b> = 12kOhm + некое эквивалентное сопротивление мультиплексора (~1kOhm). R1=33.0 kOhm | |||
< | == Формула для расчёта == | ||
<b> V </b> - напряжение на входе LRADC, измеряемое процессором. | |||
<pre> | |||
r = 1.0/(I/V - 1/R1) - R2 | |||
</pre> | |||
== Установка выходного тока == | |||
Установка выходного тока не поддерживается драйвером, поэтому реализуется с помощью userspace-приложения с прямым доступом в память. | Установка выходного тока не поддерживается драйвером, поэтому реализуется с помощью userspace-приложения с прямым доступом в память. | ||
Команда <b>lradc-set-current</b> (https://github.com/contactless/wirenboard/tree/master/utils/adc/resistance). | Команда <b>lradc-set-current</b> (https://github.com/contactless/wirenboard/tree/master/utils/adc/resistance). | ||
<pre> | <pre> | ||
root@wirenboard:~# lradc-set-current | root@wirenboard:~# lradc-set-current | ||
Строка 49: | Строка 40: | ||
</pre> | </pre> | ||
Максимальный ток - 300 мкА. Ток устанавливается с шагом в 20 мкА. | Максимальный ток - 300 мкА. Ток устанавливается с шагом в 20 мкА. | ||
Установка тока в 100 мкА: | Установка тока в 100 мкА: | ||
<pre> | <pre> | ||
root@wirenboard:~# lradc-set-current 100 | root@wirenboard:~# lradc-set-current 100 | ||
</pre> | </pre> | ||
Отключение источника тока: | Отключение источника тока: | ||
<pre> | <pre> | ||
Строка 66: | Строка 53: | ||
</pre> | </pre> | ||
== Порядок измерений == | |||
=== Отключение выхода === | |||
* Для клеммников 2-7: закрыть транзистор. См [[Список GPIO]], [[Управление низковольтной нагрузкой]]. | |||
* Для клеммника 9: установить GPIO 2 в режим ввода ([[Работа с GPIO]]) | |||
=== Выбора канала === | |||
С помощью wb-adc-set-mux выберите канал ([[ADC]]) | |||
=== Установка выходного тока === | |||
Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на LRADC не зашкаливает за 1.85V, т.е. сырой результат не равен 4095. | Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на LRADC не зашкаливает за 1.85V, т.е. сырой результат не равен 4095. | ||
В примере 40 мкА - оптимальный ток: | В примере 40 мкА - оптимальный ток: | ||
<pre> | <pre> | ||
root@wirenboard:~# lradc-set-current 100 | root@wirenboard:~# lradc-set-current 100 | ||
Строка 88: | Строка 81: | ||
</pre> | </pre> | ||
=== Вычисление результата === | |||
Сопротивление вычисляется по формуле, указанной выше. | |||
При этом | |||
<pre> | <pre> | ||
V = N / 4095 * 1.85V | V = N / 4095 * 1.85V | ||
</pre> | </pre> | ||
N - сырые показания LRADC, I - ток, R1 = 33kOhm, R2 ~ 13.3kOhm | |||
=== Калибровка R2 === | |||
Для увеличения точности можно измерить значение R2. Для этого надо соединить выход ADC с землёй: открыть транзистор (клеммники 2-7) или установить значение gpio в логический ноль (клеммник 8). | |||
При этом <b>r = 0</b> и по формуле можно вычислить значение R2. | |||
Версия 15:39, 29 сентября 2014
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков.
См. также описание в документации на процессор, стр. 1334.
Устройство канала
Если к каналу АЦП подключен резистор, то
Сопротивления:
- Последовательно соеденены r - измеряемое, R2 - последовательное сопротивление канала
- Параллельно к ним R1 - плечо делителя/токи утечки.
Для разных версий:
- Wiren Board Smart Home rev. 3.5: сопротивление R2 = 470 Ohm + сопротивление мультиплексора (~200 Ohm).
R1=93kOhm.
- Wiren Board rev. 2.8. сопротивление R2 = 12kOhm + некое эквивалентное сопротивление мультиплексора (~1kOhm). R1=33.0 kOhm
Формула для расчёта
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
Порядок измерений
Отключение выхода
- Для клеммников 2-7: закрыть транзистор. См Список GPIO, Управление низковольтной нагрузкой.
- Для клеммника 9: установить GPIO 2 в режим ввода (Работа с GPIO)
Выбора канала
С помощью 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.