Arduino has ADC ( Analog digital converter) and PWM (Pulse with modulation) but if you need true Analog out, you are out of luck. But all is not lost. We can add the analog capability to Arduino with MCP4725 12-Bit Digital to Analog converter. This nifty chip has also on board EEPROM so you can save your last value in case of power failure. This chip has also 3.4Mbps Fast Mode I2C (Unfortunately Arduino does not support that speed), with Arduino you can update the output at around 200KHz. So lets jump in…
- Connect GY4725 with Arduino. Connection scheme is following:
Arduino GY4725 5V Vcc GND GND A4 SDA A5 SCL - Open Arduino IDE -> Sketch -> Include Library -> Manage Libraries…
- Search “Adafruit MCP4725” and Install.
- Lets write the sketch:
#include <Wire.h> //MCP4725 library #include <Adafruit_MCP4725.h> Adafruit_MCP4725 dac; void setup() { //Start Serial Serial.begin(9600); //Start DAC. DAC address 0x60 or 0x61 dac.begin(0x60); } void loop(){ for(int x=1; x<4096; x++){ dac.setVoltage(x,false); // Set DAC voltage. false = don't save to EEPROM delayMicroseconds(1); } for(int x=4095; x>1; x--){ dac.setVoltage(x, false); delayMicroseconds(1); } }
- Version 2 of the sketch (loop part):
void loop(){ int randomVoltage = random(0,4096); dac.setVoltage(randomVoltage,false); }
Result:
- And that’s all folks.
Leave a Reply