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

Материал из Wiren Board
Строка 39: Строка 39:
Формула для перевода:
Формула для перевода:
<pre>
<pre>
V_measured = N / 4096 * 1.85V - без делителя
V_measured = N / 4096 * 1.85V  
V_measured = N / 4096 * 1.85V * 2  - с делителем (пока нет)
</pre>
 
Итого, для напряжения на клеммниках с учётом входного делителя:
<pre>
V = N / 4096 * 1.85V * 1.364 =
V = N * 0.61606 mV = N * 0.00061606 V
</pre>
 
Для входного напряжения (канал <b>vin</b>)
<pre>
V = N / 4096 * 1.85V * 7.061 =
V = N * 3.1892 mV = N * 0.0031892 V
</pre>
 
 
 
=== Пример ===
* Устанавливаем ADC на измерение напряжения на клеммнике 9:
<pre>
root@wirenboard:~# /opt/utils/adc/adc_set_channel.sh tb9
set mux c,b,a = 1,1,1
</pre>
 
* Считываем сырое значение ADC:
<pre>
root@wirenboard:~# /opt/utils/adc/adc_get_value.sh
2523
</pre>
 
* Конвертируем значение
<pre>
V = 2523 * 0.61606 mV = 1554 mV = 1.554 V
</pre>
</pre>



Версия 01:46, 8 ноября 2013

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


Main channels

7 channels are exposed to terminal blocks. See Hardware_Overview_rev._2.8#Terminal_blocks for details.

The main channel have 12K/33K dividers. Thus the input voltage for each channel is 1.364 * <measured voltage>

Some of the ADC channels share terminal blocks with FET. Please make sure you have explicitly closed the corresponding FET using GPIO before using ADC.

Input voltage measuring

Channel 5 of the multiplexer is dedicated to measuring input voltage. The channel has 200K/33K divider. Thus the input voltage is 7.061 * <measured voltage>.


Software

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

  • Выбор канала:
 ./adc_set_channel.sh tb<номер клеммника>
или
 ./adc_set_channel.sh vin
или
 ./adc_set_channel.sh <номер канала>

  • Чтение показаний:
root@wirenboard:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw 
3838

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

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

V_measured = N / 4096 * 1.85V 

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

V = N / 4096 * 1.85V * 1.364 = 
V = N * 0.61606 mV = N * 0.00061606 V

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

V = N / 4096 * 1.85V * 7.061 = 
V = N * 3.1892 mV = N * 0.0031892 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.61606 mV = 1554 mV = 1.554 V

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

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