All projects

Arduino DSP shield with a 10-bit R-2R DAC

Finished 2026

The board layout started from an instructor's template. I added the circuit and the routing. I never measured the 10-bit DAC on the shield, only the 5-bit one on a breadboard.

A two-layer Arduino Uno shield with an IMU, an OLED, buttons, pots, audio jacks and a 10-bit R-2R DAC, routed in KiCad from an instructor's template, plus a 5-bit breadboard DAC I measured on a scope.

KiCad 3D render of the shield with a blue IMU module, an OLED, blue trim pots, a grid of resistors, two buttons and an op-amp socket

The shield

It plugs on top of an Arduino Uno and gives it a small signal-processing playground: an MPU6050 IMU and a 0.96 inch OLED on I2C, two buttons, three 100k trim pots, audio in and audio out, and a 10-bit R-2R DAC on pins D4 to D13. The IMU and the display are off-board modules on headers. The DAC feeds an MCP6002 op-amp stage with an offset pot, and the ladder is built from 10k and 20k resistors.

What talks to what
The layout in KiCad

The DAC

I built a 5-bit version of the ladder on a breadboard first. The Arduino counts 0 to 31 on D4 to D8 every 10 ms, and a Falstad simulation of the same circuit reads 4.167 V at the test point. On the scope the output is a set of separate levels, but at 200 ms per division it’s not a clean staircase, and I never did a proper sweep.

The 5-bit DAC prototype
Its output at 200 ms per division

The firmware demos

The fan controller demo on the shield. The temperature is a pot, and the PWM output drives a pin, not a real fan.

What was mine

The layout began as an instructor’s template: the Arduino headers, the outline, the mounting holes and the IMU connector, with no routing. The final board has 46 footprints, 196 track segments and a ground zone. So I added the resistors, capacitors, op-amp socket, buttons, pots, audio jacks and headers, did all the routing, and wrote the silkscreen labels. The schematic started from the template’s too.