ADC:Измерение сопротивлений - технические детали: различия между версиями
м |
(Отметить эту версию для перевода) |
||
Строка 1: | Строка 1: | ||
<languages/> | <languages/> | ||
<translate> | <translate> | ||
<!--T:1--> | |||
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. | Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. | ||
Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков. | Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков. | ||
<!--T:2--> | |||
См. также описание в [[Freescale i.MX233|документации на процессор]], стр. 1334. | См. также описание в [[Freescale i.MX233|документации на процессор]], стр. 1334. | ||
<!--T:3--> | |||
Измерение сопротивлений реализовано в драйвере wb-homa-adc, см. [[ADC|ADC]]. | Измерение сопротивлений реализовано в драйвере wb-homa-adc, см. [[ADC|ADC]]. | ||
== Порядок измерений в ручном режиме == | == Порядок измерений в ручном режиме == <!--T:4--> | ||
<!--T:5--> | |||
Убедитесь, что демон wb-homa-adc выгружен | Убедитесь, что демон wb-homa-adc выгружен | ||
=== Отключение выхода === | === Отключение выхода === <!--T:6--> | ||
<!--T:7--> | |||
(только для Wiren Board rev. 2.8) | (только для Wiren Board rev. 2.8) | ||
* Для клеммников 2-7: закрыть транзистор. См [[Список GPIO|Список GPIO]], [[Управление низковольтной нагрузкой|Управление низковольтной нагрузкой]]. | * Для клеммников 2-7: закрыть транзистор. См [[Список GPIO|Список GPIO]], [[Управление низковольтной нагрузкой|Управление низковольтной нагрузкой]]. | ||
Строка 21: | Строка 26: | ||
=== Выбора канала === | === Выбора канала === <!--T:8--> | ||
<!--T:9--> | |||
С помощью wb-adc-set-mux выберите канал ([[ADC|ADC]]) | С помощью wb-adc-set-mux выберите канал ([[ADC|ADC]]) | ||
=== Установка выходного тока === | === Установка выходного тока === <!--T:10--> | ||
<!--T:11--> | |||
Установка выходного тока не поддерживается драйвером, поэтому реализуется с помощью userspace-приложения с прямым доступом в память. | Установка выходного тока не поддерживается драйвером, поэтому реализуется с помощью userspace-приложения с прямым доступом в память. | ||
<!--T:12--> | |||
Команда <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). | ||
<!--T:13--> | |||
<pre> | <pre> | ||
root@wirenboard:~# lradc-set-current | root@wirenboard:~# lradc-set-current | ||
Строка 40: | Строка 49: | ||
</pre> | </pre> | ||
<!--T:14--> | |||
Максимальный ток - 300 мкА. Ток устанавливается с шагом в 20 мкА. | Максимальный ток - 300 мкА. Ток устанавливается с шагом в 20 мкА. | ||
<!--T:15--> | |||
Установка тока в 100 мкА: | Установка тока в 100 мкА: | ||
<!--T:16--> | |||
<pre> | <pre> | ||
root@wirenboard:~# lradc-set-current 100 | root@wirenboard:~# lradc-set-current 100 | ||
</pre> | </pre> | ||
<!--T:17--> | |||
Отключение источника тока: | Отключение источника тока: | ||
<pre> | <pre> | ||
Строка 53: | Строка 66: | ||
</pre> | </pre> | ||
<!--T:18--> | |||
Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на LRADC не зашкаливает за 1.85V, т.е. сырой результат не равен 4095. | Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на LRADC не зашкаливает за 1.85V, т.е. сырой результат не равен 4095. | ||
<!--T:19--> | |||
В примере 40 мкА - оптимальный ток: | В примере 40 мкА - оптимальный ток: | ||
<!--T:20--> | |||
<pre> | <pre> | ||
root@wirenboard:~# lradc-set-current 100 | root@wirenboard:~# lradc-set-current 100 | ||
Строка 73: | Строка 89: | ||
=== Вычисление результата === | === Вычисление результата === <!--T:21--> | ||
<!--T:22--> | |||
Сопротивление вычисляется по формуле: | Сопротивление вычисляется по формуле: | ||
<!--T:23--> | |||
<pre> | <pre> | ||
r = 1.0/(I/V - 1/R1) - R2 | r = 1.0/(I/V - 1/R1) - R2 | ||
</pre> | </pre> | ||
<!--T:24--> | |||
<b>r</b> - измеряемое сопротивление, <b> R2 </b> - последовательное сопротивление канала | <b>r</b> - измеряемое сопротивление, <b> R2 </b> - последовательное сопротивление канала | ||
<!--T:25--> | |||
<b>R1</b> - параллельное сопротивление (плечо делителя/токи утечки). | <b>R1</b> - параллельное сопротивление (плечо делителя/токи утечки). | ||
<!--T:26--> | |||
<b> V </b> - напряжение на входе LRADC, измеряемое процессором: | <b> V </b> - напряжение на входе LRADC, измеряемое процессором: | ||
<!--T:27--> | |||
<pre> | <pre> | ||
V = N / 4095 * 1.85V | V = N / 4095 * 1.85V | ||
</pre> | </pre> | ||
<!--T:28--> | |||
где N - сырые показания LRADC, I - выходной ток. | где N - сырые показания LRADC, I - выходной ток. | ||
<!--T:29--> | |||
Для разных версий: | Для разных версий: | ||
<!--T:30--> | |||
* Wiren Board 5 (клеммники R1-R2): <b>R2 = 3150 Ohm, R1 = 1000kOhm</b>. | * Wiren Board 5 (клеммники R1-R2): <b>R2 = 3150 Ohm, R1 = 1000kOhm</b>. | ||
* Wiren Board 4 (клеммники R1-R2): <b>R2 = 3570 Ohm, R1 = 120kOhm</b>. | * Wiren Board 4 (клеммники R1-R2): <b>R2 = 3570 Ohm, R1 = 120kOhm</b>. |
Версия 10:55, 24 мая 2019
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока. Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков.
См. также описание в документации на процессор, стр. 1334.
Измерение сопротивлений реализовано в драйвере wb-homa-adc, см. ADC.
Порядок измерений в ручном режиме
Убедитесь, что демон wb-homa-adc выгружен
Отключение выхода
(только для Wiren Board rev. 2.8)
- Для клеммников 2-7: закрыть транзистор. См Список GPIO, Управление низковольтной нагрузкой.
- Для клеммника 9: установить GPIO 2 в режим ввода (Работа с GPIO)
Выбора канала
С помощью wb-adc-set-mux выберите канал (ADC)
Установка выходного тока
Установка выходного тока не поддерживается драйвером, поэтому реализуется с помощью 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
Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на 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
Вычисление результата
Сопротивление вычисляется по формуле:
r = 1.0/(I/V - 1/R1) - R2
r - измеряемое сопротивление, R2 - последовательное сопротивление канала
R1 - параллельное сопротивление (плечо делителя/токи утечки).
V - напряжение на входе LRADC, измеряемое процессором:
V = N / 4095 * 1.85V
где N - сырые показания LRADC, I - выходной ток.
Для разных версий:
- Wiren Board 5 (клеммники R1-R2): R2 = 3150 Ohm, R1 = 1000kOhm.
- Wiren Board 4 (клеммники R1-R2): R2 = 3570 Ohm, R1 = 120kOhm.
- Wiren Board Smart Home rev. 3.5 (клеммники R1-R4): R2 = 600 Ohm, R1 = 93kOhm.
- Wiren Board rev. 2.8. R2 = 12kOhm, R1 = 33.0 kOhm.