Подключение цифро-аналогового преобразователя (ЦАП) MCP4725 к Arduino
Содержание
Все мы знаем, что микроконтроллеры умеют работать только с цифровыми значениями, однако в реальном мире нам приходится иметь дело с налоговыми сигналами. Поэтому для того, чтобы микроконтроллеры могли обрабатывать эти сигналы, их необходимо преобразовать в цифровую форму с помощью аналогово-цифрового преобразователя (АЦП). В английском языке они называются ADC — Analog to Digital Converter. Но если цифровые значения, хранящиеся в микроконтроллерах, необходимо конвертировать в аналоговую форму, используются цифро-аналоговые преобразователи (ЦАП). В английском языке они называются DAC — Digital to Analog Converter.
Простейшим примером необходимости использования ЦАП является воспроизведение какой-либо песни, хранящейся в цифровой форме. В свое время певец записал песню в студии используя микрофон. Затем эта песня была преобразована в цифровой формат и хранилась в виде файла с цифровыми данными. Чтобы затем воспроизвести эту песню в аналоговом виде с цифрового носителя данных и нужен ЦАП.
Цифро-аналоговые преобразователи (ЦАП) могут использоваться в различных приложениях, например, для управления двигателями и яркостью свечения светодиодов, в аудио усилителях, в видео-кодерах и т.п.
Во многих микроконтроллерах есть встроенные ЦАП, однако в платах Arduino, построенных на основе микроконтроллеров ATmega328/ATmega168, нет встроенного ЦАП (хотя есть АЦП). Поэтому в данной статье мы рассмотрим подключение цифро-аналогового преобразователя (ЦАП) MCP4725 к плате Arduino. Данную статью можно считать пособием для начинающих по использованию цифро-аналогового преобразования в Arduino.
Необходимые компоненты
- Плата Arduino Uno или Arduino Nano (купить на AliExpress).
- MCP4725 DAC IC (микросхема цифро-аналогового преобразователя) (купить на AliExpress).
- ЖК дисплей 16х2 (купить на AliExpress).
- Потенциометр 10 кОм — 2 шт. (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
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 | Их назначение |
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 описана в следующей статье, здесь не будем на ней подробно останавливаться.
В этом проекте мы будем соединять микросхему ЦАП MCP4725 с платой Arduino. Аналоговое входное напряжение, регулируемое с помощью потенциометра, будет подаваться на аналоговый контакт A0 платы Arduino. Затем с помощью встроенного в плату АЦП это аналоговое напряжение будет преобразовываться в цифровую форму. Затем это цифровое значение будет передаваться к микросхеме MCP4725 через шину I2C и в ЦАП MCP4725 оно будет преобразовываться в аналоговую форму. Контакт A1 платы Arduino будет использоваться для проверки сигнала с аналогового выхода MCP4725. Затем значения с АЦП и ЦАП будут отображаться на экране ЖК дисплея.
Схема проекта
Схема подключения цифро-аналогового преобразователя (ЦАП) 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, остальные два его контакта подключены к питанию и земле соответственно.
Источник: