Raspberry Pi и Pi4J. Урок 10. Работа с Цифро-аналоговым преобразователем/ЦАП MCP4725

ЦАП MCP4725 — это 12-разрядный цифро-аналоговый преобразователь управляемый через I2C. Так как мини компьютеры Raspberry Pi, Banana Pi, Orange Pi, Nano Pi, Odroid и т.п. имеют встроенного ЦАП, MCP4725 может быть использован, чтобы получить точный аналоговый сигнал.

В Pi4J есть библиотека для работы с ЦАП MCP4725 по I2C/TWI из Java на Raspberry Pi, Banana Pi, Orange Pi, Nano Pi и Odroid. Все классы и интерфейсы находятся в пакете com.pi4j.gpio.extension.mcp.*;.

Пока не все возможности ЦАП MCP4725 реализованы, нет возможности записывать данные в EEPROM — эта функция позволяет ЦАП MCP4725 самостоятельно сохранять значения данных и восстанавливать их при включении питания.

Класс DacGpioProviderBase

Этот базовый поставщик GPIO определяет требуемые интерфейсы и реализует базовую функциональность для микросхем расширения ЦАП (цифро-аналоговых) как родные выводы Pi4J GPIO.

DacGpioProviderBase(Pin[])

Конструктор по умолчанию.

Параметры
pins — совокупность всех выводов GPIO, используемых с реализацией этого поставщика ЦАП.
Возвращает
новый экземпляр DacGpioProviderBase

setPercentValue(Pin, Number)

Устанавливает текущее значение в процентах от доступного диапазона вместо необработанного значения.

Параметры
pin — вывод GPIO.
percent — процентное значение от 0 до 100.

setPercentValue(GpioPinAnalogOutput, Number)

Устанавливает текущее аналоговое значение в процентах от доступного диапазона вместо необработанного значения (масштабированное число в диапазоне значений АЦП).

Параметры
pin — вывод GPIO.
percent — процентное значение от 0 до 100.

setValue(Pin, Number)

Устанавливает аналоговое выходное значение (необработанное значение) на выходной контакт ЦАП.

Параметры
pin — номер пина ЦАП.
value — необработанное значение для отправки на ЦАП.

shutdown()

Этот метод используется платформой для отключения экземпляра ЦАП. Этот метод также закроет шину I2C для подключенного ЦАП.

setShutdownValue(Number, Pin … )

Устанавливает значение отключения, которое ЦАП должен применять к данному выводу GPIO, когда экземпляр класса уничтожается.

Параметры
value — значение отключения, применяемое к данному выводу (-ам).
pin — вывод аналогового выхода (один или несколько выводов).

getShutdownValue(Pin)

Возвращает значение отключения, которое ЦАП должен применять к указанному выводу GPIO при уничтожении класса.

Параметры
pin — аналоговый выход.
Возвращает
значение отключения, применяемое к данному выводу.

setShutdownValue(Number, GpioPinAnalogOutput …)

Устанавливает значение отключения, которое ЦАП должен применять к данному выводу GPIO, когда экземпляр класса уничтожается.

Параметры
value — значение отключения, применяемое к данному выводу (-ам).
pin — вывод аналогового выхода (один или несколько выводов).

getShutdownValue(GpioPinAnalogOutput)

Возвращает значение отключения, которое ЦАП должен применять к указанному выводу GPIO при уничтожении класса.

Параметры
pin — аналоговый выход.
Возвращает
значение отключения, применяемое к данному выводу.

Класс MCP4725GpioProvider

Этот GPIO провайдер расширяет абстрактный класс DacGpioProviderBase и реализует интерфейс DacGpioProvider, для работы с пином MCP4725, как с родным пином Pi4J.

MCP4725GpioProvider(int, int)

Это конструктор по умолчанию.

Параметры
busNumber — номер шины.
address — I2C адрес устройства.
Возвращает
новый экземпляр MCP4725GpioProvider
Бросает
UnsupportedBusNumberException — если данный номер шины не поддерживается базовой системой.
IOException — если сообщение с шиной I2C не работает.

MCP4725GpioProvider(I2CBus, int)

Это альтернативный конструктор, который можно использовать для создания экземпляра MCP4725.

Параметры
busNumber — I2C шина.
address — I2C адрес устройства.
Возвращает
новый экземпляр MCP4725GpioProvider
Бросает
IOException — если сообщение с шиной I2C не работает.

setValue(Pin, double)

Устанавливает аналоговое выходное значение на выходной контакт на ЦАП.

Параметры
pin — номер пина ЦАП.
value — необработанное значение для отправки на ЦАП. (Между: 0..4095).

getName()

Получает имя экземпляра поставщика ЦАП.

Возвращает
имя экземпляра поставщика ЦАП.

shutdown()

Этот метод используется платформой для отключения экземпляра ЦАП MCP4725. Этот метод также закроет шину I2C для подключенного MCP4725.

getMinSupportedValue()

Возвращает минимальное поддерживаемое аналоговое значение ЦАП.

Возвращает
минимальное поддерживаемое аналоговое значение.

getMaxSupportedValue()

Возвращает максимальное поддерживаемое аналоговое значение для реализации ЦАП. (Например, максимальное значение 10-разрядного АЦП составляет 1023, а максимальное значение 12-разрядного АЦП — 4095.

Возвращает
максимальное поддерживаемое аналоговое значение.

Класс MCP4725Pin

Этот провайдер GPIO реализует 12-разрядный цифро-аналоговый преобразователь MCP4725 в качестве собственных выводов GPIO Pi4J. MCP4725 подключен через I2C к Raspberry Pi и имеет 1 аналоговый выход GPIO.

createAnalogOutputPin(int, String)

Создаёт и возвращает новый экземпляр класса PinImpl, для работы с аналоговым выводом MCP4725.

Параметры
address — номер вывода.
name — имя пина.
Возвращает
новый экземпляр класса PinImpl.

Схема подключения ЦАП MCP4725 к Orange Pi

MCP4725 можно подключить на любой доступный I2C порт.

Схема подключения ЦАП MCP4725 к Orange Pi

Примеры программ с ЦАП MCP4725 на Pi4J

Генерация прямоугольной волны/Меандр

Приведённая ниже программа генерирует прямоугольную волну (Меандр), а для проверки использовал цифровой осциллограф DSO138. Для отправки данных на чип использовалась функция setValue().

Проверяем код:

  1. создаём java файл и вставляем код:
  2. компилируем файл:
  3. запускаем программу:

Результат

Подключение ЦАП MCP4725 к Orange Pi - Генерация прямоугольной волны (Меандр, Pi4J)

Генерация синусоиды

Данный пример кода генерирует синусоиду, на выход модуля подключил DSO138. Для отправки данных использовалась функция setPercentValue().

Проверяем код:

  1. создаём java файл и вставляем код:
  2. компилируем файл:
  3. запускаем программу:

Результат

Подключение ЦАП MCP4725 к Orange Pi - Генерация синусоиды (Pi4J)

Материалы

Установка Pi4J на Raspberry Pi и Orange Pi, Banana Pi
The Pi4J Project
MCP4725 — Datasheet 22039d.pdf
MCP4725 — Цифро-аналоговый преобразователь (ЦАП)

Похожие записи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *