Inhaltsverzeichnis:
Video: TinyLiDAR für IoT - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Wenn Sie sich umschauen, werden Sie feststellen, dass im Alltag viele pfiffige kleine Geräte im Einsatz sind. Sie sind normalerweise batteriebetrieben und normalerweise irgendwie mit dem Internet (auch bekannt als „Cloud“) verbunden. Dies sind alles, was wir „IoT“-Geräte nennen, und sie werden heute in der Welt schnell alltäglich.
Für IoT-Systemingenieure wird viel Designaufwand darauf verwendet, den Stromverbrauch zu optimieren. Der Grund dafür liegt natürlich in der begrenzten Kapazität von Batterien. Der Austausch von Batterien in großen Mengen in abgelegenen Gebieten kann sehr teuer sein.
In diesem anweisbaren geht es also darum, die Leistung in tinyLiDAR zu optimieren.
TL; DR-Zusammenfassung
Wir haben einen neuen Messmodus "Real Time" (ab Firmware 1.4.0), um die Akkulaufzeit in IoT-Geräten zu maximieren.
Mehr Saft aus Batterien pressen
Intuitiv können wir die Laufzeit erhöhen, indem wir einfach den Stromverbrauch der IoT-Geräte reduzieren. Okay, das ist klar! Doch wie kann man dies effektiv tun und die zu erwartende Laufzeit richtig berechnen? Lass es uns herausfinden…
Schritt 1: Reine Energie
Es gibt viele Möglichkeiten, dies zu tun, aber wir ziehen es vor, es auf das Wesentliche herunterzubrechen und alles in Energie umzuwandeln. Elektrische Energie wird in Joule (Symbol J) gemessen und per Definition:
Ein Joule ist die Energie, die als Wärme abgegeben wird, wenn ein elektrischer Strom von einem Ampere für eine Sekunde durch einen Widerstand von einem Ohm fließt.
Da Energie (E) auch Spannung (V) x Ladung (Q) ist, gilt:
E = V x Q
Q ist Strom (I) x Zeit (T):
Q = I x T
Energie in Joule kann also ausgedrückt werden als:
E = V x I x T
Dabei ist V die Spannung, I der Strom in Ampere und T die Zeit in Sekunden.
Nehmen wir an, wir haben ein Batteriepaket aus vier in Reihe geschalteten AA-Alkalibatterien (LR6). Dies ergibt eine Gesamtstartspannung von 4 * 1,5 V = 6 V. Das Ende der Lebensdauer einer Alkaline-AA-Batterie beträgt ca. 1,0 V, sodass die durchschnittliche Spannung etwa 1,25 V betragen würde. Laut mfr-Datenblatt "Die gelieferte Leistung ist abhängig von der angelegten Last, der Betriebstemperatur und der Abschaltspannung." Wir können also für eine Low-Drain-Anwendung wie ein IoT-Gerät etwa 2000 mAhr oder besser annehmen.
Daher können wir berechnen, dass wir von diesem Akkupack 4 Zellen x 1,25V pro Zelle x 2000mAhr * 3600sec = 36000 J Energie zur Verfügung haben, bevor er ersetzt werden muss.
Für einfachere Berechnungen können wir auch davon ausgehen, dass der Umwandlungswirkungsgrad für unseren Systemregler 100 % beträgt, und den Stromverbrauch des Host-Controllers ignorieren.
Ein Wort zum Radfahren
Nein, nicht der Typ, auf dem du fährst! Es gibt ein paar technische Konzepte, die als "Power Cycling" und "Sleep Cycling" bekannt sind. Beide können verwendet werden, um den Stromverbrauch zu senken, aber es gibt einen Unterschied zwischen den beiden. Die erste besteht darin, dass Sie Ihr Gerät ausschalten, bis es benötigt wird, und es dann nur für kurze Zeit einschalten, um eine Messung usw. durchzuführen. Obwohl diese Methode aufgrund ihres Nullstroms verlockend ist, gibt es einen Nachteil, bei dem es einige Zeit braucht nicht triviale Zeit, um wieder hochzufahren und dabei Energie zu verbrennen.
Das zweite Konzept besteht darin, das Gerät einfach im Schlafmodus zu halten, in der Hoffnung, dass es schneller aufwacht, aber Sie verbrennen eine begrenzte Menge Strom, während es schläft. Was ist also am besten zu verwenden?
Es hängt davon ab, wie oft Sie aufwachen müssen.
Schritt 2: Führen Sie die Zahlen aus
Wir wollen die auf 1 Sekunde normierte Gesamtenergie (E) für jedes unten aufgeführte Scenerio ermitteln.
Fall A: Tc = 1 Sek.; jede Sekunde eine Distanzmessung durchführen Fall B: Tc = 60sec; Nehmen Sie jede Minute eine Entfernungsmessung vor. Fall C: Tc = 3600 s; Nehmen Sie jede Stunde eine Entfernungsmessung vor.
Dazu können wir sagen, Tc ist die Zykluszeit für unsere Messungen, ton die aktive Zeit und toff die inaktive Zeit und ordnen unsere Energieformeln wie hier gezeigt neu an:
Für tinyLiDAR beträgt die Startzeit etwa 300 ms oder weniger und während dieser Zeit dauert es durchschnittlich 12,25 mA, während es mit einer geregelten 2,8-V-Versorgung betrieben wird. Daher wird es bei jedem Start ungefähr 10,3 mJ Energie verbrauchen.
Der Schlaf-/Ruhestrom für tinyLiDAR beträgt extrem niedrige 3uA. Dies ist weitaus niedriger als die monatliche Selbstentladungsrate von 0,3% eines Alkali-Batteriepacks, daher werden wir hier nur die Methode des "Schlafzyklus" untersuchen.
Warum nicht auf das Mikro verzichten und direkt zum VL53-Sensor gehen?
Die Antwort darauf ist nicht ganz so offensichtlich. In den frühen Tagen der Smartphone-Entwicklung haben wir gelernt, dass es eine todsichere Methode zur Reduzierung der Akkulaufzeit ist, den leistungshungrigen Hochgeschwindigkeitsprozessor zum Abspielen von MP3-Dateien am Leben zu erhalten. Schon damals haben wir alle Anstrengungen unternommen, um "Anwendungsprozessoren" mit geringerer Leistung für Peripherieaufgaben wie das Abspielen von Musik zu verwenden. Heute ist das nicht viel anders und man könnte sagen, es ist sogar noch wichtiger, da wir all diese IoT-Geräte mit jeder abnehmenden Batteriekapazität miniaturisieren. Daher ist die Verwendung eines Anwendungsprozessors mit extrem niedrigem Stromverbrauch für die alleinige Aufgabe der Steuerung des VL53-Sensors und der Bereitstellung von Daten zur Weiterverarbeitung ein entscheidender Vorteil für jede batteriebetriebene Anwendung.
tinyLiDAR-Messmodi
Es mag im Benutzerhandbuch zu diesem Zeitpunkt nicht klar sein [aber irgendwann, da wir unser Benutzerhandbuch ständig aktualisieren:)] -- es gibt tatsächlich 3 verschiedene Messmodi in tinyLiDAR.
MC-Modus
Seit der Einführung von tinyLiDAR waren wir davon besessen, schnellere Messungen vom VL53 ToF-Sensor zu erhalten. Also haben wir unsere Firmware optimiert, um die schnellsten und konsistentesten Streaming-Daten daraus zu erhalten. Dies beinhaltete die Einführung einer Pufferung. Ein wenig Pufferung ist eine gute Sache, da der Host-Controller (d. h. Arduino) seine Messdaten im Handumdrehen abrufen und zu wichtigeren Dingen übergehen kann. Daher ist eine Pufferung unbedingt erforderlich und dadurch können wir selbst auf dem relativ langsamen Arduino UNO Streamingraten von über 900Hz erreichen. Daher ist die schnellste Reaktionszeit bei Verwendung des MC- oder "kontinuierlichen" Modus von tinyLiDAR.
Übrigens, wenn Sie jemals eine Chance haben, sollten Sie ein serielles Kabel an den TTY-Ausgangspin von tinyLiDAR anschließen und Sie werden sehen, was dieser MC-Modus macht. Es nimmt eine Messung buchstäblich so schnell wie möglich vor und füllt dabei seinen I2C-Puffer mit den absolut neuesten Daten. Da es mit voller Geschwindigkeit läuft, verbrennt es leider auch die maximale Leistung. Siehe unten für das aktuelle vs. Zeitdiagramm dieses MC-Modus.
SS-Modus
Der nächste Modus ist das, was wir "SS" für "Einzelschritt"-Modus nennen. Dies ist im Grunde der gleiche Hochleistungsmodus wie oben, jedoch stattdessen in einer einzelnen Schrittschleife. Sie können also schnelle Antworten von tinyLiDAR erhalten, aber die Daten stammen aus der vorherigen Probe, sodass Sie zwei Messungen durchführen müssen, um die neuesten Daten zu erhalten. Siehe unten für das aktuelle vs. Zeit-Diagramm dieses SS-Modus.
Beide der oben genannten Modi sind für die meisten Benutzer gut geeignet, da sie schnell und einfach zu verwenden sind - geben Sie einfach einen "D"-Befehl ein und lesen Sie die Ergebnisse. Jedoch …
Auf dem Weg zur IoT-Welt, in der jedes Millijoule zählt, haben wir ein neues Paradigma.
Und es ist das genaue Gegenteil von dem, was wir in tinyLiDAR kodiert haben! Für die IoT-Welt benötigen wir Einzelmessungen in unregelmäßigen Abständen, um Strom zu sparen und die Laufzeit zu verlängern.
RT-Modus
Erfreulicherweise können wir nun sagen, dass wir ab Firmware 1.4.0 eine Lösung für dieses Szenario haben. Es wird "RT"-Modus für "Echtzeit" -Messungen genannt. Und es implementiert im Grunde eine Trigger-, Wait- und Read-Methode. Um ihn zu verwenden, können Sie immer noch den Befehl "D" eingeben, um die Messung zu starten, aber für diesen RT-Modus müssen Sie eine angemessene Zeit warten, bis die Messung beendet ist, und dann die Ergebnisse ablesen. tinyLiDAR geht automatisch in den niedrigsten Ruhezustand von unter 3uA zwischen den Samples. Es ist eigentlich immer noch einfach zu bedienen und noch energieeffizienter, da Sie nur eine statt zwei Messungen durchführen müssen, um die neuesten Daten zu erhalten, d. h. null Pufferung.
Siehe unten für das aktuelle vs. Zeitdiagramm dieses neuen RT-Modus.
Schritt 3: Tatsächliche Messungen
Die Verwendung des MC-Continuous-Modus für seltene IoT-Messungen macht wenig Sinn, da wir nur Einzelmessungen benötigen. Daher können wir unsere Aufmerksamkeit stattdessen auf die SS- und RT-Modi richten. Der Betrieb von tinyLiDAR mit einer geregelten Versorgung von +2,8 V bietet uns die geringste Verlustleistung. Bei Verwendung der Voreinstellungen für hohe Genauigkeit (200 ms) haben wir den folgenden Energieverbrauch auf tinyLiDAR gemessen:
SS/Single-Step-Modus: 31,2 mJ gemittelt über 2 Messungen
RT/Echtzeitmodus: 15,5 mJ gemittelt über 1 Messung
Wenn wir diese obigen Werte in unsere Energieformel einsetzen und auf eine Sekunde normalisieren, können wir die Laufzeiterwartungen finden, wenn die Energie unseres Akkus 36000 J beträgt.
Fall A: jede Sekunde lesen (zwei Messwerte nehmen, um die neuesten Daten zu erhalten)Tc = 1secTon = 210ms pro Messwert x 2 Messwerte Toff = Tc - Ton = 580msIon(avg) = 26,5mA pro Messwert Ioff(avg) = 3uA Ruhestrom Vcc = 2,8 V Versorgungsspannung Von der Last verbrauchte Wirkenergie in Joule ist Eon = Vcc x Ion x Ton = 2,8 V x 26,5 mA * 420 ms = 31,164 mJ Von der Last verbrauchte inaktive Energie in Joule ist Eoff = Vcc x Ioff x Toff = 2,8 V x 3 uA x 580ms = 4,872uJ Normierung auf TcE = (Eon + Eoff)/Tc = (31,164mJ + 4,872uJ)/1 = 31,169mJ oder 31,2mJ pro Sekunde Laufzeit in Sekunden ist daher die Gesamtenergie der Quelle/verbrauchte Energie, die 36000J. beträgt / 31,2 mJ = 1155000 Sekunden = 320 Stunden = 13,3 Tage
Wenn wir diese Berechnungen wiederholen, können wir die Laufzeiten für die anderen Szenarien ermitteln:
SS-Modus
Fall A: 2 Messwerte pro Sekunde. Die normalisierte Energie beträgt 31,2 mJ. Daher beträgt die Laufzeit 13,3 Tage.
Fall B: 2 Messwerte pro Minute. Die normalisierte Energie beträgt 528 uJ. Daher beträgt die Laufzeit 2,1 Jahre.
Fall C: 2 Messwerte pro Stunde. Die normalisierte Energie beträgt 17uJ. Die Laufzeit wird mit >>10 Jahren berechnet, daher ist die Belastung durch tinyLiDAR vernachlässigbar. Der Akku wird daher nur durch seine Haltbarkeit (d. h. ca. 5 Jahre) begrenzt.
RT-Modus
Fall A: 1 Messwert pro Sekunde. Die normalisierte Energie beträgt 15,5 mJ. Daher beträgt die Laufzeit 26,8 Tage.
Fall B: 1 Messwert pro Minute. Die normalisierte Energie beträgt 267uJ. Daher beträgt die Laufzeit 4,3 Jahre.
Fall C: 1 Messwert pro Stunde. Die normalisierte Energie beträgt 12,7 uJ. Die Laufzeit wird mit >>10 Jahren berechnet, daher ist die Belastung durch tinyLiDAR vernachlässigbar. Der Akku wird daher nur durch seine Haltbarkeit (d. h. ca. 5 Jahre) begrenzt.
Daher ist der neue Echtzeitmodus mit Schlafzyklus hier von Vorteil, um die Laufzeit über 4 Jahre zu verlängern, wenn jede Minute eine Messung durchgeführt wird, wie in Fall B gezeigt.
Beachten Sie, dass der Energieverbrauch des Host-Controllers bei dieser Analyse nicht berücksichtigt wurde und die Spezifikationen des Akkus eher konservativ waren. Je nach Bedarf finden Sie viel leistungsstärkere Batterien.
Vielen Dank fürs Lesen und bleiben Sie dran, da wir ein funktionierendes IoT-Beispiel mit tinyLiDAR für unser nächstes instructable bereitstellen werden. Danke schön!
Empfohlen:
Arduino Auto-Rückfahrwarnsystem - Schritt für Schritt: 4 Schritte
Arduino Auto-Rückfahrwarnsystem | Schritt für Schritt: In diesem Projekt entwerfe ich eine einfache Arduino-Auto-Rückwärts-Parksensorschaltung mit Arduino UNO und dem Ultraschallsensor HC-SR04. Dieses Arduino-basierte Car-Reverse-Warnsystem kann für eine autonome Navigation, Roboter-Ranging und andere Entfernungsr
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): 3 Schritte
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): Manchmal korrigiert die Autokorrektur möglicherweise etwas, das Sie nicht korrigieren möchten, z. Textabkürzungen beginnen sich in Großbuchstaben zu setzen (imo korrigieren zum Beispiel zu IMO). So erzwingen Sie, dass die Korrektur eines Wortes oder einer Phrase beendet wird, ohne aut zu deaktivieren
Interessante Programmieranleitung für Designer - Bringen Sie Ihr Bild zum Laufen (Teil 2): 8 Schritte
Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 2): Mathematik scheint für die meisten von Ihnen nutzlos zu sein. Die in unserem täglichen Leben am häufigsten verwendete ist einfach Addieren, Subtrahieren, Multiplizieren und Dividieren. Es ist jedoch ganz anders, wenn Sie mit Programm erstellen können. Je mehr Sie wissen, desto mehr wundervolle Ergebnisse werden Sie erhalten
Installieren des Windows-Subsystems für Linux (WSL): 3 Schritte
Installieren des Windows-Subsystems für Linux (WSL): Diese Anleitung soll Benutzern helfen, das Windows-Subsystem für Linux auf ihrem Windows 10-Computer zu installieren. Die spezifische Linux-Distribution, die dieser Befehlssatz verwendet, heißt Ubuntu. Schauen Sie hier für eine Übersicht über die verschiedenen Linux
DIY IoT-Lampe für die Hausautomation -- ESP8266-Tutorial: 13 Schritte (mit Bildern)
DIY IoT-Lampe für die Hausautomation || ESP8266-Tutorial: In diesem Tutorial werden wir eine mit dem Internet verbundene intelligente Lampe erstellen. Dies wird tief in das Internet der Dinge eintauchen und eine Welt der Heimautomatisierung eröffnen! Die Lampe ist über WLAN verbunden und verfügt über ein offenes Nachrichtenprotokoll. Das heißt, Sie können wählen