![[Arduino] MCP4725 DAC 사용법: I2C 통신으로 아날로그 출력 제어하기(16)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTwqxL%2FbtsJViO0CoB%2FLe0OMLIFFZKuCJoszdX0ck%2Fimg.jpg)
안녕하세요.
MCP4725는 I2C 인터페이스를 통해 제어할 수 있는 12비트 디지털-아날로그 변환기(DAC)입니다. 아두이노를 사용하여 이 칩을 제어하면 정밀한 아날로그 출력을 생성할 수 있습니다. 이 글에서는 MCP4725를 아두이노와 연결하고, I2C 통신을 통해 아날로그 신호를 출력하는 방법을 알아보겠습니다.
※1. MCP4725 제어
MCP4725는 12비트 DAC로, 0~4095의 디지털 값을 아날로그 전압으로 변환할 수 있습니다. 기본적으로 I2C 통신을 사용하여 아두이노와 데이터를 주고받으며, 최대 5V까지의 아날로그 출력을 제공할 수 있습니다. 이 칩을 사용하면 오디오 신호 생성, 센서 보정, 파형 출력 등 다양한 프로젝트에 활용할 수 있습니다.
※2. Wiring (배선 연결)
Eval Board에 따라 전원이 VDD, VSS로 적혀있는 경우가 있는데 이경우 VDD->VCC / VSS->GND입니다.
자세한 내용은 아래 링크 참조해주세요.
MCP4725는 I2C 통신을 사용하므로 연결이 간단합니다. 아두이노의 SDA, SCL 핀을 MCP4725의 대응 핀에 연결하면 됩니다.
- VCC (MCP4725) -> 5V (아두이노)
- GND (MCP4725) -> GND (아두이노)
- SDA (MCP4725) -> A4 (아두이노 Uno의 SDA 핀)
- SCL (MCP4725) -> A5 (아두이노 Uno의 SCL 핀)
※3. 소스코드 및 동작
입력(0~4095(12bit)) 에 따라 크기가 다른 DC값을 출력(0~5V)하는 하는 코드를 실행해 보겠습니다.
▶1. 소스코드
(.INO 파일 첨부 같이 해드려요)
#include <Wire.h> int level = 4095; //0~4095 void setup() { Wire.begin(); } void dac_MCP4725(int b) { Wire.beginTransmission(0x60); // 7-bit I2C address Wire.write(0x40); Wire.write((b >> 4) & 0xFF); Wire.write((b << 4) & 0xFF); Wire.endTransmission(); } void loop() { dac_MCP4725(level); delay(100); } |
▶2. 하드웨어 연결 및 동작 확인
코드를 업로드한 후, MCP4725가 설정한 level 값에 따라 아날로그 전압을 출력하게 됩니다. level = 0일 때 출력은 0V에 가깝고, level = 4095일 때는 출력이 VCC (5V)에 가까워집니다. 중간 값인 level = 2048일 경우, 출력은 약 2.5V로 설정됩니다.
이상으로 아두이노에서 LED를 다루는 방법에 대한 설명을 마치겠습니다.
MCP4725는 아두이노와 함께 사용하기에 매우 유용한 DAC입니다. 이 글에서 설명한 것처럼 간단한 I2C 통신을 통해 다양한 아날로그 신호를 생성할 수 있으며, 이를 활용해 다양한 프로젝트를 만들 수 있습니다. 예를 들어, 오디오 신호 처리, 센서 보정, PWM 대체 등 여러 상황에서 사용할 수 있습니다.

감사합니다.
'Embedded System > Arduino Board' 카테고리의 다른 글
[Arduino] Packet 통신: Comportmaster를 활용한 Packet 수신(17) (0) | 2024.12.05 |
---|---|
[Arduino] Arduino IDE 단축키 총정리 (0) | 2024.12.02 |
[Arduino] 아두이노 가변저항[Potentiometer] (볼륨 저항) 사용하기 (14) (0) | 2024.07.08 |
[Arduino] 아두이노 초음파 거리센서 ( HC-SR04 ) 사용하기 (13) (0) | 2024.06.10 |
[Arduino] 아두이노 온도센서 ( LM35, DS18B20 ) 사용하기 (12) (0) | 2024.06.09 |
전자공학 블로그에 오신 것을 환영합니다! 최신 기술 동향, 회로 설계, 반도체 및 전자 부품에 대한 유용한 정보와 실습 팁을 제공합니다.