Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Power

Komponenten und Verbrauchsmaterialien

Adafruit PowerBoost Ladeschild
× 1
Lipoly-Akku (generisch)
3,7 - 4,2V
× 1
Arduino UNO
× 1

Über dieses Projekt

Projekte mit der Arduino-Familie von Mikrocontroller-Boards benötigen normalerweise keine speziellen Power-Management-Schaltungen. Sie schließen eine Stromquelle an, das Gerät bootet, macht seinen Job und stoppt dann, wenn der Strom getrennt wird. Im Gegensatz zu einem Raspberry Pi-System besteht kein Risiko, eine SD-Speicherkarte zu beschädigen.

Bei einigen Anwendungen möchten Sie jedoch möglicherweise den Energiestatus überwachen und besser verwaltet reagieren, anstatt sie einfach herunterzufahren.

Betrachten Sie beispielsweise ein Fernerkundungsgerät, das Temperaturdaten protokolliert. Wenn der Akku leer ist, während es unbeaufsichtigt ist, stoppen die Protokolle einfach. Es gibt keine Möglichkeit, sofort zu sagen, dass die schwache Batterie das Problem war. Es könnte ein Software- oder Hardwarefehler gewesen sein.

Ebenso wäre es für ein tragbares System hilfreich zu wissen, wie lange der Akku noch hält und wann es aufgeladen werden muss.

Dieses Projekt präsentiert verschiedene Ansätze für das Arduino-Power-Management mit Schaltungen, Software und Beschreibungen für jeden von ihnen. Angefangen von einem einfachen Ein-/Ausschalter bis hin zu einem Datenprotokollierungssystem mit Batteriestatus, das für die unbeaufsichtigte Umgebungsüberwachung gedacht ist.

Sie können auswählen, welches der Subsysteme Sie interessiert. Ich werde sie alle in zunehmender Komplexität beschreiben, aber Sie können die Teile, die Sie nicht interessieren, auskommentieren.

Das Projekt baut auf den Ideen der LiPoPi- und Pi Power-Projekte auf, die ähnliche Funktionen für Raspberry Pi-Systeme bieten.

Übersicht

Das System bietet mehrere Funktionen:

  • Ein-/Ausschalten mit einem Druckknopf
  • Überwachen Sie die Batteriespannung mit dem Arduino ADC
  • Herunterfahren des Systems bei Niederspannung
  • Notieren Sie die Batteriespannung und eine Meldung zum Herunterfahren in eine Datei
  • Anzeigen des Batteriestatus mit einer roten/grünen LED

Ich werde sie der Reihe nach vorstellen, aber der gemeinsame Nenner für alle ist die Kombination aus Adafruit PowerBoost und Arduino.

Mit jeder dieser Funktionen fügen Sie zwei Funktionen hinzu und passen sie an, arduinoPowerSetup() und arduinoPowerMonitor( ) , zum Standard setup() und Schleife() Funktionen in Ihrem Code.

Adafruit PowerBoost-Schild

Das System verwendet einen wiederaufladbaren LiPoly-Akku und ein Adafruit PowerBoost-Ladeschild, das sowohl den Akku aufladen als auch seine Leistung auf 5 V erhöhen kann.

Adafruit stellt drei Versionen des Power Boost her - zwei Breakout-Boards und ein Arduino Shield. Die meisten der hier beschriebenen Arbeiten verwenden das Power Shield, aber ich werde später auf die Breakout-Boards eingehen.

Bitte lesen Sie auf dieser Seite, wie Sie das PowerBoost Shield konfigurieren. Um das Shield-Kit vorzubereiten, müssen Sie:

  • Löten Sie die Stapelleisten an
  • Aber den Schalter nicht anbringen
  • Löten Sie ein Stück Draht (4 Zoll, 22 AWG massiver Kern) an den Enable Pin
  • Überbrücken Sie die Pads für den Analog-Pin A0 auf der Unterseite der Abschirmung

Ein-/Ausschaltkreis

Diese grundlegende Schaltung verwendet das Drücken eines kurzzeitigen Druckknopfschalters, um das System einzuschalten und im Betrieb auszuschalten - ähnlich wie bei meinem Telefon.

Wenn Sie ein ausgeschaltetes System gedrückt halten, wird der PowerBoost eingeschaltet und versorgt den Arduino mit Strom, der dann hochfährt und das darauf geladene Programm ausführt.

Wenn Sie die Taste erneut drücken und loslassen, deaktiviert der Arduino den PowerBoost und, da er keinen Strom mehr liefert, fährt der Arduino herunter.

Bitte lesen Sie diese Seite für die Details. Hier ist der Schaltplan:

Hinweis: Sie benötigen diese Schaltung nicht, um den Rest dieses Projekts zu verwenden. Sie können den optionalen Schalter verwenden, der mit dem PowerBoost-Schild geliefert wird. Der Hauptunterschied besteht darin, dass der Basisschalter das System einfach herunterfährt, ohne dass eine Protokollnachricht aufgezeichnet werden kann.

Batteriespannung überwachen

Der Arduino hat 6 Analog-zu-Digital-Wandler (ADCs) an den analogen Pins 0-5, was die Spannungsmessung unkompliziert macht. Mit dem PowerBoost-Schild können Sie die Batteriespannung (Vbat ) zu einem dieser, indem Sie die entsprechenden Lötpads überbrücken, wie auf der Seite PowerBoost Shield beschrieben. In diesem Beispiel habe ich es mit Analog Pin 0 verknüpft .

Die Spannung von LiPoly-Batterien variiert von etwa 4,25 V bei voller Aufladung auf etwa 3,7 V wenn entlassen. Der ADC wandelt den Spannungsbereich von 0V auf 5V in den ganzzahligen Bereich von 0 bis 1023 , und wir greifen auf diesen Wert zu, indem wir analogRead() . aufrufen .

Dieses Code-Snippet zeigt, wie dies geht, sowie die Berechnung des relativen Batteriezustands anhand der minimalen und maximalen Batteriespannungen.

 float maxVoltage =4,25; Schwimmer minVoltage =3,75; arduinoPowerVoltage =float (analogRead (arduinoPowerVoltagePin)) / 1024,0 * 5,0; float FractionalVoltage =(arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage); 

LiPoly-Batterien verlieren beim Entladen nicht linear an Spannung, aber es ist nah genug dass wir die verbleibende Batterielebensdauer anhand der Bruchspannung abschätzen können.

So können wir die Batteriespannung ermitteln und die verbleibende Lebensdauer abschätzen, aber wir brauchen eine Möglichkeit, dies dem Benutzer mitzuteilen. Wir könnten ein alphanumerisches Display verwenden und im nächsten Abschnitt werde ich zeigen, wie man dies in eine Datei auf einer SD-Karte protokolliert. Aber das kann für viele Projekte übertrieben sein.

Ein einfacherer Ansatz besteht darin, ein RGB zu verwenden und die Farbe zu ändern, um die Akkulaufzeit widerzuspiegeln. Zum Beispiel:

  • Grün – mehr als 50 %
  • Gelb – 20 % bis 50 %
  • Rot – weniger als 20 % – Zeit zum Aufladen

Um dies zu implementieren, fügen Sie der Schaltung einfach eine RGB-LED und zwei 1K-Widerstände hinzu und fügen arduinoPowerMonitor() ein wenig Code hinzu .

RGB-LEDs verwenden normalerweise eine gemeinsame Anode also funktioniert diese Schaltung damit:

HINWEIS: In der Praxis verwende ich die 3,3V-Versorgung mit meinen LEDs.

HINWEIS: Wie ich später zeigen werde, kann es aus Gründen, die ich nicht verstehe, zu einer erheblichen "Schwingung" der gemessenen Spannung. Wenn sich der Akku in der Nähe eines der Werte befindet, bei denen sich die LED-Farbe ändert, kann es sein, dass er zwischen den beiden Zuständen hin und her wechselt - sehr ärgerlich. Eine schnelle Lösung besteht darin, einen 0,1uF-Kondensator . zu platzieren zwischen analogem Pin A0 und Boden .

Dieses Steckbrett-Layout zeigt weder die Batterie noch das Arduino. Die Skizze arduino_2_voltage_led implementiert Power On/Power Off und LED-Spannungsanzeige. Der Code setzt den grünen oder roten Pin auf niedrig um die LED einzuschalten und hoch um es auszuschalten.

HINWEIS: Sie können die gemessenen Spannungen überprüfen und/oder debuggen, indem Sie die Aufrufe von Serial auskommentieren im Code und Ausführen des Serial Monitor in der IDE. Sie sehen die tatsächliche und den Bruchteil der Batteriespannung. Aus irgendeinem Grund ist der erste Aufruf falsch.

Aufzeichnen der Batteriespannung auf einer SD-Karte

Die LED-Spannungsanzeige ist nützlich für tragbare, batteriebetriebene Arduino-Systeme, bei denen Sie sich nicht allzu sehr um die Details kümmern, sondern nur wissen möchten, wann Sie den Akku aufladen müssen.

Wenn Sie jedoch beispielsweise Sensoren in einem eigenständigen System überwachen, möchten Sie möglicherweise die Batteriespannung zusammen mit den Sensordaten aufzeichnen, um eine bessere Vorstellung vom Stromverbrauch im Laufe der Zeit zu erhalten.

Für diesen Teil des Projekts verwende ich das Adafruit Data Logging Shield, das Daten in einer CSV aufzeichnen kann formatieren Sie die Datei auf der beigefügten SD-Karte zusammen mit den Zeitstempeln. Der Adafruit Guide erklärt, wie die SD und RTC Bibliotheken funktionieren, und Sie sollten dies verstehen, bevor Sie an diesem Teil des Projekts arbeiten.

Die Schaltung ist gegenüber dem vorherigen Beispiel unverändert - es lohnt sich, die LED beizubehalten, da sie eine sofortige Rückmeldung über den Batteriestatus liefert, dies ist jedoch nicht erforderlich.

Da wir Daten auf der Karte protokollieren, ist es wichtig, dass wir eine Shutdown-Meldung protokollieren. Auf diese Weise können wir feststellen, ob das Herunterfahren beabsichtigt war oder ob ein Fehler im System aufgetreten ist.

Da wir die Spannung überwachen, können wir außerdem überprüfen, wann die Spannung unter einen bestimmten Mindestwert abfällt, und das System sicher herunterfahren. Auch hier können wir kurz vor dem Herunterfahren eine Nachricht darüber protokollieren.

Die Skizze dazu befindet sich in arduino_3_voltage_logging. Dazu gehören einige Dienstprogramme zum Generieren einer richtig formatierten Zeitstempelzeichenfolge usw. und ein Hack zum Blinken der roten LED, wenn Sie vergessen, eine SD-Karte einzulegen, was ich ständig tue.

Der gesamte Stapel von Arduino Uno, Data Logging Shield, PowerBoost Shield und Breadboard sieht so aus:

Spannungsdaten

Hier ist ein Diagramm der Batteriespannung im Zeitverlauf, das den allmählichen Abfall über einen Zeitraum von etwa 20 Stunden zeigt. Der Rückgang ist nicht wirklich linear, aber um die verbleibende Leistung abzuschätzen, ist er nahe genug.

Wie ich bereits erwähnt habe, ist es wirklich hilfreich, einen 0,1uF-Kondensator zwischen Analog Pin A0 . hinzuzufügen und Boden . In diesem Beispiel zeigt die violette Linie die Auswirkung des Kondensators im Vergleich zum Original in Blau.

Aufzeichnen von Umweltdaten auf einer SD-Karte

Zum Abschluss noch eine Ergänzung zum Projekt. Ein Projekt, an das ich denke, ist ein eigenständiger Umweltmonitor für meinen Garten - Temperatur, Bodenfeuchtigkeit usw.

Ich werde das Arduino usw. in einer versiegelten Box installieren, die für einige Zeit unbeaufsichtigt bleibt. Neben dem leeren Akku möchte ich auch prüfen, ob keine Feuchtigkeit in das Gehäuse eindringt und es keinen extremen Temperaturen ausgesetzt ist, die das System beschädigen könnten. Eine kostengünstige und einfache Möglichkeit, Temperatur und Luftfeuchtigkeit zu messen, ist der DHT22-Sensor - lesen Sie das Tutorial von Adafruit für die Details.

In meinem Beispielcode verwende ich digitalen Pin 5 anstelle von Pin 2, da ich das bereits für die Unterbrechung der Power Off-Taste verwende.

Der Code dafür befindet sich in arduino_4_voltage_temp_humidity_logging. Sobald ich dies auf einem Steckbrett hatte, verdrahtete ich dies auf einem Adafruit Proto Shield. Der DHT22-Sensor ist ziemlich sperrig - aber billig. Schau dir andere Breakout-Boards von Adafruit, Sparkfun usw. an, um andere Alternativen zu finden.

Energieeinsparung in Arduino-Projekten

Der nächste Schritt in meinem Projekt besteht darin, den Stromverbrauch zu reduzieren und die Akkulaufzeit zu verlängern.

Mein Ausgangspunkt dafür ist das hervorragende Adafruit-Tutorial zum Low-Power-Datenlogging von Tony DiCola.

Code

Github
https://github.com/craic/arduino_powerhttps://github.com/craic/arduino_power
Github
https://github.com/NeonHorizon/lipopihttps://github.com/NeonHorizon/lipopi
Github
https://github.com/craic/pi_powerhttps://github.com/craic/pi_power

Herstellungsprozess

  1. Verlustleistung
  2. Stromquellen
  3. Planierraupe
  4. Batterie
  5. Arduino Spybot
  6. FlickMote
  7. Selbstgemachter Fernseher B-Gone
  8. Hauptuhr
  9. Windkraft
  10. Wie sich die Kürzung der Subventionen auf die Power Battery-Industrie auswirkt