Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Sammeln der erforderlichen Komponenten
- Schritt 2: Das Arbeitsprinzip
- Schritt 3: Zusammenbringen der Teile
- Schritt 4: Hinzufügen der Teile für das Spannungserfassungsnetzwerk
- Schritt 5: Hinzufügen der Teile für das Current Sense-Netzwerk
- Schritt 6: Vervollständigen der verbleibenden Verbindungen und Beenden des Builds
- Schritt 7: Verbinden des Moduls mit Arduino
- Schritt 8: Projektcode und Schaltplan
- Schritt 9: Tutorial-Video
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Hallo zusammen, ich hoffe euch geht es gut! In diesem anweisbaren werde ich Ihnen zeigen, wie ich dieses Leistungsmesser / Wattmeter-Modul für die Verwendung mit einem Arduino-Board gemacht habe. Dieser Leistungsmesser kann die von der DC-Last verbrauchte Leistung berechnen. Neben der Leistung kann dieses Modul uns auch genaue Werte von Spannung und Strom liefern. Es kann problemlos niedrige Spannungen (ca. 2 V) und niedrige Ströme bis zu 50 mA mit einem Fehler von nicht mehr als 20 mA messen. Die Genauigkeit hängt von der Wahl der Komponenten nach Ihren Anforderungen ab.
Lieferungen
- IC LM358 dualer OP-AMP
- 8-poliger IC-Sockel
- Shunt-Widerstand (8,6 MilliOhm in meinem Fall)
- Widerstände: 100K, 10K, 2,2K, 1K (1/2 Watt)
- Kondensatoren: 3 * 0,1uF Keramikkondensatoren
- Veroboard oder Zeroboard
- Schraubklemmen
- Lötkolben und Lot
- Arduino Uno oder ein anderes kompatibles Board
- OLED-Display
- Steckverbindungsdrähte anschließen
Schritt 1: Sammeln der erforderlichen Komponenten
Dieses Projekt verwendet sehr einfache und leicht zu beschaffende Komponenten: Sie umfassen Widerstände, Keramikkondensatoren, Operationsverstärker und ein Veroboard für das Prototyping.
Die Auswahl und der Wert der Komponenten hängen von der Art der Anwendung und dem Leistungsbereich ab, den Sie messen möchten.
Schritt 2: Das Arbeitsprinzip
Die Funktionsweise des Leistungsmoduls basiert auf zwei Konzepten der Schaltungstheorie und der Grundelektrik: Das Spannungsteilerkonzept zur Messung der Eingangsspannung und das Ohmsche Gesetz zur Berechnung des durch den Stromkreis fließenden Stroms. Wir verwenden einen Shunt-Widerstand, um einen sehr kleinen Spannungsabfall darüber zu erzeugen. Dieser Spannungsabfall ist proportional zur Strommenge, die durch den Shunt fließt. Diese kleine Spannung, wenn sie von einem Operationsverstärker verstärkt wird, kann als Eingang für einen Mikrocontroller verwendet werden, der so programmiert werden kann, dass er uns den Stromwert liefert. Der Operationsverstärker wird als nicht invertierender Verstärker verwendet, bei dem die Verstärkung durch die Werte der Rückkopplung bestimmt wird Widerstand R2 und R1. Die Verwendung der nicht invertierenden Konfiguration ermöglicht es uns, eine gemeinsame Masse als Messreferenz zu haben. Dazu wird der Strom auf der Low-Side der Schaltung gemessen. Für meine Anwendung habe ich eine Verstärkung von 46 gewählt, indem ich 100K- und 2,2K-Widerstände als Rückkopplungsnetzwerk verwendet habe. Die Spannungsmessung erfolgt über eine Spannungsteilerschaltung, die die Eingangsspannung proportional zum verwendeten Widerstandsnetzwerk teilt.
Sowohl der Stromwert vom OP-Amp als auch der Spannungswert vom Teilernetzwerk können in zwei analoge Eingänge des Arduino eingespeist werden, damit wir die von einer Last aufgenommene Leistung berechnen können.
Schritt 3: Zusammenbringen der Teile
Beginnen wir mit der Konstruktion unseres Leistungsmoduls, indem wir die Position der Schraubklemmen für den Ein- und Ausgangsanschluss festlegen. Nachdem wir die entsprechenden Positionen markiert haben, verlöten wir die Schraubklemmen und den Shunt-Widerstand.
Schritt 4: Hinzufügen der Teile für das Spannungserfassungsnetzwerk
Für die Eingangsspannungsmessung verwende ich ein Spannungsteilernetzwerk von 10K und 1K. Ich habe auch einen 0,1-uF-Kondensator über den 1K-Widerstand hinzugefügt, um die Spannungen zu glätten. Das Spannungsmessnetzwerk ist in der Nähe des Eingangsanschlusses gelötet
Schritt 5: Hinzufügen der Teile für das Current Sense-Netzwerk
Der Strom wird gemessen, indem der Spannungsabfall am Shunt-Widerstand berechnet und mit einer vordefinierten Verstärkung, die durch das Widerstandsnetzwerk eingestellt wird, verstärkt wird. Der nicht invertierende Verstärkungsmodus wird verwendet. Es ist wünschenswert, die Lötspuren klein zu halten, um einen unerwünschten Spannungsabfall zu vermeiden.
Schritt 6: Vervollständigen der verbleibenden Verbindungen und Beenden des Builds
Wenn die Spannungs- und Strommessnetzwerke angeschlossen und verlötet sind, ist es an der Zeit, die Stiftleistenstifte zu verlöten und die erforderlichen Verbindungen der Strom- und Signalausgänge herzustellen. Das Modul wird mit der Standardbetriebsspannung von 5 Volt betrieben, die wir problemlos von einem Arduino-Board erhalten können. Die beiden Spannungsmessausgänge werden mit den analogen Eingängen des Arduino verbunden.
Schritt 7: Verbinden des Moduls mit Arduino
Nachdem das Modul fertig ist, ist es nun endlich an der Zeit, es mit einem Arduino zu verbinden und zum Laufen zu bringen. Um die Werte zu sehen, habe ich ein OLED-Display verwendet, das das I2C-Protokoll verwendet, um mit dem Arduino zu kommunizieren. Die auf dem Bildschirm angezeigten Parameter sind Spannung, Strom und Leistung.
Schritt 8: Projektcode und Schaltplan
Ich habe den Schaltplan und den Code des Leistungsmoduls in diesem Schritt angehängt (Zuvor hatte ich die.ino- und.txt-Datei mit dem Code angehängt, aber ein Serverfehler führte dazu, dass der Code für Benutzer unzugänglich oder unlesbar war, also habe ich das gesamte geschrieben Code in diesem Schritt. Ich weiß, dass dies keine gute Möglichkeit ist, den Code zu teilen:(). Fühlen Sie sich frei, diesen Code gemäß Ihren Anforderungen zu ändern. Ich hoffe, dieses Projekt war hilfreich für Sie. Bitte teilen Sie Ihr Feedback in den Kommentaren mit. Prost!
#enthalten
#enthalten
#enthalten
#enthalten
#define OLED_RESET 4 Adafruit_SSD1306-Anzeige (OLED_RESET);
Schwimmerwert = 0;
Schwimmerstrom = 0;
Schwebespannung = 0;
Schwimmerleistung = 0;
Leere Einrichtung () {
PinMode (A0, EINGANG);
PinMode (A1, EINGANG);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // mit der I2C-Adresse 0x3C (für die 128x32) initialisieren display.display();
Verzögerung (2000);
// Löschen Sie den Puffer.
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.setTextColor (WEISS);
Serial.begin (9600); // Um die Werte auf dem seriellen Monitor zu sehen
}
Leere Schleife () {
// Mittelwertbildung für stabile Messwerte
for(int i=0;i<20;i++) {
Strom = Strom + analogRead (A0);
Spannung = Spannung + analogRead (A1); }
aktuell = (aktuell/20); Strom = Strom * 0,0123 * 5,0; // Kalibrierwert, je nach verwendeten Komponenten zu ändern
Spannung = (Spannung/20); Spannung = Spannung * 0,0508 * 5,0; // Kalibrierwert, je nach verwendeten Komponenten zu ändern
Leistung = Spannung * Strom;
// die Werte auf dem seriellen Monitor drucken
Serial.print (Spannung);
Serial.print (" ");
Serial.print (aktuell);
Serial.print (" ");
Serial.println (Leistung);
// Drucken der Werte auf dem OLED-Display
display.setCursor(0, 0);
display.print("Spannung:");
display.print (Spannung);
display.println("V");
display.setCursor(0, 10);
display.print("Aktuell:");
display.print (aktuell);
display.println(" A");
display.setCursor(0, 20);
display.print("Leistung:");
display.print (Leistung);
display.println(" W");
display.display();
Verzögerung (500); // Bildwiederholrate durch die Verzögerung eingestellt
display.clearDisplay();
}