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

Материал из Wiren Board
(Отметить эту версию для перевода)
(не показаны 62 промежуточные версии 5 участников)
Строка 1: Строка 1:
<languages/><translate>
== Как получить напряжение с АЦП ==
{{DISPLAYTITLE: Аналоговые входы (АЦП)}}
#Выберите клемму, к которой можно подключить ваш источник, исходя из максимального допустимого напряжения (смотрите таблицу ниже).
== Определения == <!--T:55-->
#Большинство клеммников с функциями АЦП могут выполнять две функции: АЦП и управление низковольтной нагрузкой. Перед тем, как измерить напряжение на АЦП, поставьте соответствующий выход управления низковольтной нагрузкой в положение "выключено". Например, если вы подключаетесь к клемме A1, выключите в веб-интерфейсе A1_OUT (раздел Relays & FETs).
'''Аналого-цифровые преобразователи (АЦП)''' — устройства предназначенные для преобразования входных аналоговых сигналов в цифровой код.  
#:Подробнее смотрите [[Мультиплексирование портов]]
#Подключите ваш источник к клемме. Значение напряжения сразу появится в [[Wiren Board 4:Веб-интерфейс | веб-интерфейсе]]. Также значение транслируется в систему сообщений [[MQTT]].


<!--T:56-->
== Технические детали реализации АЦП ==
'''Аналоговые входы''' — представляют собой входы АЦП и служат для измерения поданного на них напряжения. Аналоговые входы в устройствах автоматики предназначены для подключения к ним датчиков с [[AnalogSensors_connecting | выходным аналоговым сигналом]].
Wiren Board имеет 8 каналов АЦП, которые мультиплексированы в один канал процессора (LRADC1). Каналы мультиплексирования указаны в таблице [[Wiren Board 4:Список GPIO]]
===Опорное напряжение===
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала
=== Основные каналы===
Часть каналов АЦП выведена на клеммы параллельно с транзисторами управления низковольтной нагрузки. '''Убедитесь''', что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП. Подробнее смотрите [[Мультиплексирование портов]]
=== Перевод значений ===
На канале должен стоять делитель на два (пока нет).
Формула для перевода:
<pre>
V_measured = N / 4095 * 1.85V * (R1+R2)/R2
</pre>
=== Списки АЦП для разных устройств ===
==== WB4 ====
{| border="1"
| клеммник || Делитель || Формула для пересчета  || Итоговая формула (без делителя) || V макс. измеряемое (с делителем)  || комментарии
|-


== Аналоговые входы в контроллере Wiren Board == <!--T:57-->
| A1-A3 || 100k/90.9k || N / 4095 * 1.85V * 2.100 || V = N * 0.949 mV || 7.4V ||
=== Wiren Board 6 === 
|-
В Wiren Board 6 каналы АЦП процессора подключены к клеммникам A1-A4. Также на АЦП заведено входное напряжение (после входных диодов) и напряжение на клемме 5Vout.
| A4-A5 || 100k/11.86k || N / 4095 * 1.85V * 9.43  || V = N * 4.21 mV || 34.4V ||
=== Wiren Board 7 ===  
|-
Wiren Board 7 каналы АЦП процессора подключены к клеммникам A1-A3. Напряжения на клемме D1 и на клемме 5Vout не измеряются.
| R1-R2 || 3k15/1M || N / 4095 * 1.85V * 1.003 || V = N * 0.426 mV || 3.7V ||
<gallery mode="packed" heights="100px" caption="Универсальные входы-выходы">
|-
Image: WB6_AI_DI.PNG| Wiren Board 6
| li_pol || 100k/90.9k || N / 4095 * 1.85V * 2.100 || V = N * 0.949 mV || - || на аккумуляторе
Image: WB7_AI_DI.PNG| Wiren Board 7
|-
Image: WB6.Ax.png| Схема Ax
Image: WB7.D1.png| Схема D1 в Wiren Board 7
</gallery>
== Измерение напряжения ==
=== Подключение и настройка ===
#Напряжение должно быть в диапазоне допустимых значений.
#Клеммники Ax выполняют две функции: АЦП и управление низковольтной нагрузкой. Перед измерением напряжение, поставьте соответствующий выход управления низковольтной нагрузкой в положение «выключено». Например, если вы подключаетесь к клемме A1, выключите в [[Веб-интерфейс Wiren Board | веб-интерфейсе]] A1_OUT (раздел Relays & FETs).
#Подключите ваш источник к клемме Ax. Значение напряжения сразу появится в [[Веб-интерфейс Wiren Board | веб-интерфейсе]], в устройстве ADCs. Также значение транслируется в систему сообщений [[Special:MyLanguage/MQTT|MQTT]].
=== Отображение измеренного напряжения === 
Демон wb-homa-adc транслирует значение в очередь сообщений MQTT в топик  /devices/wb-adc/controls/Vin .
Таким образом, значение отображается в веб-интерфейсе как канал Vin устройства ADCs


<!--T:58-->
| Vin || 33k/4k51 ||N / 4095 * 1.85V * 8.32 || V = N * 3.76 mV || 30.6V || входное напряжение, iio channel 0
Смотрите также:
|-
* [[Wiren Board 6.2: Peripherals#Каналы АЦП| Каналы АЦП в Wiren Board 6.2]]
 
* [[Wiren_Board_7.2:_Peripherals#Аналоговые_входы| Каналы АЦП в Wiren Board 7]]
|}
* [[ADC.OLD | Списки АЦП для старых версий контроллера]]
 
</translate>
==== WB3.5 ====
{| border="1"
| клеммник || Делитель|| Формула для пересчета || Итоговая формула || 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 ====
{| border="1"
| клеммник || Делитель|| Формула для пересчета  || Итоговая формула || комментарии
|-
 
| A1-A7 || 12K/33K||  V = N / 4095 * 1.85V * 1.364 || V = N * 0.616 mV ||
|-
 
|}
 
== Использование значения из внешних программ ==
Специальный драйвер wb-homa-adc транслирует значение в систему [[MQTT]], и его можно получать оттуда.
 
Также значение можно получать в ручном режиме (убедитесь, что демон wb-homa-adc не запущен):
 
*Выбор канала  :  
 
<pre>
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)
</pre>
 
*Чтение показаний:
 
<pre>
root@wirenboard:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw
3838
</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>
 
 
=== Пример ===
* Устанавливаем ADC на измерение напряжения на клеммнике A3:
<pre>
root@wirenboard:~# wb-adc-set-mux A3
</pre>
 
* Считываем сырое значение ADC:
<pre>
root@wirenboard:~# wb-adc-get-value
2523
</pre>
 
* Конвертируем значение
<pre>
V = 2523 * 4.97 mV = 12539 mV = 12.54 V
</pre>
 
=== Проблема со звуковым драйвером ===
Процессор может мультиплексировать источник MIC BIAS на вывод LRADC1. Такое поведение по-умолчанию включено в драйверах звука.
Отключается патчем [https://github.com/contactless/linux/commit/2b13b2ee1dd936902ce5c71f192001c9513a7dbb], который применён к ядру из поставки Wiren Board.
 
== Измерение сопротивлений ==
См. [[ADC:Измерение сопротивлений]]
 
== Напряжение аккумулятора ==
В стандартном образе есть драйвер, транслирующий значение в очередь сообщений MQTT.
 
<pre>
cat /sys/bus/iio/devices/iio:device0/in_voltage7_raw
</pre>
Для преобразования в вольты: значение/ 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/

Версия 22:23, 13 апреля 2015

Как получить напряжение с АЦП

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

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

Wiren Board имеет 8 каналов АЦП, которые мультиплексированы в один канал процессора (LRADC1). Каналы мультиплексирования указаны в таблице Wiren Board 4:Список GPIO

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

Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала

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

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

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

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

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

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

WB4

клеммник Делитель Формула для пересчета Итоговая формула (без делителя) V макс. измеряемое (с делителем) комментарии
A1-A3 100k/90.9k N / 4095 * 1.85V * 2.100 V = N * 0.949 mV 7.4V
A4-A5 100k/11.86k N / 4095 * 1.85V * 9.43 V = N * 4.21 mV 34.4V
R1-R2 3k15/1M N / 4095 * 1.85V * 1.003 V = N * 0.426 mV 3.7V
li_pol 100k/90.9k N / 4095 * 1.85V * 2.100 V = N * 0.949 mV - на аккумуляторе
Vin 33k/4k51 N / 4095 * 1.85V * 8.32 V = N * 3.76 mV 30.6V входное напряжение, 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

Использование значения из внешних программ

Специальный драйвер wb-homa-adc транслирует значение в систему MQTT, и его можно получать оттуда.

Также значение можно получать в ручном режиме (убедитесь, что демон wb-homa-adc не запущен):

  • Выбор канала  :
 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:Измерение сопротивлений

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

В стандартном образе есть драйвер, транслирующий значение в очередь сообщений MQTT.

 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/