Inhaltsverzeichnis:

Arduino präzises und genaues Voltmeter (0-90V DC) - Gunook
Arduino präzises und genaues Voltmeter (0-90V DC) - Gunook

Video: Arduino präzises und genaues Voltmeter (0-90V DC) - Gunook

Video: Arduino präzises und genaues Voltmeter (0-90V DC) - Gunook
Video: Как измерить любое напряжение постоянного тока с Arduino ARDVC-01 2024, November
Anonim

In diesem anweisbaren habe ich ein Voltmeter gebaut, um hohe Spannungen DC (0-90 V) mit relativer Präzision und Genauigkeit mit einem Arduino Nano zu messen.

Die von mir durchgeführten Testmessungen waren genau genug, meistens innerhalb von 0,3 V der tatsächlichen Spannung, die mit einem Standardvoltmeter gemessen wurde (ich habe ein Astro AI DM6000AR verwendet). Dies ist nahe genug für meine beabsichtigte Verwendung des Geräts.

Um dies zu archivieren, habe ich eine Spannungsreferenz (4.096v) und einen Spannungsteiler verwendet.

Codeseitig habe ich natürlich die Option "externe Referenz" für den Arduino Nano und das Beispiel "Smoothing" in den Arduino-Tutorials verwendet.

Lieferungen

1 x Arduino Nano - Link

1 x Oled-Display (SSD 1306) - Link

1 x 1/4W 1% Widerstände - 1k Ohm - Link

1 x 1/4W 1% Widerstände - 220k Ohm - Link

1 x 1/4W 1% Widerstände - 10k Ohm - Link

1 x 4.096v LM4040DIZ-4.1 Spannungsreferenz - Link

Steckbrett und Drähte - Link

Astro AI DM6000AR - Link

USB-Powerbank - Link

9V Batterien - Link

CanadianWinters ist Teilnehmer am Amazon Services LLC Associates-Programm, einem Partner-Werbeprogramm, das Websites die Möglichkeit bietet, Gebühren durch Verlinkung zu Amazon.com und verbundenen Websites zu verdienen. Durch die Verwendung dieser Links verdiene ich als Amazon-Partner an qualifizierten Käufen, auch wenn Sie etwas anderes kaufen – und es kostet Sie nichts.

Schritt 1: Die Schaltpläne

Die Schaltpläne
Die Schaltpläne
Die Schaltpläne
Die Schaltpläne

Ich habe alle Teile gemäß den obigen Schaltplänen angeschlossen. Insbesondere habe ich die Spannungsreferenz von 4.096 gewählt, um so nah wie möglich an der 5-V-Marke zu bleiben, um einen Verlust an Auflösung zu vermeiden.

Nach dem Datenblatt habe ich einen 1K Ohm Widerstand für die Spannungsreferenz gewählt, obwohl ein anderer Wert verwendet werden könnte. Die Spannung für die Referenz wird vom Nano 5v Pin geliefert.

Die Idee der Schaltung besteht darin, dass die zu messende Gleichspannung durch einen Spannungswiderstand geht. Die skalierte Spannung gelangt dann in den analogen Pin des Arduino, um abgetastet, geglättet, neu skaliert und auf dem OLed-Display angezeigt zu werden.

Ich habe versucht, die Dinge einfach zu halten:)

Schritt 2: Die Code- und Widerstandsberechnungen

Die Widerstandswerte wurden so gewählt, dass es ratsam ist (wenn ich mich nicht irre, steht dies auf dem Arduino / Atmega-Datenblatt), um die Impedanz unter 10 k Ohm zu halten.

Zur Vereinfachung habe ich eine Tabelle erstellt, die die Berechnungen automatisiert, falls Sie unterschiedliche Widerstandswerte verwenden möchten: Link zu Google Sheet

Hier ist der Code, den ich für dieses Projekt verwendet habe:

#enthalten

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0); // (Rotation, [Reset]) Float-Spannung = 0; // zum Speichern des Spannungswerts Float Radjust = 0.043459459; // Spannungsteilerfaktor (R2 / R1 + R2) float vbat = 0; // Endspannung nach Calcs- Spannung des Batterieschwimmers Vref = 4.113; // Spannungsreferenz - Realwert gemessen. Nominalwert 4,096 V const int numReadings = 50; // Anzahl der Leseproben - für mehr Glättung erhöhen. Zum schnelleren Lesen verringern. int Messwerte[numReadings]; // die Messwerte vom analogen Eingang int readIndex = 0; // der Index des aktuellen Lesevorgangs unsigned long total = 0; // die laufende Summe int Average = 0; // Variablen zum Aktualisieren des Bildschirms ohne Verzögerung unsigned long previousMillis = 0; // speichert die letzte Aktualisierung des Bildschirms // Konstanten ändern sich nicht: const long interval = 50; // Intervall, in dem der Bildschirm aktualisiert werden soll (Millisekunden) Void setup (void) { analogReference (EXTERNAL); // AREF für Referenzspannung 4.096 verwenden. Meine reale Referenzspannung beträgt 4,113 V u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) { // …umbruch zum Anfang: readIndex = 0; } // den Durchschnitt berechnen: Average = (total / numReadings); Spannung = Durchschnitt * (Vref / 1023.0); // 4,113 ist die Vref vbat = Spannung / Radjust; // Einstellen der Verzögerung für die Bildschirmaktualisierung mit Millis if (currentMillis - previousMillis >= interval) { // Speichern der letzten Aktualisierung des Bildschirms previousMillis = currentMillis; u8g2.clearBuffer(); // lösche das interne Menü // Packspannungsanzeige u8g2.setFont (u8g2_font_fub20_tr); // 20px-Schriftart u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // 10 px Schriftart u8g2.setCursor (76, 20); u8g2.print("Volt"); u8g2.setCursor (1, 40); u8g2.print("CanadianWinters'"); u8g2.setCursor (1, 60); u8g2.print("Präzise Spannung"); } u8g2.sendBuffer(); // internen Speicher auf die Anzeigeverzögerung übertragen (1); }

Bitte beachten Sie, dass ich mit der Arduino-Codierung etwas eingerostet bin. Wenn Sie also einen Fehler finden oder den Code verbessern können, bin ich für Vorschläge offen:)

Schritt 3: Lassen Sie es uns testen

Lassen Sie es uns testen!
Lassen Sie es uns testen!
Lassen Sie es uns testen!
Lassen Sie es uns testen!
Lassen Sie es uns testen!
Lassen Sie es uns testen!

Um dieses Voltmeter zu testen, habe ich 8x 9V-Batterien verwendet, die ich in einem lokalen Geschäft bekommen habe. Ich plane, dieses Voltmeter zu verwenden, um die Spannung an den Akkus meiner Elektrofahrräder zu messen (sie haben Spannungen von 24-60 V mit gelegentlichen 72 V).

Sobald die Elektronik in eine Leiterplatte und eine kleine Schachtel verpackt ist, wird dies ein schönes und tragbares Batteriemessgerät sein. Die Grafiken und Schriftarten auf dem OLED können an Ihre Bedürfnisse angepasst werden (z. B. größere Schriftart zum leichteren Lesen).

Mein Ziel war es, einen Spannungswert auf dem Oled / Arduino-Meter nicht zu weit von meinem Digital Multi Meter entfernt zu haben. Ich strebte +/-0, 3v max Delta an. Wie Sie aus dem Video sehen können, konnte ich dies außer am oberen Ende der Messungen archivieren.

Ich hoffe, Sie haben dieses Instructable genossen und lassen Sie mich Ihre Gedanken wissen!

Empfohlen: