Wie finde ich Energielecks?

7

Ich bin gerade dabei, Software für die eZ 430 Chronos-Uhr mit TinyOS zu schreiben . Ich möchte, dass es so stromsparend wie möglich ist.

Leider zeigen meine Messungen einen Stromverbrauch von ca. 350uA bei 3,3 V in einem einfachen Leerlaufprogramm, das nichts anderes tut, als alle Sensoren auszuschalten, den externen Oszillator zu aktivieren und in den LPM4-Modus zu wechseln. Dieser Wert ist größer als die beiden externen Sensoren essen können.

Die ursprüngliche Texas Instruments-Software (die ich gelesen und nichts gefunden habe, was ich vergessen hätte einzustellen) verbraucht im Leerlauf etwa 9uA.

Gibt es Methoden zum Debuggen von Energieverlusten? Wie soll ich vorgehen, wenn die Überprüfung meines Codes (und von TinyOS) kein Problem ergab?

Ich messe den Stromverbrauch mit einem Oszilloskop und einem Verstärker ähnlich dem uCurrent von Dave Jones. Ich habe dieses Set an einer Reihe von Widerständen getestet und korrekte Messwerte erhalten.

Die Schaltpläne für die eZ430-Uhr finden Sie hier auf Seite 79 .

Rafał Rawicki
quelle
Welche IDE / Compiler verwenden Sie?
m.Alin
nesc-1.3.3 und Vim
Rafał Rawicki
5
TI verfügt über eine Checkliste mit Regeln , die Sie anhand Ihres Quellcodes überprüfen können, um sicherzustellen, dass Ihr MSP430 den niedrigstmöglichen Energieverbrauch aufweist.
m.Alin
@ m.Alin Ich habe diese Checkliste positiv bewertet, da ich nur einen Teil dieser Empfehlungen kannte und sie nützlich sind. Die meisten davon gelten jedoch für die Programmausführung, und ich habe ein Energieleck, selbst wenn die CPU im Ruhezustand ist.
Rafał Rawicki

Antworten:

5

Das Problem war die Unterstützung unserer Uhren in TinyOS, die TA1CTL mit gesetztem Bit für den kontinuierlichen Modus verließ und verhinderte, dass der Schlafmodus niedriger als LPM1 war.

Aus diesem Problem kann ich einige Lektionen für die Zukunft lernen:

  • Die richtige Messung ist entscheidend für das Debuggen solcher Probleme. Das Oszilloskop mit einem Mikrostrommesser war sehr hilfreich.
  • Lesen Sie Ihre Datenblätter sorgfältig durch. Wenn Sie wissen, wie hoch der Stromverbrauch jedes Geräts in jedem Modus ist, können Sie den gemessenen Wert an das Gerät anpassen .
  • Berechnen Sie, in welchem ​​Schlafmodus Sie sich wirklich befinden. Sie haben wahrscheinlich irgendwo in Ihrem Programm einen Berechnungscode für den Schlafmodus. Drucken Sie das Ergebnis irgendwo aus, wenn Sie können.
  • Der Rest ist der Prozess der Beseitigung . Entweder negativ - Teile des Codes kommentieren oder deaktivieren und prüfen, ob sich der Stromverbrauch ändert, oder positiv - Sie erhalten eine Beispielsoftware vom Chiphersteller und fügen den Code durch Chunks zu Ihrem Programm hinzu, um zu überprüfen, ob Sie nicht vergessen haben, etwas zu initialisieren .
Rafał Rawicki
quelle
0

Die einfache Antwort lautet: Prozess der Beseitigung.

Zuletzt habe ich mit TinyOS gearbeitet (vor fast 4 Jahren), wir hatten immer Probleme mit dem Energiesparmodus. Es weckte die MCU regelmäßig, um ihre Planung durchzuführen.

Ich würde empfehlen, dass Sie die TI-Software installieren und selbst auf Ihrem Prüfstand messen. Das gibt Ihnen einen besseren Bezugspunkt.

Nachdem Sie sich das Schema angesehen haben, auf das Sie verwiesen haben, scheint 9uA angesichts aller potenziellen Leckpfade durch die Off-Chip-Peripheriegeräte etwas niedrig zu sein. Es kann sich um einen Best-Case-Fall oder eine von mir als "Sternchen" bezeichnete Nummer handeln (tritt nur unter hochqualifizierten, sorgfältig festgelegten Bedingungen auf). Ich habe die Komponenten nicht recherchiert. Das ist nur meine Spekulation.

DrFriedParts
quelle
Ich habe 9uA (vom TI deklariert) mit meinen eigenen Messungen bestätigt. Die Sensoren sind stromsparend ausgelegt und verbrauchen im ausgeschalteten Zustand sehr wenig. Dies ist natürlich ein Wert, wenn alles auf der Karte ausgeschaltet ist und sich der Prozessor im LPM4-Modus befindet.
Rafał Rawicki
Dann liegt das Problem bei TinyOS. Welche Version verwenden Sie? Haben Sie Fahrer für den Chronos? ... oder sie selbst schreiben? Ich fand dies auf der TinyOS-Liste (auf der ich mich befinde), auf der Benutzer über Chronos diskutierten, als es herauskam, und es wurde offensichtlich zu diesem Zeitpunkt nicht unterstützt. Das Leck tritt eindeutig in Ihren Peripheriegeräten (z. B. sind sie noch eingeschaltet) oder mit dem TinyOS-Scheduler (die BMAC-Implementierung weckt die CPU regelmäßig auf) auf - oder wahrscheinlich in einer Kombination aus beiden.
DrFriedParts
0

Ich kann das genaue Datenblatt nicht platzieren, aber Linear Tech hat einige ausgezeichnete Daten zur Messung von extrem geringem Stromverbrauch und geringem Rauschen. Suchen Sie nach Dingen, die von Jim Williams oder Bob Pease geschrieben wurden, beide Meister ihres Fachs.

John U.
quelle