- MCP4725 DAC-Modul (Digital-Analog-Wandler)
- I2C-Kommunikation im MCP4725 DAC
- Erforderliche Komponenten
- Schaltplan
- DAC Arduino Programmierung
- Digital-Analog-Wandlung mit MCP4725 und Arduino
Wir alle wissen, dass die Mikrocontroller nur mit digitalen Werten arbeiten, aber in der realen Welt müssen wir uns mit analogen Signalen befassen. Aus diesem Grund dient ADC (Analog-Digital-Wandler) dazu, reale Analogwerte in digitale Form umzuwandeln, damit Mikrocontroller die Signale verarbeiten können. Aber was ist, wenn wir analoge Signale von digitalen Werten benötigen? Hier kommt der DAC (Digital-Analog-Wandler).
Ein einfaches Beispiel für einen Digital-Analog-Wandler ist die Aufnahme eines Songs im Studio, in dem ein Künstlersänger ein Mikrofon verwendet und einen Song singt. Diese analogen Schallwellen werden in digitale Form umgewandelt und dann in einer digitalen Formatdatei gespeichert. Wenn das Lied unter Verwendung der gespeicherten digitalen Datei abgespielt wird, werden diese digitalen Werte für die Lautsprecherausgabe in analoge Signale umgewandelt. In diesem System wird also DAC verwendet.
DAC kann in vielen Anwendungen wie Motorsteuerung, Steuerhelligkeit der LED-Leuchten, Audioverstärker, Videocodierer, Datenerfassungssysteme usw. verwendet werden.
In vielen Mikrocontrollern gibt es einen internen DAC, mit dem ein analoger Ausgang erzeugt werden kann. Arduino-Prozessoren wie ATmega328 / ATmega168 verfügen jedoch nicht über einen eingebauten DAC. Arduino verfügt über eine ADC-Funktion (Analog-Digital-Wandler), jedoch keinen DAC (Digital-Analog-Wandler). Es verfügt über einen 10-Bit-DAC im internen ADC, dieser DAC kann jedoch nicht als eigenständiger DAC verwendet werden. Hier in diesem Arduino DAC-Tutorial verwenden wir eine zusätzliche Karte namens MCP4725 DAC Module mit Arduino.
MCP4725 DAC-Modul (Digital-Analog-Wandler)
Der MCP4725 IC ist ein 12-Bit-Digital-Analog- Wandlermodul, mit dem analoge Ausgangsspannungen von (0 bis 5 V) erzeugt werden und das über I2C-Kommunikation gesteuert wird. Es kommt auch mit integriertem nichtflüchtigen Speicher-EEPROM.
Dieser IC hat eine 12-Bit-Auflösung. Dies bedeutet, dass wir (0 bis 4096) als Eingang verwenden, um den Spannungsausgang in Bezug auf die Referenzspannung bereitzustellen. Die maximale Referenzspannung beträgt 5V.
Formel zur Berechnung der Ausgangsspannung
O / P-Spannung = (Referenzspannung / Auflösung) x Digitalwert
Zum Beispiel, wenn wir 5 V als Referenzspannung verwenden und annehmen, dass der digitale Wert 2048 ist. Um also den DAC-Ausgang zu berechnen.
O / P-Spannung = (5/4096) x 2048 = 2,5 V.
Pinbelegung des MCP4725
Unten sehen Sie das Bild des MCP4725 mit deutlich sichtbaren Pin-Namen.
Stifte von MCP4725 |
Verwenden |
AUS |
Gibt analoge Spannung aus |
GND |
GND für die Ausgabe |
SCL |
I2C Serial Clock-Leitung |
SDA |
I2C Serial Data Line |
VCC |
Eingangsreferenzspannung 5V oder 3,3V |
GND |
GND für die Eingabe |
I2C-Kommunikation im MCP4725 DAC
Dieser DAC-IC kann über die I2C-Kommunikation mit jedem Mikrocontroller verbunden werden. Für die I2C-Kommunikation sind nur zwei Drähte SCL und SDA erforderlich. Standardmäßig lautet die I2C-Adresse für MCP4725 0x60 oder 0x61 oder 0x62. Für mich ist es 0x61. Über den I2C-Bus können mehrere MCP4725-DAC-ICs verbunden werden. Wir müssen nur die I2C-Adresse des IC ändern. Die I2C-Kommunikation in Arduino wurde bereits im vorherigen Tutorial ausführlich erläutert.
In diesem Tutorial werden wir einen MCP4725 DAC IC mit Arduino Uno verbinden und mithilfe eines Potentiometers einen analogen Eingangswert für den Arduino Pin A0 bereitstellen. Dann wird ADC verwendet, um analoge Werte in digitale Form umzuwandeln. Danach werden diese digitalen Werte über den I2C-Bus an MCP4725 gesendet, um mit dem DAC MCP4725 IC in analoge Signale umgewandelt zu werden. Der Arduino-Pin A1 wird verwendet, um den Analogausgang des MCP4725 vom Pin OUT zu überprüfen und schließlich die ADC- und DAC-Werte und -Spannungen im 16x2-LCD-Display anzuzeigen.
Erforderliche Komponenten
- Arduino Nano / Arduino Uno
- 16x2 LCD-Anzeigemodul
- MCP4725 DAC IC
- 10k Potentiometer
- Steckbrett
- Überbrückungsdrähte
Schaltplan
Die folgende Tabelle zeigt die Verbindung zwischen MCP4725 DAC IC, Arduino Nano und Multi-Meter
MCP4725 |
Arduino Nano |
Multimeter |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 oder OUT |
A1 |
+ ve Terminal |
GND |
GND |
-ve Terminal |
VCC |
5V |
NC |
Verbindung zwischen 16x2 LCD und Arduino Nano
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Vom Potentiometer-Mittelstift zum Einstellen des Kontrasts des LCD |
RS |
D2 |
RW |
GND |
E. |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
EIN |
+ 5V |
K. |
GND |
Ein Potentiometer wird verwendet, wobei der mittlere Pin mit dem analogen Eingang A0 von Arduino Nano verbunden ist, der linke Pin mit GND verbunden ist und der rechte Pin mit 5 V von Arduino verbunden ist.
DAC Arduino Programmierung
Der vollständige Arduino-Code für das DAC-Tutorial wird am Ende mit einem Demonstrationsvideo gegeben. Hier haben wir den Code Zeile für Zeile erklärt.
Fügen Sie zunächst die Bibliothek für I2C und LCD mit der Bibliothek wire.h und liquidcrystal.h hinzu.
#einschließen
Als nächstes definieren und initialisieren Sie die LCD-Pins gemäß den Pins, die wir mit dem Arduino Nano verbunden haben
LiquidCrystal lcd (2,3,4,5,6,7); // Definieren Sie die LCD-Anzeigestifte RS, E, D4, D5, D6, D7
Definieren Sie als Nächstes die I2C-Adresse des MCP4725-DAC-IC
#define MCP4725 0x61
In der Leere Setup ()
Beginnen Sie zuerst die I2C-Kommunikation an den Pins A4 (SDA) und A5 (SCL) von Arduino Nano
Wire.begin (); // Startet die I2C-Kommunikation
Stellen Sie als nächstes das LCD-Display in den 16x2-Modus und zeigen Sie eine Willkommensnachricht an.
lcd.begin (16,2); // Setzt das LCD in den 16X2-Modus lcd.print ("CIRCUIT DIGEST"); Verzögerung (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("DAC mit MCP4725"); Verzögerung (2000); lcd.clear ();
In der Leerenschleife ()
1. Geben Sie zuerst in den Puffer den Steuerbytewert (0b01000000) ein.
(010-Setzt MCP4725 in den Schreibmodus)
buffer = 0b01000000;
2. Die folgende Anweisung liest den Analogwert von Pin A0 und wandelt ihn in digitale Werte (0-1023) um. Arduino ADC hat eine Auflösung von 10 Bit. Multiplizieren Sie es mit 4, um 0-4096 zu erhalten, da der DAC eine Auflösung von 12 Bit hat.
adc = analogRead (A0) * 4;
3. Mit dieser Anweisung wird die Spannung aus dem ADC-Eingangswert (0 bis 4096) und der Referenzspannung als 5 V ermittelt
float ipvolt = (5.0 / 4096.0) * adc;
4. Unterhalb der ersten Zeile werden die höchstwertigen Bitwerte in den Puffer gestellt, indem 4 Bits in der ADC-Variablen nach rechts verschoben werden, und in der zweiten Zeile werden die niedrigstwertigen Bitwerte in den Puffer eingefügt, indem 4 Bits in der ADC-Variablen nach links verschoben werden.
buffer = adc >> 4; buffer = adc << 4;
5. Die folgende Anweisung liest die analoge Spannung von A1, dem DAC-Ausgang (OUTPUT-Pin des MCP4725-DAC-IC). Dieser Pin kann auch mit einem Multimeter verbunden werden, um die Ausgangsspannung zu überprüfen. Erfahren Sie hier, wie Sie Multimeter verwenden.
unsigned int analogread = analogRead (A1) * 4;
6. Ferner wird der Spannungswert aus der Variablen analogread unter Verwendung der folgenden Formel berechnet
float opvolt = (5.0 / 4096.0) * analogread;
7. Die folgende Anweisung wird verwendet, um die Übertragung mit MCP4725 zu beginnen
Wire.beginTransmission (MCP4725);
Sendet das Steuerbyte an I2C
Wire.write (Puffer);
Sendet das MSB an I2C
Wire.write (Puffer);
Sendet das LSB an I2C
Wire.write (Puffer);
Beendet die Übertragung
Wire.endTransmission ();
Zeigen Sie diese Ergebnisse nun endlich mit lcd.print () auf dem LCD 16x2-Display an.
lcd.setCursor (0,0); lcd.print ("A IP:"); lcd.print (adc); lcd.setCursor (10,0); lcd.print ("V:"); lcd.print (ipvolt); lcd.setCursor (0,1); lcd.print ("D OP:"); lcd.print (analogread); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); Verzögerung (500); lcd.clear ();
Digital-Analog-Wandlung mit MCP4725 und Arduino
Nachdem Sie alle Schaltkreisverbindungen hergestellt und den Code in Arduino hochgeladen haben, variieren Sie das Potentiometer und beobachten Sie die Ausgabe auf dem LCD . In der ersten Zeile des LCD werden der ADC-Eingangswert und die Spannung angezeigt, und in der zweiten Zeile werden der DAC-Ausgangswert und die Ausgangsspannung angezeigt.
Sie können die Ausgangsspannung auch überprüfen, indem Sie ein Multimeter an den OUT- und GND-Pin des MCP4725 anschließen.
Auf diese Weise können wir digitale Werte in analoge konvertieren, indem wir das DAC-Modul MCP4725 mit Arduino verbinden.