ADC: различия между версиями

Материал из Wiren Board
Строка 36: Строка 36:


<pre>
<pre>
  /opt/utils/adc/adc_set_channel.sh tb<номер клеммника>
  wb-adc-set-mux <номер канала>
или
или
  /opt/utils/adc/adc_set_channel.sh vin
  wb-adc-set-mux <A1|A2|A3|A4|R1|R2|R3|R4> (для WB Smart Home)
или
или
  /opt/utils/adc/adc_set_channel.sh <номер канала>
  wb-adc-set-mux tb<номер клеммника> (для WB2.8)
 
или
wb-adc-set-mux vin  (для WB2.8)
</pre>
</pre>


Строка 50: Строка 51:
3838
3838
</pre>
</pre>
или
<pre>
root@wirenboard:~# wb-adc-get-value
3838
</pre>
*Чтение показаний c предварительной установкой канала:
<pre>
wb-adc-read-channel <A1|A2|A3|A4|R1|R2|R3|R4> (для WB Smart Home, опции аналогичны wb-adc-set-mux)
</pre>
=== Перевод значений ===
=== Перевод значений ===


Строка 58: Строка 72:
</pre>
</pre>


Итого, для напряжения на клеммниках с учётом входного делителя:
==== Wiren Board Smart Home rev. 3.5 ====
Итого, для напряжения на клеммниках A1-A4 с учётом входного делителя:
<pre>
V = N / 4095 * 1.85V * 11 =
V = N * 4.97 mV = N * 0.00497 V
</pre>
 
 
==== Wiren Board rev. 2.8 ====
Итого, для напряжения на клеммниках с учётом входного делителя (WB rev. 2.8):
<pre>
<pre>
V = N / 4095 * 1.85V * 1.364 =  
V = N / 4095 * 1.85V * 1.364 =  
Строка 64: Строка 87:
</pre>
</pre>


Для входного напряжения (канал <b>vin</b>)
Для входного напряжения (канал <b>vin</b>) (WB rev. 2.8)
<pre>
<pre>
V = N / 4095 * 1.85V * 7.061 =  
V = N / 4095 * 1.85V * 7.061 =  

Версия 03:09, 25 мая 2014

Wiren Board has 8-channel ADC which are multiplexed using analog multiplexer into i.mx233 LRADC1 channel.

Опорное напряжение

Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала (не реализовано в драйвере Linux, обратитесь к нам, если вам нужна эта возможность).


Основные каналы

Часть каналов АЦП выведена на клеммы паралельно с транзисторами управления низковольтной нагрузки.

Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП.


WB Smart Home rev. 3.5

4 канала АЦП выведено на клеммники A1-A4, 4 канала - на клеммники R1-R4.

На каналах А1-А4 стоят делители 220k/22k, входное напряжение для каждого канала вычисляется как 11 * <измеренное напряжение>. На каналах R1-R4 делители не установлены, входное напряжение для каждого канала равно измеренному напряжению.


WB rev. 2.8

7 каналов выведены на клемники, см. Список GPIO На основных каналах стоят резисторные делители 12K/33K. Поэтому входное напряжение для каждого канала вычисляется как 1.364 * <измеренное напряжение>.

Максимальное измеряемое напряжение 5В.

Измерение входного напряжения

5-ый канал мультиплексора предназначен для измерения входного напряжения. Канал имеет делитель 200K/33K, поэтому входное напряжение определяется как 7.061 * <измеренное напряжение>. Максимальное измеряемое напряжение - 26В.

Software

АЦП мультиплексор подключен к порту LRADC1.

  • Выбор канала:
 wb-adc-set-mux <номер канала>
или
 wb-adc-set-mux <A1|A2|A3|A4|R1|R2|R3|R4> (для WB Smart Home)
или
 wb-adc-set-mux tb<номер клеммника> (для WB2.8)
или
 wb-adc-set-mux vin  (для WB2.8)
  • Чтение показаний:
root@wirenboard:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw 
3838

или

root@wirenboard:~# wb-adc-get-value
3838
  • Чтение показаний c предварительной установкой канала:
 wb-adc-read-channel <A1|A2|A3|A4|R1|R2|R3|R4> (для WB Smart Home, опции аналогичны wb-adc-set-mux)


Перевод значений

На канале должен стоять делитель на два (пока нет). Формула для перевода:

V_measured = N / 4095 * 1.85V 

Wiren Board Smart Home rev. 3.5

Итого, для напряжения на клеммниках A1-A4 с учётом входного делителя:

V = N / 4095 * 1.85V * 11 = 
V = N * 4.97 mV = N * 0.00497 V


Wiren Board rev. 2.8

Итого, для напряжения на клеммниках с учётом входного делителя (WB rev. 2.8):

V = N / 4095 * 1.85V * 1.364 = 
V = N * 0.61621 mV = N * 0.00061621 V

Для входного напряжения (канал vin) (WB rev. 2.8)

V = N / 4095 * 1.85V * 7.061 = 
V = N * 3.18900 mV = N * 0.0031900 V


Пример

  • Устанавливаем ADC на измерение напряжения на клеммнике 9:
root@wirenboard:~# /opt/utils/adc/adc_set_channel.sh tb9
set mux c,b,a = 1,1,1
  • Считываем сырое значение ADC:
root@wirenboard:~# /opt/utils/adc/adc_get_value.sh
2523
  • Конвертируем значение
V = 2523 * 0.61621 mV = 1555 mV = 1.555 V

Проблема со звуковым драйвером

Процессор может мультиплексировать источник MIC BIAS на вывод LRADC1. Такое поведение по-умолчанию включено в драйверах звука. Отключается патчем [1], который применён к ядру из поставки Wiren Board.

Измерение сопротивлений

См. ADC:Измерение сопротивлений


Напряжение аккумулятора

 cat /sys/bus/iio/devices/iio:device0/in_voltage7_raw

для преобразования в вольты: значение/ 4095.0 * 1.85 * 4 .

см.

http://contactless.ru/forums/topic/%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81-%D0%B0%D0%BA%D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0-%D0%B2-linux/