Перейти к содержанию

Навигация

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

Нет описания правки
 
(не показана 21 промежуточная версия 3 участников)
Строка 1: Строка 1:
<languages/>
<translate>
<!--T:1-->
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока.
Канал LRADC процессора, который в Wiren Board используется для работы АЦП имеет встроенный источник тока.
Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков.
Это делает возможным измерение сопротивлений нагрузки, подключенной к выходам АЦП, т.е. снятие показаний с резистивных датчиков.


См. также описание в  [[Freescale i.MX233|документации на процессор]], стр. 1334.
<!--T:2-->
См. также описание в  документации на процессор, стр. 1334 -[http://www.freescale.com/files/dsp/doc/ref_manual/IMX23RM.pdf Reference Manual]


<!--T:3-->
Измерение сопротивлений реализовано в драйвере wb-homa-adc, см. [[ADC|ADC]].


== Устройство канала ==
To Be Done...


Если к каналу АЦП подключен резистор, то


== Порядок измерений в ручном режиме == <!--T:4-->


Сопротивления:
<!--T:5-->
* Последовательно соеденены <b>r</b> - измеряемое, <b> R2 </b> - последовательное сопротивление канала
Убедитесь, что демон wb-homa-adc выгружен
* Параллельно к ним <b>R1</b> - плечо делителя.


Для разных версий:
=== Отключение выхода === <!--T:6-->
* Wiren Board Smart Home rev. 3.5: сопротивление <b>R2</b> = 470 Ohm  + некое эквивалентное сопротивление мультиплксора (~1kOhm).
 
R1=inf (делителя нет)
<!--T:7-->
* Wiren Board rev. 2.8.   сопротивление <b>R2</b> = 12kOhm  + некое эквивалентное сопротивление мультиплксора (~1kOhm).  R1=33.0 kOhm
(только для Wiren Board rev. 2.8)
* Для клеммников 2-7: закрыть транзистор. См [[Список GPIO|Список GPIO]], [[Управление низковольтной нагрузкой|Управление низковольтной нагрузкой]].
* Для клеммника 9: установить GPIO 2 в режим ввода ([[Работа с GPIO|Работа с GPIO]])
 
 
=== Выбора канала === <!--T:8-->
 
<!--T:9-->
С помощью wb-adc-set-mux выберите канал ([[ADC|ADC]])


== Формула для расчёта ==
<b> V </b> - напряжение на входе LRADC, измеряемое процессором.


<pre>
=== Установка выходного тока === <!--T:10-->
r = 1.0/(I/V  - 1/R1) - R2
</pre>


== Установка выходного тока ==
<!--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
Строка 41: Строка 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>
Строка 54: Строка 66:
</pre>
</pre>


== Порядок измерений ==
<!--T:18-->
=== Отключение выхода ===
* Для клеммников 2-7: закрыть транзистор. См [[Список GPIO]], [[Управление низковольтной нагрузкой]].
* Для клеммника 9: установить GPIO 2 в режим ввода ([[Работа с GPIO]])
 
=== Выбора канала ===
С помощью wb-adc-set-mux выберите канал ([[ADC]])
 
=== Установка выходного тока ===
Необходимо установить такое как можно большее значение выходного тока, при котором напряжение на 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
Строка 82: Строка 88:
</pre>
</pre>


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


=== Вычисление результата === <!--T:21-->
<!--T:22-->
Сопротивление вычисляется по формуле:
<!--T:23-->
<pre>
r = 1.0/(I/V  - 1/R1) - R2
</pre>
<!--T:24-->
<b>r</b> - измеряемое сопротивление, <b> R2 </b> - последовательное сопротивление канала
<!--T:25-->
<b>R1</b> - параллельное сопротивление (плечо делителя/токи утечки).
<!--T:26-->
<b> V </b> - напряжение на входе LRADC, измеряемое процессором:
<!--T:27-->
<pre>
<pre>
V =  N / 4095 * 1.85V
V =  N / 4095 * 1.85V
</pre>
</pre>


N - сырые показания LRADC, I - ток, R1 = 33kOhm, R2 ~ 13.3kOhm
<!--T:28-->
где N - сырые показания LRADC, I - выходной ток.
 
<!--T:29-->
Для разных версий:


=== Калибровка R2 ===
<!--T:30-->
Для увеличения точности можно измерить значение R2. Для этого надо соединить выход ADC с землёй: открыть транзистор (клеммники 2-7) или установить значение gpio в логический ноль (клеммник 8).
* Wiren Board 5 (клеммники R1-R2):  <b>R2 = 3150 Ohm, R1 = 1000kOhm</b>.
При этом <b>r = 0</b> и по формуле можно вычислить значение R2.
* Wiren Board 4 (клеммники R1-R2):  <b>R2 = 3570 Ohm, R1 = 120kOhm</b>.
* Wiren Board Smart Home rev. 3.5 (клеммники R1-R4): <b>R2 = 600 Ohm, R1 = 93kOhm</b>.
* Wiren Board rev. 2.8. <b>R2 = 12kOhm, R1 = 33.0 kOhm</b>.
</translate>