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

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


== Технические детали реализации АЦП ==
== Технические детали реализации АЦП ==
Wiren Board имеет 8 каналов АЦП, которые мультиплексированы в один канал процессора (LRADC1).
Wiren Board имеет 8 каналов АЦП, которые мультиплексированы в один канал процессора (LRADC1).
===Опорное напряжение===
===Опорное напряжение===
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала (не реализовано в драйвере Linux, обратитесь к нам, если вам нужна эта возможность).
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала (не реализовано в драйвере Linux, обратитесь к нам, если вам нужна эта возможность).
=== Основные каналы===
=== Основные каналы===
Часть каналов АЦП выведена на клеммы параллельно с транзисторами управления низковольтной нагрузки.  
Часть каналов АЦП выведена на клеммы параллельно с транзисторами управления низковольтной нагрузки.  
Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП.
Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП.
=== Перевод значений ===
=== Перевод значений ===
На канале должен стоять делитель на два (пока нет).
На канале должен стоять делитель на два (пока нет).
Формула для перевода:
Формула для перевода:
Строка 26: Строка 17:
V_measured = N / 4095 * 1.85V * (R1+R2)/R2
V_measured = N / 4095 * 1.85V * (R1+R2)/R2
</pre>
</pre>
 
=== Списки АЦП для разных устройств ===
 
==== WB4 ====
=== WB4 ===
 
{| border="1"
{| border="1"
| клеммник || Делитель || Формула для пересчета  || Итоговая формула (без делителя) || V max || комментарии
| клеммник || Делитель || Формула для пересчета  || Итоговая формула (без делителя) || V max || комментарии
Строка 48: Строка 37:
|}
|}


=== WB3.5 ===
==== WB3.5 ====
 
{| border="1"
{| border="1"
| клеммник || Делитель|| Формула для пересчета || Итоговая формула || V max || комментарии
| клеммник || Делитель|| Формула для пересчета || Итоговая формула || V max || комментарии
Строка 65: Строка 53:
|}
|}


=== WB2.8 ===
==== WB2.8 ====
 
{| border="1"
{| border="1"
| клеммник || Делитель|| Формула для пересчета  || Итоговая формула || комментарии
| клеммник || Делитель|| Формула для пересчета  || Итоговая формула || комментарии

Версия 15:40, 13 апреля 2015

Как получить напряжение с АЦП из веб-интерфейса

  1. Выберите клемму, к которой можно подключить ваш источник, исходя из максимального допустимого напряжения (смотрите таблицу ниже).
  2. Большинство клеммников с функциями АЦП могут выполнять две функции: АЦП и управление низковольтной нагрузкой. Перед тем, как измерить напряжение на АЦП, поставьте соответствующий выход управления низковольтной нагрузкой в положение "выключено". Например, если вы подключаетесь к клемме A1, выключите в веб-интерфейсе A1_OUT (раздел Relays & FETs).
  3. Подключите ваш источник к клемме, напряжение с него сразу появится в веб-интерфейсе.

Технические детали реализации АЦП

Wiren Board имеет 8 каналов АЦП, которые мультиплексированы в один канал процессора (LRADC1).

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

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

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

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

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

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

V_measured = N / 4095 * 1.85V * (R1+R2)/R2

Списки АЦП для разных устройств

WB4

клеммник Делитель Формула для пересчета Итоговая формула (без делителя) V max комментарии
A1-A3 100k/100k N / 4095 * 1.85V * 2 V = N * 0.903 mV 7V
A4-A5 100k/12k N / 4095 * 1.85V * 9.33 V = N * 4.21 mV 30V
R1-R2 3k15/1M N / 4095 * 1.85V * 1.003 V = N * 0.453 mV 4V
li_pol 100k/100k N / 4095 * 1.85V * 2 V = N * 0.903 mV 7V на аккумуляторе
Vin 33k/4k53 N / 4095 * 1.85V * 8.28 V = N * 3.74 mV 30V входное напряжение, iio channel 0

WB3.5

клеммник Делитель Формула для пересчета Итоговая формула V max комментарии
A1-A4 220k/22k V = N / 4095 * 1.85V * 11 V = N * 4.97 mV
R1-R4 - V = N / 4095 * 1.85V V = N * 0.452 mV
Vin 33k/4k53 N / 4095 * 1.85V * 8.28 V = N * 3.74 mV 30V входное напряжение, iio channel: 0

WB2.8

клеммник Делитель Формула для пересчета Итоговая формула комментарии
A1-A7 12K/33K V = N / 4095 * 1.85V * 1.364 V = N * 0.616 mV

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)


Пример

  • Устанавливаем ADC на измерение напряжения на клеммнике A3:
root@wirenboard:~# wb-adc-set-mux A3
  • Считываем сырое значение ADC:
root@wirenboard:~# wb-adc-get-value
2523
  • Конвертируем значение
V = 2523 * 4.97 mV = 12539 mV = 12.54 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/