ADC: различия между версиями
Matveevrj (обсуждение | вклад) (Отметить эту версию для перевода) |
|||
(не показано 113 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
Wiren Board has 8-channel ADC which are multiplexed using analog multiplexer into i.mx233 LRADC1 channel. | |||
===Опорное напряжение=== | |||
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала (не реализовано в драйвере Linux, обратитесь к нам, если вам нужна эта возможность). | |||
< | |||
=== Основные каналы=== | |||
* | 7 каналов выведены на клемники, см. [[Список GPIO]] | ||
* | На основных каналах стоят резисторные делители 12K/33K. Поэтому входное напряжение для каждого канала вычисляется как 1.364 * <измеренное напряжение>. | ||
</ | Максимальное измеряемое напряжение 5В. | ||
Часть каналов АЦП выведена на клеммы паралельно с транзисторами управления низковольтной нагрузки. | |||
Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП. | |||
=== Измерение входного напряжения=== | |||
5-ый канал мультиплексора предназначен для измерения входного напряжения. | |||
Канал имеет делитель 200K/33K, поэтому входное напряжение определяется как 7.061 * <измеренное напряжение>. | |||
Максимальное измеряемое напряжение - 26В. | |||
== Software == | |||
АЦП мультиплексор подключен к порту LRADC1. | |||
*Выбор канала: | |||
<pre> | |||
/opt/utils/adc/adc_set_channel.sh tb<номер клеммника> | |||
или | |||
/opt/utils/adc/adc_set_channel.sh vin | |||
или | |||
/opt/utils/adc/adc_set_channel.sh <номер канала> | |||
</pre> | |||
*Чтение показаний: | |||
<pre> | |||
root@wirenboard:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw | |||
3838 | |||
</pre> | |||
=== Перевод значений === | |||
На канале должен стоять делитель на два (пока нет). | |||
Формула для перевода: | |||
<pre> | |||
V_measured = N / 4095 * 1.85V | |||
</pre> | |||
Итого, для напряжения на клеммниках с учётом входного делителя: | |||
<pre> | |||
V = N / 4095 * 1.85V * 1.364 = | |||
V = N * 0.61621 mV = N * 0.00061621 V | |||
</pre> | |||
Для входного напряжения (канал <b>vin</b>) | |||
<pre> | |||
V = N / 4095 * 1.85V * 7.061 = | |||
V = N * 3.18900 mV = N * 0.0031900 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.61621 mV = 1555 mV = 1.555 V | |||
</pre> | |||
=== Проблема со звуковым драйвером === | |||
Процессор может мультиплексировать источник MIC BIAS на вывод LRADC1. Такое поведение по-умолчанию включено в драйверах звука. | |||
Отключается патчем [https://github.com/contactless/linux/commit/2b13b2ee1dd936902ce5c71f192001c9513a7dbb], который применён к ядру из поставки Wiren Board. | |||
== Измерение сопротивлений == | |||
См. [[ADC:Измерение сопротивлений]] | |||
== Напряжение аккумулятора == | |||
<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/ |
Версия 23:02, 6 марта 2014
Wiren Board has 8-channel ADC which are multiplexed using analog multiplexer into i.mx233 LRADC1 channel.
Опорное напряжение
Опорное напряжение LRADC составляет 1.85V. Возможна программная установка делителя 2:1 внутри канала (не реализовано в драйвере Linux, обратитесь к нам, если вам нужна эта возможность).
Основные каналы
7 каналов выведены на клемники, см. Список GPIO На основных каналах стоят резисторные делители 12K/33K. Поэтому входное напряжение для каждого канала вычисляется как 1.364 * <измеренное напряжение>.
Максимальное измеряемое напряжение 5В.
Часть каналов АЦП выведена на клеммы паралельно с транзисторами управления низковольтной нагрузки.
Убедитесь, что вы явно закрыли соответствующий FET помощью GPIO перед использованием АЦП.
Измерение входного напряжения
5-ый канал мультиплексора предназначен для измерения входного напряжения. Канал имеет делитель 200K/33K, поэтому входное напряжение определяется как 7.061 * <измеренное напряжение>. Максимальное измеряемое напряжение - 26В.
Software
АЦП мультиплексор подключен к порту LRADC1.
- Выбор канала:
/opt/utils/adc/adc_set_channel.sh tb<номер клеммника> или /opt/utils/adc/adc_set_channel.sh vin или /opt/utils/adc/adc_set_channel.sh <номер канала>
- Чтение показаний:
root@wirenboard:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw 3838
Перевод значений
На канале должен стоять делитель на два (пока нет). Формула для перевода:
V_measured = N / 4095 * 1.85V
Итого, для напряжения на клеммниках с учётом входного делителя:
V = N / 4095 * 1.85V * 1.364 = V = N * 0.61621 mV = N * 0.00061621 V
Для входного напряжения (канал vin)
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 .
см.