Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.
Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.
Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.
Modul DAC MCP4725, I2C, 12 biti, cu EEPROM, HW-315
Modul breakout cu convertorul MCP4725, un DAC pe 12 biti cu interfata I2C, care transforma o valoare digitala intr-o tensiune analogica reala pe pinul OUT, utila pentru generare de semnal, referinte de tensiune reglabile si control analogic in proiecte cu Arduino, ESP32, STM32 sau Raspberry Pi. Dispune de memorie EEPROM interna, adresa I2C selectabila prin jumperul ADDR si pull-up dezactivabile pentru montaje cu mai multe module pe aceeasi magistrala, la o alimentare de 2.7 - 5.5 VDC.
Cumparand acest produs primesti 0,58 RON in puncte de fidelitate.
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
Produsele sunt expediate din stoc propriu
Primesti puncte la fiecare comanda, in valoare de 5%
Modulul MCP4725 este un convertor digital-analogic de 12 biti cu interfata I2C, care permite unei placi de dezvoltare sau unui calculator sa produca la iesire o tensiune analogica reala, nu doar un semnal PWM filtrat. Este util acolo unde este nevoie de o tensiune de referinta reglabila, de un semnal de control analogic pentru un amplificator sau un motor, sau de o forma de unda generata digital, cum ar fi o unda sinusoidala sau o rampa, pentru proiecte audio, instrumente de masura, automatizari si control de proces.
Circuitul principal este MCP4725, un DAC cu rezolutie de 12 biti, memorie EEPROM interna pentru pastrarea valorii de iesire si a configuratiei dupa oprirea alimentarii, si iesire de tip rail-to-rail raportata la tensiunea de alimentare VCC. Comunicatia se face prin I2C, cu suport pentru modurile Standard de 100 kbps, Fast de 400 kbps si High-Speed de 3.4 Mbps, iar timpul de stabilizare tipic al iesirii este de 6 us. Adresa de pe magistrala este selectabila prin pinul de adresa A0, ceea ce permite folosirea mai multor module MCP4725 pe aceeasi magistrala I2C.
Printre caracteristicile principale se numara conectorul cu 6 pini OUT, GND, SCL, SDA, VCC si un al doilea GND, jumperul ADDR pentru selectarea starii pinului de adresa A0 si rezistentele de pull-up de pe magistrala I2C, care pot fi dezactivate atunci cand pe aceeasi magistrala sunt conectate mai multe module. Alimentarea modulului se face la o tensiune cuprinsa intre 2.7 si 5.5 VDC, aplicata pe pinii VCC si GND.
Prin interfata I2C, modulul este compatibil cu Arduino, ESP32, STM32, Raspberry Pi si orice alta placa de dezvoltare sau calculator cu port I2C disponibil.
Specificatii:
Tensiune alimentare: 2.7 - 5.5 VDC
Curent iesire: maxim 25 mA
Cip: MCP4725
Tip: convertor digital-analogic (DAC) cu EEPROM
Rezolutie: 12 biti (4096 pasi)
Interfata: I2C (Standard 100 kbps, Fast 400 kbps, High-Speed 3.4 Mbps)
Adresa I2C implicita: 0x60 (pin ADDR / A0 legat la masa)
Timp de stabilizare: 6 us (tipic)
Pull-up I2C: dezactivabile, pentru conectarea mai multor module pe aceeasi magistrala
Iesire: tensiune analogica rail-to-rail, raportata la VCC
Dimensiuni: 14.9 x 15.2 mm
Layout:

1. Header 6 pini: Se livreaza nelipit, pentru montare pe breadboard sau conectare cu fire Dupont.
2. OUT: Iesirea de tensiune analogica generata de convertor.
3. GND: Masa semnalului de iesire, alaturata pinului OUT.
4. SCL: Linia de ceas a interfetei I2C.
5. SDA: Linia de date a interfetei I2C.
6. VCC: Alimentarea pozitiva a modulului, intre 2.7 si 5.5 VDC.
7. ADDR: Jumper pentru starea pinului de adresa A0, implicit legat la masa pentru adresa 0x60.
8. GND: Masa alimentarii, alaturata pinilor VCC si ADDR.
9. Circuit MCP4725: Convertorul digital-analogic original, montat in capsula SOT-23-6.
10. Gauri de montare: Doua orificii pentru fixarea mecanica a placii.
Pinout:
| Conector | Pin | Functie |
|---|---|---|
| J1 Header | OUT | Iesire tensiune analogica (DAC) |
| J1 Header | GND | Masa semnal de iesire |
| J1 Header | SCL | Ceas I2C |
| J1 Header | SDA | Date I2C |
| J1 Header | VCC | Alimentare 2.7 - 5.5 VDC |
| J1 Header | GND | Masa alimentare |
| ADDR (A0) | Adresa I2C |
|---|---|
| Implicit, legat la GND | 0x60 |
| Punte spre VCC | 0x61 |
Utilizare:
Conectati VCC si GND la o sursa de 2.7 - 5.5 VDC, de exemplu pinul 5V sau 3.3V al placii de dezvoltare, respectand polaritatea.
Conectati SCL si SDA la pinii I2C ai placii de dezvoltare, de exemplu A4 si A5 la Arduino Uno sau pinii dedicati I2C la ESP32, STM32 ori Raspberry Pi.
Daca placa de dezvoltare lucreaza la 3.3 V si modulul este alimentat la 5 V, alimentati modulul la 3.3 V in loc sa folositi un convertor de nivel pe SCL si SDA.
Lasati jumperul ADDR nemodificat pentru adresa 0x60, sau faceti puntea spre VCC atunci cand aveti nevoie de a doua adresa, 0x61, pe aceeasi magistrala.
Daca folositi mai multe module MCP4725 pe aceeasi magistrala I2C, dezactivati rezistentele de pull-up de pe toate modulele cu exceptia unuia singur.
Din program, initializati comunicatia I2C si trimiteti o valoare intre 0 si 4095 catre modul, aceasta fiind convertita intr-o tensiune proportionala disponibila pe pinul OUT.
Masurati tensiunea de iesire intre pinii OUT si GND alaturat, cu un multimetru sau cu un osciloscop.
Pentru generarea unei forme de unda, actualizati valoarea trimisa la intervale scurte si regulate in bucla programului, tinand cont ca timpul de stabilizare tipic al iesirii este de 6 us, viteza reala fiind limitata in principal de viteza magistralei I2C.
Nu depasiti tensiunea maxima de alimentare de 5.5 VDC si nu inversati polaritatea pe pinii VCC si GND.
Diagrama dimensiuni:

- Circuit integrat principal
- MCP4725
- Interfata comunicatie
- I2C
- Rezolutie convertor
- 12 bit
Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.
Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.
Avertismente generale de siguranta:
Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.
Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.
Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.
Identificare produs:
Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.
Producator / Importator / Distribuitor:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
Website: www.sigmanortec.ro
Persoana responsabila in UE:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
/*
Test code for MCP4725 I2C DAC Breakout Module (HW-315)
Board: Arduino Uno (Arduino AVR Boards package, Tools > Board > Arduino Uno)
Library: Adafruit MCP4725 by Adafruit (Library Manager), requires Wire (built in)
Wiring:
Arduino 5V -> MCP4725 VCC
Arduino GND -> MCP4725 GND
Arduino A4 (SDA) -> MCP4725 SDA
Arduino A5 (SCL) -> MCP4725 SCL
Output is read between MCP4725 OUT and the GND pin next to it.
*/
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
const uint8_t MCP4725_I2C_ADDRESS = 0x60; // default address, ADDR pad tied to GND
const float VCC = 5.0; // Arduino 5V rail used as DAC reference
void setup() {
Serial.begin(9600);
while (!Serial) {
// wait for native USB serial ports
}
Wire.begin(); // start I2C as master on A4 (SDA) and A5 (SCL)
Serial.println("MCP4725 test starting...");
if (!dac.begin(MCP4725_I2C_ADDRESS)) {
Serial.println("Error: MCP4725 not found on the I2C bus, check wiring and address");
while (1) {
// stop here, nothing else to test without the DAC
}
}
Serial.println("MCP4725 found and initialized");
}
void loop() {
// Slowly ramp the output from 0 to full scale and back, printing the approximate voltage
for (int32_t code = 0; code <= 4095; code += 256) {
dac.setVoltage(code, false); // update DAC register only, do not write to EEPROM
float voltage = code * VCC / 4095.0;
Serial.print("Code: ");
Serial.print(code);
Serial.print(" Approx voltage: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(300);
}
for (int32_t code = 4095; code >= 0; code -= 256) {
dac.setVoltage(code, false);
float voltage = code * VCC / 4095.0;
Serial.print("Code: ");
Serial.print(code);
Serial.print(" Approx voltage: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(300);
}
}
Modulul MCP4725 este un convertor digital-analogic cu interfata I2C, care genereaza o tensiune analogica reala pe pinul OUT, pornind de la o valoare digitala trimisa de pe o placa de dezvoltare. Acest tutorial arata cum se conecteaza si se programeaza modulul cu o placa Arduino Uno, pentru a obtine o tensiune reglabila intre 0 V si tensiunea de alimentare.

Cum functioneaza:
MCP4725 este un DAC cu rezolutie de 12 biti, ceea ce inseamna ca accepta valori digitale intre 0 si 4095. Tensiunea de iesire se calculeaza aproximativ cu formula Vout = cod x VCC / 4096, unde VCC este tensiunea de alimentare a modulului. La o alimentare de 5 V, codul 0 produce aproximativ 0 V, codul 2048 produce aproximativ 2.5 V, iar codul 4095 produce aproximativ 5 V. Modulul retine ultima valoare scrisa in memoria EEPROM interna, astfel incat poate reporni cu aceeasi iesire si fara ca microcontrolerul sa fi transmis inca ceva dupa alimentare.
Ce ai nevoie:
- 1 x MCP4725 I2C DAC Breakout Module
- 1 x Placa dezvoltare Uno R3 cu Wifi ESP8266, compatibila Arduino
- 1 x Cablu MiniUSB, 30cm
- 1 x 40 fire Dupont 10cm, Mama-Mama
Conectare:
Modulul se alimenteaza direct de la pinul de 5 V al placii Arduino Uno, iar liniile I2C se conecteaza la pinii dedicati A4 si A5.
| Pin produs | Se conecteaza la | Rol |
|---|---|---|
| VCC | Arduino Uno 5V | Alimentare modul, in limitele 2.7 - 5.5 VDC |
| GND | Arduino Uno GND | Masa comuna |
| SDA | Arduino Uno A4 | Linie de date I2C |
| SCL | Arduino Uno A5 | Linie de ceas I2C |
Arduino Uno lucreaza la 5 V logic, acelasi nivel acceptat de modul, asa ca nu este nevoie de convertor de nivel pe SDA si SCL. Pinii A4 si A5 au pull-up intern activat automat de biblioteca Wire, suficient pentru un singur modul pe magistrala.
Placa si biblioteci:
Din Arduino IDE selectati placa Arduino Uno, disponibila implicit in pachetul Arduino AVR Boards. Nu este nevoie de nicio adresa suplimentara in File Preferences pentru aceasta placa. Instalati din Library Manager biblioteca Adafruit MCP4725 de la Adafruit, care are nevoie si de biblioteca Wire, inclusa deja in Arduino IDE.
Codul:
Codul initializeaza modulul pe adresa I2C 0x60, trimite pe rand cateva valori cunoscute si apoi genereaza un ciclu de unda sinusoidala pe iesire.
/*
Board: Arduino Uno (Arduino AVR Boards package)
Library: Adafruit MCP4725 by Adafruit (requires Wire, included with Arduino IDE)
Wiring:
Arduino 5V -> MCP4725 VCC
Arduino GND -> MCP4725 GND
Arduino A4 (SDA) -> MCP4725 SDA
Arduino A5 (SCL) -> MCP4725 SCL
*/
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
const uint8_t MCP4725_I2C_ADDRESS = 0x60; // default address, ADDR pad tied to GND
const float VCC = 5.0; // Arduino 5V rail used as the DAC reference
void setup() {
Serial.begin(9600);
while (!Serial) {
// wait for the serial port on boards that need it
}
Wire.begin(); // join the I2C bus as master on A4 (SDA) and A5 (SCL)
if (!dac.begin(MCP4725_I2C_ADDRESS)) {
Serial.println("MCP4725 not found, check wiring and I2C address");
while (1) {
// halt here, nothing useful can be done without the DAC
}
}
Serial.println("MCP4725 ready");
}
void loop() {
// Step through a few known DAC codes and print the expected output voltage
uint16_t steps[] = {0, 1024, 2048, 3072, 4095};
for (uint8_t i = 0; i < 5; i++) {
uint16_t code = steps[i];
dac.setVoltage(code, false); // write the code to the DAC register only, not to EEPROM
float voltage = code * VCC / 4095.0;
Serial.print("DAC code: ");
Serial.print(code);
Serial.print(" -> approx output: ");
Serial.print(voltage, 2);
Serial.println(" V");
delay(1000);
}
// Generate one slow sine wave cycle to show a continuously changing analog output
Serial.println("Generating sine wave cycle...");
for (uint16_t angleDeg = 0; angleDeg < 360; angleDeg += 5) {
float angleRad = angleDeg * PI / 180.0;
float normalized = (sin(angleRad) + 1.0) * 0.5; // normalize sine to 0..1
uint16_t code = (uint16_t)(normalized * 4095);
dac.setVoltage(code, false);
delay(20);
}
}
Cum functioneaza codul:
La inceputul programului sunt incluse bibliotecile Wire si Adafruit_MCP4725, este creat obiectul dac de tip Adafruit_MCP4725 si este definita constanta MCP4725_I2C_ADDRESS cu valoarea 0x60, adresa implicita a modulului cu pinul ADDR legat la masa.
In functia setup se initializeaza comunicatia seriala, se porneste magistrala I2C cu Wire.begin, iar apoi se apeleaza dac.begin cu adresa modulului. Daca modulul nu raspunde, mesajul de eroare este afisat pe monitorul serial si programul ramane blocat intr-o bucla de asteptare.
In functia loop, vectorul steps contine cinci coduri digitale reprezentative intre 0 si 4095. Pentru fiecare valoare, dac.setVoltage trimite codul catre modul, iar programul calculeaza si afiseaza pe monitorul serial tensiunea aproximativa asteptata la iesire, folosind formula cod x VCC / 4095.
Dupa parcurgerea celor cinci valori, codul genereaza un ciclu complet de unda sinusoidala, calculand pentru fiecare unghi intre 0 si 360 de grade o valoare normalizata intre 0 si 1 cu functia sin, pe care o transforma intr-un cod digital intre 0 si 4095 trimis catre modul cu dac.setVoltage.
Rezultat:
Deschideti monitorul serial la 9600 baud. Veti vedea mesajul de confirmare a initializarii modulului, apoi cele cinci coduri digitale impreuna cu tensiunea aproximativa calculata pentru fiecare, urmate de mesajul care anunta generarea ciclului de unda sinusoidala. Daca masurati pinii OUT si GND cu un multimetru in timpul fiecarei pauze de o secunda, veti citi o tensiune apropiata de cea afisata pe monitor.
MCP4725 ready
DAC code: 0 -> approx output: 0.00 V
DAC code: 1024 -> approx output: 1.25 V
DAC code: 2048 -> approx output: 2.50 V
DAC code: 3072 -> approx output: 3.75 V
DAC code: 4095 -> approx output: 5.00 V
Generating sine wave cycle...
DAC code: 0 -> approx output: 0.00 V
DAC code: 1024 -> approx output: 1.25 V
DAC code: 2048 -> approx output: 2.50 V
DAC code: 3072 -> approx output: 3.75 V
DAC code: 4095 -> approx output: 5.00 V
Probleme frecvente:
Daca monitorul serial afiseaza mesajul ca modulul nu a fost gasit, verificati ca SDA si SCL nu sunt inversate intre ele si ca masa modulului este conectata la masa placii Arduino.
Daca tensiunea masurata pe OUT este tot timpul 0 V, verificati daca modulul este alimentat corect pe VCC si daca ati scris in cod o valoare diferita de 0 catre functia setVoltage.
Daca modulul nu raspunde pe adresa I2C 0x60, verificati jumperul ADDR, deoarece o punte accidentala spre VCC muta adresa modulului la 0x61.
Daca valorile citite pe OUT par instabile sau zgomotoase, verificati ca firele folosite pentru alimentare si pentru I2C sunt scurte si bine fixate, iar modulul nu este alimentat simultan din doua surse diferite.
Daca folositi doua module MCP4725 pe aceeasi magistrala si unul dintre ele nu raspunde corect, verificati ca ati dezactivat rezistentele de pull-up pe toate modulele in afara de unul singur.
Limitari si sfaturi:
Tensiunea de iesire a modulului este limitata intre 0 V si tensiunea de alimentare VCC, nu poate genera tensiuni negative sau mai mari decat alimentarea. Rezolutia de 12 biti ofera pasi de aproximativ 1.2 mV la o alimentare de 5 V, suficienti pentru majoritatea aplicatiilor de control si generare de semnal, dar insuficienti pentru masuratori de precizie foarte ridicata. Viteza de actualizare a iesirii este limitata de viteza magistralei I2C si de timpul de stabilizare de 6 us al convertorului, ceea ce face modulul potrivit pentru semnale lente sau de control, nu pentru semnale audio de inalta frecventa. Pornind de la acest montaj, puteti construi un generator de semnal cu forme de unda variate, o sursa de tensiune de referinta reglabila pentru alte circuite sau o bucla de control analogic pentru un amplificator sau un driver de motor.