V2r adc

Материал из virt2real wiki
(перенаправлено с «Считывание показаний АЦП (ADC)»)
Перейти к: навигация, поиск

Содержание

Описание

На борту Виртурилки имеется 6 каналов АЦП (ADC), каждый из которых доступен на отдельном пине.

Канал ADC Пин
ADC0 CON48
ADC1 CON49
ADC2 CON50
ADC3 CON51
ADC4 CON52
ADC5 CON53

Максимальное напряжение, которое можно подать на пин ADC - 3.6В

Разрядность АЦП - 10 бит (1024 значения).


Чтение драйвера v2r_adc

Считывание показаний АЦП производится с помощью драйвера v2r_adc

Драйвер представляет собой файл устройства /dev/v2r_adc, доступный только для чтения. Чтение осуществляется командой

cat /dev/v2r_adc

в результате чего в непрерывном цикле будет выводиться информация о значении всех шести каналов, по два байта на канал. Итого, 12 байт на все каналы.

В консоли это будет выглядеть мешаниной их спецсимволов, так что такое считывание годится только для чтения из программ на любом языке программирования.

Таким образом, абсолютное значение канала ADC0 будет равно

value = [0] + [1] * 256

где [0] и [1] - нулевой и первый байты в полученном двеннадцатибайтовом массиве

Для получения значения напряжения в Вольтах необходимо выполнить несложное преобразование


volts = value * 3.6 / 1024


/proc/v2r_adc

Чтение каналов

Для чтения текущего значения любого из каналов ADC (а не всех сразу) лучше использовать файлы, создаваемые драйверов в PROC_FS (/proc/v2r_adc)

# cd /proc/v2r_adc
# ls
0  0b  1  1b  2  2b  3  3b  4  4b  5  5b  div  mode

Каждый из файлов (0 - 5) отвечает за соответствующий канал АЦП.

Файлы 0, 1, 2, 3, 4, 5 - выдают текстовое значение соответствующего канала.

Файлы 0b, 1b, 2b, 3b, 4b, 5b - выдают бинарное значение соответствующего канала (два байта, первый байт - младший).

Для чтения достаточно выполнить команду (для проверки, на пин CON48 подано 3.3В с пина CON22)

#cat 0
949

Полученное значение (949) соответствует поданному на пин ADC0 (CON48) напряжению 3.3В

Для пересчёта абсолютных значений (0 - 1023) в Вольты необходимо провести несложное преобразование:

volts = value * 3.6 / 1024

где value - прочитанное из файла значение


Настройки ADC

Для настройки параметров ADC служат следующие файлы в /proc/v2r_adc

Файл Назначение
mode Режим функционирования
div Делитель частоты


Файл "mode"

Управляет режимом ADC.

Значение Режим Описание
0 one-shot Одноразовое преобразование (по-умолчанию)
1 free-run Постоянное преобразование

Доступен для чтения/записи.

Подробнее см. в даташите.


Файл "div"

Задаёт делитель частоты для ADC.

Доступен для чтения/записи.

По умолчанию устанавливается делитель 1 (максимальная скорость).


Чтение АЦП из веб-интерфейса

Всё вышеперечисленное можно посмотреть в веб-интерфейсе (админке) Виртурилки, в разделе Периферия -> ADC (или сразу по адресу http://<ip_address>?adc)


Делитель напряжения

Если необходимо измерить напряжение больше чем 3.6 Вольт, необходимо сделать простейший делитель напряжения из резисторов, чтобы на выходе было напряжение не больше чем 3.6В.

Тогда в формуле понадобится исправить один параметр vref, равный максимальному напряжению, подаваемому на делитель напряжения.

volts = value * vref / 1024


Пример чтения из приложения

https://github.com/virt2real/othersoft/tree/master/adc_read


Даташит

Даташит на DaVinci ADC