Creative Commons images are CC BY-NC-SA 3.0

$ 4.95

added to your
shopping cart

In stock 181 in stock
4.95 1+ units
4.70 10+ units
4.46 25+ units
4.21 100+ units

Description: You’ve always wanted to output analog voltages from a microcontroller, the MCP4725 is the DAC that will let you do it! The MCP4725 is an I2C controlled Digital-to-Analog converter (DAC). A DAC allows you to send analog signal, such as a sine wave, from a digital source, such as the I2C interface on the Arduino microcontroller. Digital to analog converters are great for sound generation, musical instruments, and many other creative projects!

This version of the MCP4725 Breakout fixes a few issues with the board including the IC footprint, the I2C pinout, changes the overall board dimensions to better fit your projects, and a few more minor tweaks. This board breaks out each pin you will need to access and use the MCP4725 including GND and Signal OUT pins for connecting to an oscilloscope or any other device you need to hook up to the board. Also on board are SCL, SDA, VCC, and another GND for your basic I2C pinout. Additionally, if you are looking to have more than one MCP4725 on a bus, the pull-up resistors on this board can be disabled just check the Hookup Guide in the Documents section below for instructions and tips on doing this.


  • 12-bit resolution
  • I2C Interface (Standard, Fast, and High-Speed supported)
  • Small package
  • 2.7V to 5.5V supply
  • Internal EEPROM to store settings


Recommended Products

Customer Comments

  • You can get 4 of these on one i2c bus if you use two from SparkFun and two from Adafruit. Sparkfun’s addresses are 0x60 and 0x61. Adafruit’s are 0x62 and 0x63. This makes me very happy.

    • How does the i2c pullup resistor work when i’m using 2xSparkFun and 2xAdafruit MCP4725s?

      Can someone confirm you only need one pull-up I2c resistor per bus? Can’t tell if the Adafruit units have pull-up resistor onboard or not.

      • The way I2C works is that the microcontroller pulls the signal low, but if it is not pulling the signal low than the on board pull up resistor will pull it high. Different resistor values are often required for different speeds. Also keep in mind that when the microcontroller is pulling the signal to ground, VCC will be tied to this pin through the pullup resistor. You don’t want the value too low and have too much power flowing through here. When you connect multiple boards will pullup resistors each of those resistors will be connected to the signal on one end and VCC on the other. This means all your resistors are in parallel. So if you had 4x 10k resistors your effective resistance is now 2.5k. Will this still work? Maybe, maybe not, it depends on the IC, the required timing etc. You definitely only need one pull-up resistor per line, in fact that is ideal. But sometimes things will still work fine if you have multiples. Also, make sure your VCCs are the same across all boards since are connecting them together.

  • Ooo, this may be exactly what I’ve been looking for for controlling my galvanometer laser scanner with my Arduino. I may have to pick up a pair at some point.

  • I am having an issue with my 12 bit DAC. I believe I hooked it up correctly to my ATMega2560, but I cant seem to get the expected voltage when using the Wire.write() command.

    Details of my issue are [here[( Can someone help me?

  • Anyone has an Arduino code sample for this I2C DAC device? Thanks, Erez

  • Could I use this for Audio? I want to drive it from my Due using some DDS routines I’ve worked out. (yes, I know the Due has DAC pins, but they are sensitive and I don’t want to risk blowing them out, hence an external board). I plan on sampling at 48khz so I’m fairly certain there aren’t any bandwidth issues on the I2C bus. I’m just concerned about response and whether it will work for a simple audio solution (not audiophile status at all).

  • jstaff0 / last year / 1

    Is it possible to use this device in reverse, to convert an analog input to an I2C signal?

  • OK. Total newb question. Can someone help me figure out how to address more than one of these things from arduino? I get that I need to cut the pullup traces on all but one of the boards, but wouldn’t they then still all have the same address?

    • As the hookup guide states, to change the address of the MCP4725, you’ll need to de-solder the jumper and re-solder it in the correct configuration. By default this pin is connected to GND. So, to add a second MCP to your I2C bus, you’d need to cut the pullups and change the address jumper to be connected to Vcc on only one of your boards. The way the addressing on this IC works only allows for two devices on the same bus using the A0 pin. If you need to have more than two on the same bus, then you’ll need to order the ICs directly from the manufacturer with separate addresses. See section 7.2 of the datasheet for more info on addressing.

  • I like the MAX522 DAC. It contains two 8-bit converters, and is SPI compatible up to 5MHz. I’m not sure if they have an SMD package, though.

  • Eagle Files is a 404

  • Can I use this to power a PC fan? For instance I want to be able to use an Arduino to power a standard non-PWM fan using voltage - would this be suitable for a single fan (5-10w max) at 12V?

    • This outputs a varying waveform, not a constant voltage. If you need to control a 12V fan with an Arduino, I would recommend a MOSFET or a relay.

      • Hi JoelEB, I believe your response is misleading. This board “should” output a single voltage proportional to the value of the code that you send to it. While you “can” make it output a varying voltage, you do that by repeatedly sending it different values that will cause the voltage to vary.

        Example: From the datasheet: VOUT = (VREF * Dn)/ 4096

        This means that if you send it a single binary value of 4096 that it will output a steady state voltage equal to VREF.

        If you send it a binary 0, then it will output a voltage of 0 volts.

        The only time it will output a varying voltage is when you program a loop to “continuously” send it varying values to cause the output to vary with the desired amplitude and time scale (up to the limits of the device of course).

        In a nutshell, it DOES output a constant voltage. That is what it is designed to do. That voltage is programmable and if re-programmed fast enough it can output a rather low frequency sine wave.

        Hope that helps

      • A relay isn’t what I want but the MOSFET may work. I essentially want to take the PWM signal from the Arduino and turn it into a variable voltage output to directly power the fan.

  • Curious, why are there separate GND pins for the VOUT and VCC?

Customer Reviews

No reviews yet.