

The MCP4735 is a low-power, single-channel digital-to-analog converter (DAC) manufactured by Arduino. It is designed to convert digital signals into precise analog voltage outputs, making it an essential component in applications requiring fine voltage control. With a 10-bit resolution and an I2C interface, the MCP4735 is ideal for use in audio systems, sensor interfacing, and other applications where accurate analog signal generation is required.








The MCP4735 is a versatile DAC with the following key technical details:
| Parameter | Value |
|---|---|
| Resolution | 10-bit |
| Output Voltage Range | 0V to VDD |
| Supply Voltage (VDD) | 2.7V to 5.5V |
| Interface | I2C |
| Maximum I2C Clock Speed | 400 kHz (Fast Mode) |
| Power Consumption | Low-power operation |
| Operating Temperature | -40°C to +125°C |
| Package | 6-pin SOT-23 |
The MCP4735 comes in a 6-pin SOT-23 package. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD | Positive power supply (2.7V to 5.5V) |
| 2 | VOUT | Analog voltage output |
| 3 | GND | Ground |
| 4 | SCL | I2C clock line |
| 5 | SDA | I2C data line |
| 6 | A0 | I2C address selection bit |
The MCP4735 is straightforward to use in a circuit, thanks to its I2C interface. Below are the steps and considerations for integrating it into your project:
Below is an example of how to use the MCP4735 with an Arduino UNO to generate an analog voltage:
#include <Wire.h> // Include the Wire library for I2C communication
#define MCP4735_ADDR 0x60 // Default I2C address of MCP4735 (A0 = GND)
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
uint16_t value = 512; // 10-bit DAC value (0 to 1023)
// Send the value to the MCP4735
Wire.beginTransmission(MCP4735_ADDR);
Wire.write((value >> 8) & 0x0F); // Send the upper 4 bits of the 10-bit value
Wire.write(value & 0xFF); // Send the lower 8 bits of the 10-bit value
Wire.endTransmission();
Serial.println("DAC value sent: " + String(value)); // Debugging output
delay(1000); // Wait for 1 second before sending the next value
}
0x60 when A0 is tied to GND.No Output Voltage:
Incorrect Output Voltage:
I2C Communication Failure:
Q: Can the MCP4735 output negative voltages?
A: No, the MCP4735 can only output voltages in the range of 0V to VDD.
Q: What is the resolution of the MCP4735?
A: The MCP4735 has a 10-bit resolution, meaning it can output 1024 discrete voltage levels.
Q: Can I use the MCP4735 with a 3.3V microcontroller?
A: Yes, the MCP4735 operates with a supply voltage range of 2.7V to 5.5V, making it compatible with 3.3V systems.
Q: How do I change the I2C address of the MCP4735?
A: The I2C address is determined by the state of the A0 pin. Tie A0 to GND or VDD to select between two possible addresses (0x60 or 0x61).