MCP4725 DAC Modul I2C 12 Bit mit EEPROM und analogem Ausgang
zoom_out_map
chevron_left chevron_right

Produktbilder dienen ausschließlich zu Informationszwecken und können je nach Charge und Lieferant geringfügige Unterschiede aufweisen. Produktspezifikationen und Preise können ohne vorherige Ankündigung geändert werden. Wir tun unser Bestes, um der Produktseite möglichst genaue und richtige Spezifikationen hinzuzufügen, es ist jedoch möglich, dass diese nicht ganz korrekt sind. Sollten Sie einen solchen Fall feststellen, melden Sie ihn uns bitte.

Das Produkt ist für Fachleute bestimmt und erfordert qualifiziertes und autorisiertes Personal. Dem Produkt liegt keine Montage-/Gebrauchsanleitung bei . Die Inbetriebnahme des Produktes durch nicht qualifizierte Personen führt zum Verlust der Garantie gemäß den AGB auf der Seite.

Die angegebenen technischen Spezifikationen (Strom, Leistung usw.) stellen maximale zulässige Werte unter idealen Betriebsbedingungen dar. Für einen sicheren Betrieb und eine optimale Lebensdauer wird empfohlen, das Produkt im Dauerbetrieb mit höchstens 50 % der angegebenen Maximalwerte zu verwenden.

Neu

DAC-Modul MCP4725, I2C, 12 Bit, mit EEPROM, HW-315

Breakout-Modul mit dem MCP4725-Wandler, einem 12-Bit-DAC mit I2C-Schnittstelle, der einen digitalen Wert in eine reale analoge Spannung am OUT-Pin umwandelt, geeignet für Signalgenerierung, einstellbare Spannungsreferenzen und analoge Steuerung in Projekten mit Arduino, ESP32, STM32 oder Raspberry Pi. Es verfügt über einen internen EEPROM-Speicher, eine über den ADDR-Jumper wählbare I2C-Adresse und deaktivierbare Pull-ups für Aufbauten mit mehreren Modulen am selben Bus, bei einer Versorgungsspannung von 2,7 bis 5,5 VDC.

11,59 RON Bruttopreis

9,58 RON zzgl. MwSt.

No reviews yet

Shipping by Donnerstag 22 Oktober

Mit dem Kauf dieses Produkts erhalten Sie 0,58 RON an Treuepunkten.

Garantie: 24 Monate für Privatpersonen
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
TREUEPUNKTE
Sie erhalten bei jeder Bestellung Punkte im Wert von 5 %.

Das MCP4725-Modul ist ein 12-Bit Digital-Analog-Wandler mit I2C-Schnittstelle, der es einem Entwicklungsboard oder einem Computer ermöglicht, am Ausgang eine echte analoge Spannung zu erzeugen, nicht nur ein gefiltertes PWM-Signal. Es ist dort nützlich, wo eine einstellbare Referenzspannung, ein analoges Steuersignal für einen Verstärker oder Motor oder eine digital erzeugte Wellenform wie eine Sinuswelle oder Rampe benötigt wird, etwa für Audio-Projekte, Messgeräte, Automatisierung und Prozesssteuerung.

Der Hauptbaustein ist der MCP4725, ein DAC mit 12-Bit-Auflösung, internem EEPROM zum Speichern des Ausgangswerts und der Konfiguration nach dem Ausschalten sowie einem Rail-to-Rail-Ausgang bezogen auf die Versorgungsspannung VCC. Die Kommunikation erfolgt über I2C mit Unterstützung für den Standardmodus mit 100 kbps, den Fast-Modus mit 400 kbps und den High-Speed-Modus mit 3,4 Mbps, und die typische Einschwingzeit des Ausgangs beträgt 6 us. Die Busadresse ist über den Adresspin A0 auswählbar, wodurch mehrere MCP4725-Module am selben I2C-Bus verwendet werden können.

Zu den wichtigsten Merkmalen gehören der 6-Pin-Anschluss mit OUT, GND, SCL, SDA, VCC und einem zweiten GND, der ADDR-Jumper zur Auswahl des Zustands des Adresspins A0 sowie die Pull-up-Widerstände auf dem I2C-Bus, die deaktiviert werden können, wenn mehrere Module am selben Bus angeschlossen sind. Die Versorgung des Moduls erfolgt mit einer Spannung zwischen 2,7 und 5,5 VDC, angelegt an die Pins VCC und GND.

Über die I2C-Schnittstelle ist das Modul mit Arduino, ESP32, STM32, Raspberry Pi und jedem anderen Entwicklungsboard oder Computer mit verfügbarem I2C-Port kompatibel.

 

Spezifikationen:

Versorgungsspannung: 2,7 - 5,5 VDC

Ausgangsstrom: maximal 25 mA

Chip: MCP4725

Typ: Digital-Analog-Wandler (DAC) mit EEPROM

Auflösung: 12 Bit (4096 Schritte)

Schnittstelle: I2C (Standard 100 kbps, Fast 400 kbps, High-Speed 3,4 Mbps)

Standard-I2C-Adresse: 0x60 (ADDR / A0-Pin an Masse gelegt)

Einschwingzeit: 6 us (typisch)

I2C Pull-ups: deaktivierbar, für den Anschluss mehrerer Module am selben Bus

Ausgang: analoge Rail-to-Rail-Spannung, bezogen auf VCC

Abmessungen: 14,9 x 15,2 mm

 

Layout:

1. 6-Pin-Header: Wird unbestückt geliefert, zur Montage auf dem Breadboard oder zum Anschluss mit Dupont-Kabeln.

2. OUT: Vom Wandler erzeugter analoger Spannungsausgang.

3. GND: Masse des Ausgangssignals, neben dem OUT-Pin.

4. SCL: Taktleitung der I2C-Schnittstelle.

5. SDA: Datenleitung der I2C-Schnittstelle.

6. VCC: Positive Versorgung des Moduls, zwischen 2,7 und 5,5 VDC.

7. ADDR: Jumper für den Zustand des Adresspins A0, standardmäßig an Masse gelegt für die Adresse 0x60.

8. GND: Masse der Versorgung, neben den Pins VCC und ADDR.

9. MCP4725-Schaltung: Der originale Digital-Analog-Wandler im SOT-23-6-Gehäuse.

10. Montagebohrungen: Zwei Bohrungen zur mechanischen Befestigung der Platine.

 

Pinbelegung:

Anschluss Pin Funktion
J1 Header OUT Analoger Spannungsausgang (DAC)
J1 Header GND Masse des Ausgangssignals
J1 Header SCL I2C-Takt
J1 Header SDA I2C-Daten
J1 Header VCC Versorgung 2,7 - 5,5 VDC
J1 Header GND Versorgungsmasse

 

ADDR (A0) I2C-Adresse
Standard, an GND gelegt 0x60
Brücke zu VCC 0x61

 

Verwendung:

Verbinden Sie VCC und GND mit einer 2,7 - 5,5 VDC-Quelle, zum Beispiel mit dem 5V- oder 3,3V-Pin des Entwicklungsboards, und achten Sie auf die richtige Polarität.

Verbinden Sie SCL und SDA mit den I2C-Pins des Entwicklungsboards, zum Beispiel A4 und A5 beim Arduino Uno oder den dedizierten I2C-Pins bei ESP32, STM32 oder Raspberry Pi.

Wenn das Entwicklungsboard mit 3,3 V arbeitet und das Modul mit 5 V versorgt wird, versorgen Sie das Modul mit 3,3 V, anstatt einen Pegelwandler für SCL und SDA zu verwenden.

Lassen Sie den ADDR-Jumper unverändert für die Adresse 0x60 oder setzen Sie die Brücke zu VCC, wenn Sie die zweite Adresse 0x61 auf demselben Bus benötigen.

Wenn Sie mehrere MCP4725-Module am selben I2C-Bus verwenden, deaktivieren Sie die Pull-up-Widerstände auf allen Modulen bis auf einem.

Initialisieren Sie im Programm die I2C-Kommunikation und senden Sie einen Wert zwischen 0 und 4095 an das Modul; dieser wird in eine proportionale Spannung umgewandelt, die am OUT-Pin verfügbar ist.

Messen Sie die Ausgangsspannung zwischen dem OUT-Pin und dem benachbarten GND-Pin mit einem Multimeter oder einem Oszilloskop.

Zur Erzeugung einer Wellenform aktualisieren Sie den gesendeten Wert in kurzen, regelmäßigen Abständen in der Programmschleife; beachten Sie dabei, dass die typische Einschwingzeit des Ausgangs 6 us beträgt und die reale Geschwindigkeit hauptsächlich durch die I2C-Busgeschwindigkeit begrenzt wird.

Überschreiten Sie nicht die maximale Versorgungsspannung von 5,5 VDC und vertauschen Sie nicht die Polarität an den Pins VCC und GND.

 

Abmessungsdiagramm:

88290
Haupt-IC
MCP4725
Kommunikationsschnittstelle
I2C
Wandlerauflösung
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:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

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]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [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);
  }
}

Das Modul MCP4725 ist ein Digital-Analog-Wandler mit I2C-Schnittstelle, der eine echte Analogspannung am Ausgang OUT erzeugt, basierend auf einem digitalen Wert, der von einer Entwicklungsplatine gesendet wird. Dieses Tutorial zeigt, wie man das Modul mit einer Arduino Uno-Platine verbindet und programmiert, um eine regelbare Spannung zwischen 0 V und der Versorgungsspannung zu erhalten.

MCP4725 I2C DAC Breakout Modul

So funktioniert es:

Der MCP4725 ist ein DAC mit 12-Bit-Auflösung, was bedeutet, dass er digitale Werte zwischen 0 und 4095 akzeptiert. Die Ausgangsspannung wird ungefähr mit der Formel Vout = Code x VCC / 4096 berechnet, wobei VCC die Versorgungsspannung des Moduls ist. Bei einer Versorgung von 5 V erzeugt Code 0 etwa 0 V, Code 2048 etwa 2,5 V und Code 4095 etwa 5 V. Das Modul speichert den letzten geschriebenen Wert im internen EEPROM-Speicher, sodass es mit der gleichen Ausgabe neu starten kann, ohne dass der Mikrocontroller nach dem Einschalten noch etwas übertragen hat.

Was du brauchst:

Verbindung:

Das Modul wird direkt vom 5-V-Pin der Arduino Uno-Platine gespeist, und die I2C-Leitungen werden an die dedizierten Pins A4 und A5 angeschlossen.

Produktpin Verbunden mit Funktion
VCC Arduino Uno 5V Modulversorgung, im Bereich 2,7 - 5,5 VDC
GND Arduino Uno GND Gemeinsame Masse
SDA Arduino Uno A4 I2C-Datenleitung
SCL Arduino Uno A5 I2C-Taktleitung

Verbindung des DAC-Moduls MCP4725 mit Arduino Uno über I2C

Arduino Uno arbeitet mit 5-V-Logik, derselben Ebene, die das Modul akzeptiert, sodass kein Pegelwandler auf SDA und SCL erforderlich ist. Die Pins A4 und A5 haben interne Pull-ups, die automatisch von der Wire-Bibliothek aktiviert werden, was für ein einzelnes Modul auf dem Bus ausreichend ist.

Platine und Bibliotheken:

Wählen Sie in der Arduino IDE die Arduino Uno-Platine, die standardmäßig im Arduino AVR Boards-Paket verfügbar ist. Es ist keine zusätzliche Adresse in den Datei-Einstellungen für diese Platine erforderlich. Installieren Sie die Adafruit MCP4725-Bibliothek von Adafruit aus dem Library Manager, der auch die Wire-Bibliothek benötigt, die bereits in Arduino IDE enthalten ist.

Der Code:

Der Code initialisiert das Modul auf der I2C-Adresse 0x60, sendet nacheinander mehrere bekannte Werte und generiert dann einen Sinuswellenzyklus am Ausgang.

/*
  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);
  }
}

So funktioniert der Code:

Am Anfang des Programms werden die Bibliotheken Wire und Adafruit_MCP4725 eingebunden, das Objekt dac vom Typ Adafruit_MCP4725 wird erstellt und die Konstante MCP4725_I2C_ADDRESS mit dem Wert 0x60 wird definiert, die Standardadresse des Moduls mit dem ADDR-Pin an Masse gelegt.

In der Setup-Funktion wird die serielle Kommunikation initialisiert, der I2C-Bus wird mit Wire.begin gestartet und dann wird dac.begin mit der Modul-Adresse aufgerufen. Wenn das Modul nicht antwortet, wird die Fehlermeldung auf dem seriellen Monitor angezeigt und das Programm bleibt in einer Warteschleife stecken.

In der Loop-Funktion enthält der Vektor steps fünf repräsentative digitale Codes zwischen 0 und 4095. Für jeden Wert sendet dac.setVoltage den Code an das Modul, und das Programm berechnet und zeigt auf dem seriellen Monitor die erwartete ungefähre Spannung am Ausgang mit der Formel Code x VCC / 4095 an.

Nach Durchlaufen der fünf Werte generiert der Code einen vollständigen Sinuswellenzyklus, indem er für jeden Winkel zwischen 0 und 360 Grad einen normalisierten Wert zwischen 0 und 1 mit der sin-Funktion berechnet und diesen in einen digitalen Code zwischen 0 und 4095 umwandelt, der mit dac.setVoltage an das Modul gesendet wird.

Ergebnis:

Öffnen Sie den seriellen Monitor mit 9600 Baud. Sie sehen die Bestätigungsmeldung der Modul-Initialisierung, dann die fünf digitalen Codes zusammen mit der berechneten ungefähren Spannung für jeden, gefolgt von der Meldung, die die Erzeugung des Sinuswellenzyklus ankündigt. Wenn Sie während jeder einsekündigen Pause die Pins OUT und GND mit einem Multimeter messen, lesen Sie eine Spannung ab, die der auf dem Monitor angezeigten nahe kommt.

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

Häufige Probleme:

Wenn der serielle Monitor eine Meldung anzeigt, dass das Modul nicht gefunden wurde, überprüfen Sie, ob SDA und SCL nicht vertauscht sind und ob die Masse des Moduls mit der Masse der Arduino-Platine verbunden ist.

Wenn die auf OUT gemessene Spannung die ganze Zeit 0 V beträgt, überprüfen Sie, ob das Modul auf VCC richtig gespeist wird und ob Sie im Code einen anderen Wert als 0 an die setVoltage-Funktion geschrieben haben.

Wenn das Modul nicht auf der I2C-Adresse 0x60 antwortet, überprüfen Sie den ADDR-Jumper, da eine versehentliche Verbindung zu VCC die Modul-Adresse auf 0x61 verschiebt.

Wenn die auf OUT gelesenen Werte instabil oder verrauscht wirken, überprüfen Sie, ob die Drähte für Stromversorgung und I2C kurz sind und fest sitzen und das Modul nicht gleichzeitig aus zwei verschiedenen Quellen gespeist wird.

Wenn Sie zwei MCP4725-Module auf dem gleichen Bus verwenden und eines antwortet nicht korrekt, überprüfen Sie, dass Sie die Pull-up-Widerstände auf allen Modulen außer einem deaktiviert haben.

Beschränkungen und Tipps:

Die Ausgangsspannung des Moduls ist zwischen 0 V und der Versorgungsspannung VCC begrenzt, es kann keine negativen Spannungen oder Spannungen größer als die Versorgung erzeugen. Die 12-Bit-Auflösung bietet Schritte von etwa 1,2 mV bei 5 V Versorgung, ausreichend für die meisten Steuerungs- und Signalerzeugungsanwendungen, aber unzureichend für Messungen mit sehr hoher Genauigkeit. Die Aktualisierungsgeschwindigkeit des Ausgangs ist durch die I2C-Bus-Geschwindigkeit und die Stabilisierungszeit von 6 us des Wandlers begrenzt, was das Modul für langsame Signale oder Steuerung geeignet macht, nicht für hochfrequente Audiosignale. Ausgehend von diesem Aufbau können Sie einen Signalgenerator mit verschiedenen Wellenformen, eine einstellbare Referenzspannungsquelle für andere Schaltungen oder eine Analogregelschleife für einen Verstärker oder einen Motor-Treiber bauen.