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

Материал из Wiren Board
м
(Отметить эту версию для перевода)
Строка 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)


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

С помощью 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.