Inhaltsverzeichnis:

Arduino Voltmeter (0-100V DC) - Version 2 (besser) - Gunook
Arduino Voltmeter (0-100V DC) - Version 2 (besser) - Gunook

Video: Arduino Voltmeter (0-100V DC) - Version 2 (besser) - Gunook

Video: Arduino Voltmeter (0-100V DC) - Version 2 (besser) - Gunook
Video: How to use Digit Voltmeter 0V-100V DC 3wire? 2024, Juni
Anonim
Image
Image
Schritt 1: die Schaltpläne
Schritt 1: die Schaltpläne

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

Dies ist eine zweite Version des Voltmeters, das hier mein vorheriges instructable verwendet hat:

Die von mir durchgeführten Testmessungen waren genau, meist innerhalb von 0,1 V der tatsächlichen Spannung, die mit einem Standardvoltmeter gemessen wurde (ich habe ein Astro AI DM6000AR verwendet).

Dies ist meiner Meinung nach viel besser und einfacher als die Verwendung einer externen Spannungsreferenz auf dem Arduino.

Lieferungen

1 x Arduino Nano - Link

1 x Oled-Display (SSD 1306) - Link

1 x ADS 1115 - 16-Bit-ADC - Link

1 x 1/4W (ich schlage jedoch vor, 1W-Widerstände zu verwenden) 1% Widerstände - 220k Ohm - Link

1 x 1/4W (ich schlage jedoch vor, 1W-Widerstände zu verwenden) 1% Widerstände - 10k Ohm - 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: Schritt 1: die Schaltpläne

Schritt 1: die Schaltpläne
Schritt 1: die Schaltpläne

Ich habe alle Teile gemäß den obigen Schaltplänen angeschlossen.

Ich habe den ADDR-Pin des ADC1115 mit Masse verbunden. Dies setzt die Adresse des ADC auf 0x48.

Schritt 2: Schritt 2: die Code- und Widerstandsberechnungen

Schritt 2: die Code- und Widerstandsberechnungen
Schritt 2: die Code- und Widerstandsberechnungen

Wie in der vorherigen Anleitung besteht die Idee der Schaltung darin, dass die zu messende Gleichspannung durch einen Spannungswiderstand geht. Die skalierte Spannung wird dann in den analogen Pin des ADC-Wandlers gelesen, dann über I2C an den Arduino weitergegeben und dann neu skaliert und auf dem OLed-Display angezeigt.

Ich habe in diesem Fall keine Mittelung oder Glättung im Code verwendet, da die Messwerte ziemlich genau und präzise erscheinen. Um das Rauschen zu reduzieren, möchten Sie möglicherweise einen kleinen Kondensator zwischen A0 (am ADC) und Masse hinzufügen. Für meinen Test war es aber nicht erforderlich.

Eine Sache, die mir aufgefallen ist, war ein leichtes Rauschen, wenn keine Batterie angeschlossen war (0 Volt). Ich habe den seriellen Monitor des Arduino verwendet, um den ADC-Wert anzuzeigen und ihn per Code zu korrigieren / anzupassen.

Wie in der vorherigen Anleitung habe ich eine Tabelle erstellt, die die Berechnungen automatisiert, falls Sie unterschiedliche Widerstandswerte im Spannungsteiler verwenden möchten: Link zu Google Sheet

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

#enthalten

#include #include #include Adafruit_ADS1115 Anzeigen (0x48); //Adresse des ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (Rotation, [reset]) int calib = 7; // Wert der Kalibrierung von ADS1115 zur Reduzierung der Fehlererhaltungsspannung = 0; // zum Speichern des Spannungswerts Float Radjust = 0.043421905; // Spannungsteilerfaktor (R2 / R1+R2) float vbat = 0; // Endspannung nach Calcs- Spannung der Batterie // Variablen zum Auffrischen des Bildschirms ohne Verzögerung unsigned long previousMillis = 0; // speichert die letzte Aktualisierung des Bildschirms // Konstanten ändern sich nicht: const long interval = 250; // Intervall, in dem der Bildschirm aktualisiert werden soll (Millisekunden) Void setup (void) { Serial.begin (9600); u8g2.begin(); ads.begin(); aufrechtzuerhalten. Void Schleife (void) {int16_t adc0; // 16 Bit ADC lesen von Eingang A0 adc0 = ads.readADC_SingleEnded(0); Spannung = ((adc0 + kalibrier) * 0,1875)/1000; unsigned long currentMillis = millis(); vbat = Spannung/Rjust; // Verhindern, dass negative Spannung angezeigt wird, wenn die Batterie abgeklemmt wird if (vbat = Intervall) { previousMillis = currentMillis; u8g2.clearBuffer(); // lösche das interne Menü // Packspannungsanzeige - Schriftarten auf dieser Seite: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px-Schrift u8g2.setFont (u8g2_font_fub35_tr); // 35px-Schriftart u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // 10 px Schriftart u8g2.setCursor (1, 60); u8g2.print("Volt"); } u8g2.sendBuffer(); // internen Speicher auf die Anzeigeverzögerung übertragen (1); }

Schritt 3: Schritt 3: Lassen Sie es uns testen

Schritt 3: Lassen Sie es uns testen!
Schritt 3: Lassen Sie es uns testen!

Um dieses Voltmeter zu testen, habe ich 10x 9V-Batterien verwendet, die ich in einem lokalen Geschäft bekommen habe. Diesmal konnte ich bis zu 97 Volt messen! 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 am Anfang des Instructable sehen können, konnte ich dies archivieren! Die meisten Lesungen waren genau richtig!

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

Empfohlen: