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

Содержание

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

Подключение цифро-аналогового преобразователя (ЦАП) MCP4725 к Arduino - внешний вид конструкции

Простейшим примером необходимости использования ЦАП является воспроизведение какой-либо песни, хранящейся в цифровой форме. В свое время певец записал песню в студии используя микрофон. Затем эта песня была преобразована в цифровой формат и хранилась в виде файла с цифровыми данными. Чтобы затем воспроизвести эту песню в аналоговом виде с цифрового носителя данных и нужен ЦАП.

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

Во многих микроконтроллерах есть встроенные ЦАП, однако в платах Arduino, построенных на основе микроконтроллеров ATmega328/ATmega168, нет встроенного ЦАП (хотя есть АЦП). Поэтому в данной статье мы рассмотрим подключение цифро-аналогового преобразователя (ЦАП) MCP4725 к плате Arduino. Данную статью можно считать пособием для начинающих по использованию цифро-аналогового преобразования в Arduino.

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

  1. Плата Arduino Uno или Arduino Nano (купить на AliExpress).
  2. MCP4725 DAC IC (микросхема цифро-аналогового преобразователя) (купить на AliExpress).
  3. ЖК дисплей 16х2 (купить на AliExpress).
  4. Потенциометр 10 кОм — 2 шт. (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

MCP4725 DAC Module (модуль цифро-аналогового преобразователя)

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

ЦАП MCP4725 имеет разрешение 12 бит, то есть он может оперировать со значениями от 0 до 4096. С помощью этих значений на его выходе можно формировать аналоговое напряжение по отношению к опорному напряжению. Максимальное опорное напряжение для него составляет 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 земля для опорного напряжения

Интерфейс I2C в ЦАП MCP4725

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

Принцип передачи данных в протоколе I2C

В этом проекте мы будем соединять микросхему ЦАП MCP4725 с платой Arduino. Аналоговое входное напряжение, регулируемое с помощью потенциометра, будет подаваться на аналоговый контакт A0 платы Arduino. Затем с помощью встроенного в плату АЦП это аналоговое напряжение будет преобразовываться в цифровую форму. Затем это цифровое значение будет передаваться к микросхеме MCP4725 через шину I2C и в ЦАП MCP4725 оно будет преобразовываться в аналоговую форму. Контакт A1 платы Arduino будет использоваться для проверки сигнала с аналогового выхода MCP4725. Затем значения с АЦП и ЦАП будут отображаться на экране ЖК дисплея.

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

Схема подключения цифро-аналогового преобразователя (ЦАП) MCP4725 к плате Arduino представлена на следующем рисунке.

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

В следующей таблице представлены необходимые соединения между MCP4725, платой Arduino Nano и мультиметром.

MCP4725 Arduino Nano Мультиметр
SDA A4 NC
SCL A5 NC
A0 или OUT A1 +ve terminal
GND GND -ve terminal
VCC 5V NC

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

ЖК дисплей 16×2 Плата Arduino Nano
VSS GND
VDD +5V
V0 к центральному контакту потенциометра для регулировка контрастности ЖК дисплея
RS D2
RW GND
E D3
D4 D4
D5 D5
D6 D6
D7 D7
A +5V
K GND

Центральный контакт потенциометра подключен к аналоговому контакту A0 платы Arduino Nano, остальные два его контакта подключены к питанию и земле соответственно.


Источник: microkontroller.ru