ADC: различия между версиями
Строка 39: | Строка 39: | ||
Формула для перевода: | Формула для перевода: | ||
<pre> | <pre> | ||
V_measured = N / 4096 * 1.85V | V_measured = N / 4096 * 1.85V | ||
</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.