DEV Community

Cover image for Adafruit GP8403 I2C DAC Pushes Analog Output All the Way to 10V
circuitrocks
circuitrocks

Posted on Originally published at blog.circuit.rocks

Adafruit GP8403 I2C DAC Pushes Analog Output All the Way to 10V

Set aside a Saturday and one small breakout board, and a project that has been stuck on your bench for months can finally move. The blocker is almost always the same: your microcontroller speaks I2C fine, but every DAC in the drawer tops out at whatever rail feeds it, usually 3.3V or 5V. Anything wanting a 0-10V control signal, a fan driver, a lab supply set point, an op-amp bias, sits there unfinished.

The board that fixes it

Adafruit's new GP8403 breakout is built around the GP8402, a 12-bit I2C-to-analog converter. Write a value between 0x000 and 0xFFF and it drives two independent outputs, switchable between 0-5V and 0-10V, at a quoted output voltage error of 0.2%. An on-board DC/DC booster makes the high rail, and that 12V line is broken out to a pad where you can draw up to 100mA to run something external.

Three solder jumpers on the back (A0, A1, A2) set the I2C address, so eight boards can share one bus for 16 analog channels. The logic side accepts 3.3V or 5V and is kept separate from the boosted output stage, so a Pico and an UNO both talk to it without level shifting. STEMMA QT / Qwiic connectors are on board, plus a 4-pin 2.5mm terminal block and a strip of 0.1" header for breadboard work.

Parts and the real cost of the afternoon

  • The GP8403 breakout itself
  • Any I2C host you already own: Arduino UNO, Raspberry Pi, Pico, or an ESP32
  • A STEMMA QT cable, or four jumper wires to SDA, SCL, power and ground
  • A multimeter, because you will want to confirm the output really swings to 10V

Two gotchas worth knowing before you start. The outputs carry 10uF caps per the datasheet, so settling is slow. This part is for bias and set-point work, not for synthesising fast waveforms. And the non-volatile memory feature, which lets the chip boot back into its last voltage, is driven by bit-banging the I2C lines. Adafruit got it working on an ATmega328, but plenty of platforms will not hand over their I2C pins, so test that on your own hardware rather than assuming it.

Arduino and CircuitPython libraries ship with it, so the first output takes maybe ten minutes of code. Read the full product write-up at Adafruit, then spend Sunday wiring one channel to that variable-speed fan you gave up on.


Originally published on blog.circuit.rocks.

arduino #arduinoprojects #electronics #embedded #circuitrocks

Top comments (0)