Подключение цифро-аналогового преобразователя (ЦАП) MCP4725 к Raspberry Pi


Микроконтроллеры могут работать только с цифровыми значениями, но в современной электронике часто приходится иметь дело и с аналоговыми сигналами. Для преобразование сигналов из аналоговой формы в цифровую используются аналого-цифровые преобразователи (АЦП, в англ. – ADC, Analog to Digital Converter), а из цифровой в аналоговую – цифро-аналоговые преобразователи (ЦАП, в англ. – DAC, Digital to Analog Converter).

Цифро-аналоговые преобразователи (ЦАП) находят широкое применение в таких приложениях как управление двигателями, управление яркостью свечения светодиодов, аудио-усилителях, энкодерах видео и т.д.

Внешний вид подключения модуля ЦАП MCP4725 к Raspberry Pi

В данной статье мы рассмотрим подключение цифро-аналогового преобразователя MCP4725 к плате Raspberry Pi. Ранее на нашем сайте мы уже рассматривали подключение ЦАП MCP4725 к плате Arduino.

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress) с установленной операционной системой (Raspberry Pi OS).
  2. MCP4725 DAC IC (микросхема цифро-аналогового преобразователя) (купить на AliExpress).
  3. ЖК дисплей 16x2 (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Принципы работы модуля ЦАП MCP4725

Микросхема MCP4725 представляет собой модуль 12-битного ЦАП, позволяющий формировать на своем выходе аналоговый сигнал в диапазоне от 0 до 5V. Управляется ЦАП MCP4725 по интерфейсу I2C. Также микросхема MCP4725 содержит в своем составе энергонезависимую память (EEPROM).

Модуль MCP4725 имеет разрешение 12 бит. Это значит что на его вход можно подавать цифровые значения в диапазоне 0-4096, которые он преобразует в соответствующее аналоговое значение по отношению к опорному напряжению. Максимальное опорное напряжение (reference voltage) составляет 5V.

Формула для расчета выходного значения напряжения выглядит следующим образом:

O/P Voltage = (Reference Voltage / Resolution) x Digital Value

Reference Voltage – опорное напряжение;
Resolution – разрешение (разрешающая способность) ЦАП;
Digital Value – цифровое значение.

К примеру, если мы используем напряжение 5V в качестве опорного, а цифровое значение равно 2048, то на выходе ЦАП мы получим:

O/P Voltage = (5/ 4096) x 2048 = 2.5V

Назначение контактов (распиновка) MCP4725

На следующих рисунке и таблице представлено назначение контактов ЦАП MCP4725.

Назначение контактов (распиновка) MCP4725

Контакты ЦАП MCP4725 Их назначение
OUT выходное аналоговое напряжение
GND земля для выходного аналогового напряжения
SCL линия синхронизация протокола I2C
SDA линия передачи данных протокола I2C
VCC входное опорное напряжение 5V или 3.3V
GND земля для опорного напряжения

Микросхемой ЦАП MCP4725 можно управлять с любого микроконтроллера используя интерфейс (протокол) I2C. Для функционирования протокола I2C необходимо только два провода (линии) - SCL и SDA. По умолчанию I2C адрес для MCP4725 равен 0x60, 0x61 или 0x62

Настройка интерфейса I2C в Raspberry Pi

Для того, чтобы подключить ЦАП MCP4725 к плате Raspberry Pi, необходимо знать контакты интерфейса I2C в плате и включить использование данного интерфейса в настройках платы.

Схема расположения контактов ввода/вывода платы Raspberry Pi

Как показано на приведенной распиновке платы Raspberry Pi контактами интерфейса I2C в ней являются контакты GPIO2 (SDA) и GPIO3 (SCL).

По умолчанию использование интерфейса I2C отключено в плате Raspberry Pi, поэтому нам необходимо его включить. Для этого выполните следующие действия:

  1. В окне терминала введите команду sudo raspi-config. После этого появится панель настроек платы.
  2. В ней выберите настройки подключения (Interfacing options) и затем в них включите использование интерфейса I2C.
  3. После этого перезагрузите плату.

Включение интерфейса I2C в Raspberry PiОпределение адреса I2C модуля MCP4725 с помощью Raspberry Pi

Чтобы взаимодействовать с модулем MCP4725 по интерфейсу I2C нам необходимо узнать адрес I2C модуля. Чтобы узнать этот адрес подключите контакты SDA и SCL модуля MCP4725 к контактам SDA и SCL платы Raspberry Pi. Также подключите контакт питания и землю.

После этого откройте окно терминала и введите следующую команду чтобы узнать адрес подключенного по интерфейсу I2C устройства:

Установка библиотеки Adafruit для работы с ЦАП MCP4725

Мы для взаимодействия с модулем ЦАП MCP4725 будем использовать специальную библиотеку для работы с ним - Adafruit MCP4725 library. Для ее установки выполните следующую последовательность шагов.

1. Убедитесь в том, что плата Raspberry Pi подключена к сети Интернет.

2. Откройте окно терминала и введите в нем следующие команды (одну за другой):

3. После успешной установки библиотеку Adafruit MCP4725 library можно будет подключать в программе на python с помощью следующей команды:

Установка библиотеки для работы с ЖК дсиплеем

ЖК дисплей в нашем проекте будет использоваться для отображения аналоговых и цифровых значений. Для взаимодействия с ним мы будем использовать библиотеку от Adafruit. Для установки этой библиотеки выполните следующую последовательность шагов:

1. Откройте окно терминала и введите в нем следующие команды (одну за другой):

2. После установки библиотеки для работы с ЖК дисплеем ее можно будет подключать в программе на python с помощью следующей команды:

Схема проекта

Схема подключения модуля ЦАП MCP4725 к плате Raspberry Pi представлена на следующем рисунке.

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

Соединения между ЖК дисплеем 16х2 и платой Raspberry Pi приведены в следующей таблице.

ЖК дисплей Плата Raspberry Pi
VSS GND
VDD +5V
V0 к среднему контакту потенциометра для регулировки контрастности
RS GPIO25
RW GND
E GPIO24
D4 GPIO23
D5 GPIO17
D6 GPIO18
D7 GPIO22
A +5V
K GND

Соединения между модулем ЦАП MCP4725 и платой Raspberry Pi приведены в следующей таблице.

MCP4725 Плата Raspberry Pi Мультиметр
GND GND отрицательный вывод
VCC +5V -
SDA GPIO2 (SDA) -
SCL GPIO3 (SCL) -
OUT - положительный вывод

После сборки схемы на макетной плате у нас получилась следующая конструкция проекта.

Внешний вид собранной конструкции проекта

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Код программы вы можете передать в плату Raspberry Pi по протоколу SSH с помощью программы Putty или с помощью FTP клиента (например, FileZilla). Либо же вы можете подключить монитор к плате и набрать представленный код программы с помощью клавиатуры.

В данной программе мы будем передавать цифровое значение в диапазоне 0-4096 от платы Raspberry Pi к модулю ЦАП MCP4725 по шине I2C. На выходе модуля MCP4725 мы будем получать аналоговое значение в диапазоне от 0 до 5V, которое можно будет проверить с помощью мультиметра. И аналоговое, и цифровое значения будут отображаться на экране ЖК дисплея 16x2. Подаваемое на ЦАП MCP4725 цифровое значение в программе в цикле будет последовательно инкрементироваться начиная со значения 150 (0,150,300,450…4050).

Первым делом в программе необходимо подключить (импортировать) используемые библиотеки.

Далее в программе укажем, к каким контактам платы подключен ЖК дисплей, а также зададим число строк и столбцов дисплея. После этого инициализируем ЖК дисплей.

После этого покажем на экране ЖК дисплея приветственное сообщение.

Далее создадим объект для взаимодействия с ЦАП. При создании этого объекта укажем I2C адрес микросхемы MCP4725. В нашем случая она имеет адрес 0x60, если у вас будет другой адрес, то внесите соответствующие изменения в следующую команду.

Далее в цикле мы будем передавать значение переменной x модулю ЦАП MCP4725 через интерфейс I2C. Значение переменной x будет изменяться в цикле от 0 до 4095 с шагом 150.

Цифровое значение переменной x будет передаваться модулю MCP4725 с помощью следующей команды:

Аналоговое значение напряжение будет рассчитывать по формуле:

Значение 5 в этой формуле – это значение опорного напряжения, а x – наше цифровое значение.

Затем аналоговое и цифровое значения отображаются на экране ЖК дисплея с задержкой 2 секунды:

Цифровое значение отображается на 1-й строке ЖК дисплея, а аналоговое значение – на второй строке. Для проверки значения аналогового значения напряжения к выходным контактам модуля MCP4725 подключен мультиметр. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Тестирование работы проекта

Исходный код программы на Python

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
799 просмотров

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

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