USV für Arduino

Manche Schaltungen mit und ohne Mikrocontroller, die über einen Adapter mit Netzstrom betrieben werden, sollen auch bei kurzzeitigen Stromausfällen weiterhin unterbrechungsfrei funktionieren. Mit den folgenden Schaltungen kann man eine einfache Backup-Lösung erstellen.
Hinweis: Für hochausfallsichere Stromkreise mit höherer Belastung sind die folgenden Schaltunge nicht geeignet und es sollten professionelle Lösungen gefunden werden!

Verwendete Bauteile

Funktionsweise

Der folgende Schaltplan zeigt eine einfache USV mit einer Hauptstromquelle VCC1 und einer Backupversorgung VCC2, wobei im Anwendungsfall Erstere ein Netzadapter und Letztere eine Batterie darstellt.

Schaltplan für eine einfache USV
Abb.: Schaltplan für eine einfache USV

Wenn die Hauptstromquelle regulär funktioniert, fließt der Strom über D1 und versorgt die Last (LED + Vorwiderstand R1). D2 sperrt und somit die Batterie nicht geleert oder beschädigt werden, da kein Strom über D2 fließt. Fällt nun VCC1 aus, so kann Strom von VCC2 über D2 fließen und somit die Last weiterhin mit Strom versorgen.
Der Kondensator C1 ist nur dann notwendig, wenn ein vollständig unterbrechungsfreier Betrieb gewährleistet sein muss, z.B. beim Betrieb eines Mikrocontrollers (Arduino, ESP32, ...). Der Sinn dahinter ist, dass während des Netzbetriebes C1 geladen wird und beim Ausfall von VCC1 für die kurze Übergangszeit bis D2 durchschaltet die Spannung aufrecht erhält. In Schaltungen, die z.B. nur eine Lampe leuchten lassen müssen ist eine kurze Unterbrechung kein Problem und daher kann auf C1 verzichtet werden.

D1 und D2 müssen je nach Schaltung Leistungsdioden sein und sowohl mit der Spannung der beiden Stromquellen in Durchlass- und Sperrrichtung zurechtkommen. Auch muss die maximale Stromstärke in Durchlassrichtung der Schaltung entsprechen. Gleichrichterdioden der Serie 1N4001 bis 1N4007 eignen sich gut für Stromstärken unter 1 Ampere. Für höhere Stromstärken von bis zu 3 Ampere eignet sich z.B. die Diodenreihe 1N5400 bis 1N5408.

Wichtig bei der Wahl des Elektrolytkondensators C1 ist sowohl auf die Spannungsfestigkeit bzgl. der beiden Stromquellen als auch auf die Kapazität zu achten. Es wird oft empfohlen, einen Kondensator zu wählen, der eine Kapazität von mindestens dem Zehnfachen des benötigten Stroms für die gewünschte Zeitdauer aufrechterhalten kann. Wenn beispielsweise die angeschlossenen Komponenten insgesamt einen Strom von 100mA ziehen und eine unterbrechungsfreie Stromversorgung für 1 Sekunde gewährleistet werden soll, wäre ein Kondensator mit einer Kapazität von mindestens 100mA * 1s * 10 = 1000µF empfehlenswert.

Sollen als NiCd-Akkus als Backup-Stromquelle verwendet werden, so kann man mit einem zusätzlichen Widerstand R2 das Nachladen der Akkus im Netzbetrieb gewährleisten, wie der folgende Schaltplan zeigt:

Schaltplan für eine einfache USV mit Akkus
Abb.: Schaltplan für eine einfache USV mit Akkus

R2 sollte so dimensioniert sein, dass ein recht geringer Strom die Akkus wiederaufläd. Es wird oft empfohlen ein Zehntel des Kapazitätswertes der Akkus als Ladestrom zu verwenden, das wäre z.B. bei einem Akku mit 500mAh ein Ladestrom von 50mA.
Vorsicht: Es sollten mit dieser Schaltung KEINE Lithium-Akkus aufgeladen werden!

USV-Test mit Arduino

Statt der LED mit Vorwiderstand werden im folgenden Aufbau ein Arduino mit einem OLED-Modul als Last verwendet. Ziel ist es, ohne jegliche Stromunterbrechung die Versorgung des Arduinos zu gewährleisten.
(Die Verwendung grundlegende wurde schon in dem Beitrag 0,96″ OLED Displays genauer beschrieben)

Schaltplan einer einfachen USV mit Arduino
Abb.: Schaltplan einer einfachen USV mit Arduino

Um zu überprüfen, dass der Arduino keinen Reset während der Unterbrechungsphase durchführt, wird ein Sketch verwendet, der auf dem OLED einen Zahlwert hochzählt. Würde eine Unterbrechung (=Reset) stattfinden, so würde der Zähler wieder von vorne beginnen.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 32, &Wire, -1);

void setup()
{
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    display.setTextSize(2);
    display.setTextColor(SSD1306_WHITE);
}

void loop()
{
    static int counter = 0;
    display.clearDisplay();
    display.setCursor(0, 0);
    display.println(counter++);
    display.display();
    delay(100);
}
Test der USV mit einem Arduino und OLED (6MB).
zurück