Schaltschrankkomponenten


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Voltmeter mit Spannungsteiler und Arduino


Ein ganz einfaches Voltmeter kann man mithilfe eines Spannungsteilers aufbauen. Hier werden, abgesehen von einer Visualisierungseinrichtung, lediglich zwei Widerstände benötigt.
In dem Versuch konstruieren wird ein solches Voltmeter, das Spannung im Bereich 0 bis 30 VDC messen soll. Das Ergebnis wird auf einem TFC-LCD – Display sichtbar gemacht. Die Umwandlung der Messgröße in eine Zahl, die der gemessenen Spannung entspricht, übernimmt Arduino Mega.

Arduino Mega

Arduino Mega

Der Mikrocontroller Arduino Mega (Hier Nachbau aus China) stellt die Schnittstelle zwischen dem Spannungsteiler, der in der Schaltung als unsere Messeinrichtung fungiert, und dem Display, auf dem das Ergebnis angezeigt wird, dar. Der Arduino Mega stellt 54 I/Os und 16 analoge Eingänge zur Verfügung. Für die Spannungsmessung wird lediglich ein einziger analoger Eingang benutzt. Es ist also reichlich Reserve für andere Aufgaben vorhanden.

Infos zu Arduino Mega


Display

Display

Bei dem kleinen Touch-Display handelt es sich um ein aufsteckbares Display-Modul. Das Teil wird einfach auf Arduino gesteckt, alles andere wird mit Software erledigt. Eine Diskussion, ob ein so leistungsfähiges Dispaly für eine so einfache Aufgabe die richtige Wahl ist, soll an dieser Stelle nicht entfachtet werden.

Display - Daten


Der Schaltplan

Schaltplan


Die zu messende Spannung wird an den Klemmen A und B angeschlossen. Sie soll die Spannung von 30VDC nicht übersteigen. Der Spannungsteiler R1-R2 teilt die Spannung und sorgt dafür, dass das Potenzial am Punkt C den Wert von 5V nicht übersteigt. Spannung von 5 V ist nämlich für Arduino die maximale Spannung, die an seinen Eingang gelegt werden darf. Eine höhere Spannung kann das Gerät beschädigen. Für den Fall der Fälle hängt am Punkt C noch ein Bauteil: eine Zenerdiode. Sie schneidet, sollte es notwendig sein, bei Werten über 5,1V die Spannung einfach ab. Sie spielt in der Schaltung die Rolle eines Wächters und hat mit der eigentlichen Messung nichts zu tun.
Die Berechnung des Spannungsteilers erfolgt nach der Formel:

Uc = Umess * R2 / (R1 + R2)

Wenn wir festlegen, dass der Widerstand R2 10kOhm betragen soll, ergibt sich für den Widerstand R1:
R1 = (Umess – Uc) * R2 / Uc = (30 – 5) * 10 / 5 = 50 kOhm.
In der Schaltung setzen wir einen 51 kOhm Widerstand ein. Damit ergibt sich eine kleine Reserve „von oben“.
Bei den Berechnungen eines Spannungsteilers kann der E-Rechner behilflich sein:

E-Rechner (Spannungsteiler)


Die Testschaltung

Testschaltung



Das Programm (Sketch)

// -------------------------------------------------------------------------------------
// Arduino - Sketch
// Voltmeter mit Spannungsteiler und Arduino
// Mit Arduino Mega 2560 R3, TFT LCD 320x240
//
// MCUFRIEND_kbv.h - V 2.9.9
// Arduino IDE - V 1.8.19
// -------------------------------------------------------------------------------------

#include <MCUFRIEND_kbv.h>                                     // Bibliothek einbinden

MCUFRIEND_kbv tft;

#define BLACK   0x0000                                         // Farben Hexadezimal
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
float Korrekturfaktor = 1.03;                                  // Messwert-Korrektur
float Spannung;                                                // Endergebnis gemessene Spannung
String Ausgabe_NEU;                                            // Ausgabe Variable
String Ausgabe_ALT;


void setup(void)   {                                           // SetUp (einmaliger Durchlauf)
  
    tft.begin(0x9341);
    tft.setRotation(1);                                        // Ausrichtung
    tft.fillScreen(BLUE);                                      // Hintergrundfarbe   
    tft.setTextSize(4);                                        // Schriftgrösse
    tft.setTextColor(CYAN);                                    // Textfarbe
    tft.setCursor(50, 25);                                     // Cursorposition
    tft.print("VOLTMETER");                                    // Display Beschriftung
    tft.setCursor(270, 160);
    tft.print("V");                                            // V für Volt
    tft.setTextSize(10);                                       // Schriftgröße für Spannungswert
}

void loop(void) {
   
    float Wert_am_Eingang = analogRead(A8);                    // Eingang analog lesen
    Spannung = (Wert_am_Eingang * 5) / 1023 * 6;               // Berechnung der Spannung
    Spannung = Spannung * Korrekturfaktor;                     // Abgleich mit Korrekturfaktor

    Ausgabe_NEU = String(Spannung,1);                          // Spannungswert in String umwandeln

    for (int i = 0; i < 4; i++) {                              // Wertausgabe stellenweise
        int X_Pos = 20 + (i * 60);                             // X Position auf dem Display
        tft.setCursor(X_Pos, 120);                             // Koordinaten setzen
        if (Ausgabe_NEU.charAt(i) != Ausgabe_ALT.charAt(i)) {  // Soll der alte Wert gelöscht werden?
            tft.setTextColor(BLUE);                            // Löschen = Überschreiben mit 
                                                               // Hintergrundfarbe
            tft.print(Ausgabe_ALT.charAt(i));                  // Alten Wert schreiben
            tft.setCursor(X_Pos, 120);                         // Zurück auf die Startposition (x,y)
        }
        tft.setTextColor(YELLOW);                              // Ausgabe Farbe
        tft.print(Ausgabe_NEU.charAt(i));                      // Neuen Wert schreiben
    }
          
    Ausgabe_ALT = Ausgabe_NEU;                                 // Variable Ausgabe_Alt neu belegen
    delay(250);                                                // Wartezeit
}

// -------------------------------------------------------------------------------------        


Das Programm besteht aus zwei Teilen. In dem ersten Teil wird der analoge Ausgang ausgelesen und das Ergebnis errechnet. In dem zweiten Teil befasst sich das Programm mit der Ausgabe des Ergebnisses auf dem Display.
Der erste Teil der Rechnung basiert auf der Tatsache, dass der analoge Eingang bei 5V den Wert 1023 liefert. Da die Abhängigkeiten linear verlaufen, ergibt sich für jeden beliebigen Wert vom anlogen Eingang direkt eine konkrete Spannung:
U = (Ermittelter Wert * 5) / 1023;
Da wir mit einem Spannungsteiler, der die Messspannung um das Sechsfache verringert, arbeiten, muss der errechnete Wert mit 6 multipliziert werden. Schließlich, da wir einen etwas größeren Wert für R1 gewählt haben und zusätzlich die Toleranzen der Komponenten ins Spiel kommen, muss das Endergebnis ein wenig korrigiert werden. In diesem Fall beträgt der Korrekturfaktor, mit dem das Ergebnis multipliziert wird, 1,03. Er muss empirisch für jede Schaltung separat ermittelt werden.
Dazu stellt man die Messspannung auf 30V und liest den angezeigten Wert ab.
Korrekturfaktor = 30 / abgelesener Wert
Möchte man größere Spannungen mit dem Voltmeter messen, muss der Widerstand R1 größer gewählt werden und die ganze Rechnung wiederholt werden.
Bei der Ausgabe des Ergebnisses auf dem Display muss beachtet werden, dass die alte Anzeige, bevor neue Messergebnisse angezeigt werden, zunächst gelöscht werden muss. Das kann man dadurch erreichen, dass der alte Wert einfach mit Farbe des Hintergrunds überschrieben wird. Genau diese Methode kommt in dem Programm zum Einsatz. Lediglich um die Anzeige zu beruhigen, wird nicht der gesamte Ausgabewert, sondern nur die Zeichen, die sich geändert haben, überschrieben

Kurzvideo zur Schaltung


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz