Inhaltsverzeichnis:

TinyLiDAR für IoT - Gunook
TinyLiDAR für IoT - Gunook

Video: TinyLiDAR für IoT - Gunook

Video: TinyLiDAR für IoT - Gunook
Video: Как использовать 2 или более лазерных датчиков расстояния VL53L0X 2024, November
Anonim
TinyLiDAR für IoT
TinyLiDAR für IoT

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:

Bild
Bild

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.

Bild
Bild

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.

Bild
Bild

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.

Bild
Bild

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: