ADC:Измерение сопротивлений - технические детали: различия между версиями
Fizikdaos (обсуждение | вклад) |
|||
(не показаны 24 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. | Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. | ||
Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков. | Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков. | ||
См. также описание в [[Freescale i.MX233|документации на процессор]], стр. 1334. | |||
См. также описание в документации на процессор, стр. 1334 | |||
== Устройство канала == | |||
To Be Done... | |||
Если к каналу АЦП подключен резистор, то | |||
< | Сопротивления: | ||
* Последовательно соеденены <b>r</b> - измеряемое, <b> R2 </b> - сопротивление 12kOhm + некое эквивалентное сопротивление мультиплксора (~1kOhm). | |||
* Параллельно к ним <b>R1=33.0 kOhm</b> - плечо делителя. | |||
== | == Формула для расчёта == | ||
<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: | Строка 36: | ||
</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: | Строка 49: | ||
</pre> | </pre> | ||
== Порядок измерений == | |||
=== Отключение выхода === | |||
* Для клеммников 2-7: закрыть транзистор. См [[Список GPIO]], [[Управление низковольтной нагрузкой]]. | |||
* Для клеммника 9: установить GPIO 2 в режим ввода ([[Работа с GPIO]]) | |||
=== Выбора канала === | |||
С помощью adc_set_channel.sh выберите канал ([[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: | Строка 77: | ||
</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. | |||
Версия 03:13, 25 мая 2014
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков.
См. также описание в документации на процессор, стр. 1334.
Устройство канала
To Be Done...
Если к каналу АЦП подключен резистор, то
Сопротивления:
- Последовательно соеденены r - измеряемое, 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)
Выбора канала
С помощью adc_set_channel.sh выберите канал (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.