View this project on CADLAB.io.
- requires an amplifier on the PWM output pin (see below)
- see blog articles
- ATmega328-based Arduinos (e.g., Uno, Pro, Pro Mini, etc.): pins 3, 9, 10
- ArduTouch: pin 9
- ATmega1280-based Arduinos (e.g., Mega): pins 44, 45, 46
- Arduino Leonardo: pin 5
- Arduino Due: pins DAC0 or DAC1
- Teensy 3.2: pin A14
- Teensy 3.5, 3.6: pins A21, A22
- Teensy LC: pin A12
- ESP8266: pins 0 to 16 (with analogWrite())
- ESP32: DAC1 or DAC2 (pins 25 or 26)
Component choices in this circuit aren't very critical:
- 22k (vs 27k) and 47n (vs 10n) parts in the input low-pass filter
- 100n (vs 10u) bypass capacitor between pin 7 and gnd
- Used the inverting input instead of the non-inverting one (although in this circuit I noticed no difference)
- 47n (vs 100n) output snubber capacitor
- original implementation by Clive Webster in Webbotlib
- ported to Arduino by Gabriel Petrut
- Stephen Crane modified it to use pins other than pin 10 with the help of this tutorial
- manitou48 added support for Leonardo and ARM processors with DAC (Teensy, Due)
- Teensy forum
- separate port/hack for MBED ARM with DAC repository
- Hackaday article on LM386 amplifiers