In einem Mikrocontroller-Schaltkreis hält eine Batterie lange

26

Ich hoffe, dass ich einen ATtiny85V für eine schöne lange Zeit mit einer kleinen Batterie, wahrscheinlich einer Knopfzelle, versorgen kann.

Ich habe mir die Softwareseite angesehen, und mein Code ist über einen Watchdog-Timer gesteuert, unbenutzte Analog- und Digitalwandler sind ausgeschaltet, der Chip läuft mit 1 MHz usw. Natürlich bin ich nicht sicher, ob ich gerade beschäftigt oder neu bin Wie viel Strom zieht es, aber ich hoffe, ich habe es im Grunde minimiert.

Alle paar Sekunden wacht es auf, überprüft den Spannungspegel der ADCs, zeichnet ihn im RAM auf und geht wieder in den Schlaf. Wenn festgestellt wird, dass eine serielle Leitung angeschlossen ist, werden die Daten ausgespuckt.

Jetzt schaue ich jedoch auf die gesamte Rennstrecke und überlege, ob ich etwas tun sollte, um die Rennstrecke insgesamt batteriefreundlicher zu machen.

Was sind die grundlegenden Vor- und Nachteile beim Entwurf einer langlebigen (einfachen) Schaltung, bei der eine Komponente (der Mikrocontroller) eine sich wiederholende, aber variable Stromaufnahme aufweist?

Zum Beispiel:

  • Ist eine LED-Anzeige eine große Sache? Verbraucht der Akku, wenn er hell ist? Sollte ich einen riesigen Widerstand darauf legen, um ihn zu dimmen, oder verbraucht der Widerstand nur die Batterie?
  • Sollte ich Bypass- / Entkopplungskondensatoren verwenden, um die Stromaufnahme aus der Batterie auszugleichen, oder verschwendet der Kondensator nur die Energie der Batterie?
  • Der Mikrocontroller benötigt nur 1,8 V, aber ich habe keine 1,8 V-Batterien. Sollte ich zwei 1.x-Batterien verwenden und zu viel Spannung senden? Kann ich die Batterielebensdauer verlängern, indem ich "nicht so viele Volt verbrauche"? Wie mache ich das?
  • Benötigt es zusätzliche Energie, um zu überprüfen, ob ein Pin HOCH oder NIEDRIG ist? Gibt es im Vergleich zu einem No-Op oder einer Arithmetik viel zusätzlichen Stromverbrauch beim Überprüfen eines der GP-E / A-Pins auf seinen Status?

Ich weiß vage, wie man Strom, Spannung und Leistung berechnet (und genauer, wie man sie misst), aber ich bin mir nicht sicher, welches dieser Dinge der Batterielebensdauer entspricht. Ist die wichtige Messung der Batterielebensdauer in Coulombs?

Ich habe diese vage Vorstellung, dass Batterien voll sind mit Dingen wie:

  • aufladen, wie in Amperestunden
  • Energie, wie in Wattstunden
  • Leistung, wie in Watt

aber mir ist nicht wirklich klar, was meine Schaltung "isst", wenn sie läuft. Ich habe eine ganze Menge EE101- und Physiklehrbücher gelesen, aber ich habe keine wirkliche Laborerfahrung. Mit anderen Worten, ich habe eine Menge über Batterien gelesen, bin mir aber nicht sicher, was das meiste davon in der Praxis bedeutet.

Verbrauchen Widerstände die Batterielebensdauer? Kondensatoren machen? Dioden machen? Ich vermute, sie alle tun es, aber welche der Zahlen sind die, die wichtig sind? Impedanz? Energieverschwendung? Aktuell? Stromspannung?

Gibt es eine Möglichkeit, die Spannung zu senken, ohne die Batterie zu verschwenden? Gibt es eine Möglichkeit, die Spannung zu senken und gleichzeitig die Batterielebensdauer zu verlängern?

Jack Schmidt
quelle
6
Dies ist eine sehr sehr breite Frage. Sie müssen fast mehrere Fragen stellen. Ich könnte eine vollständige Frage zur LED-Leistung stellen.
Kortuk
1
Cool, ich werde es nach den Bürozeiten aufteilen. Vielleicht ist dies nur ein breites Dos und Don'ts. Ich denke, solche Antworten wären hilfreich für Leute, die nur versuchen, mehr aus einer Batterie herauszuholen, aber ich denke, dass es einer engeren Frage bedarf, wenn sie eine maßgebliche oder lehrreiche Antwort geben.
Jack Schmidt
Ja, mir wurde klar, dass ich meine Antwort nach Ihrer Frage sortieren musste, und ich würde eine Stunde brauchen.
Kortuk
Übrigens, meine Frau hat makezine.com/makeitlast gefunden, was eventuell nützlich sein könnte, da es im Grunde genommen ein Wettbewerb ist, solche Sachen zu machen. Ich denke, es beginnt heute, also haben sie keine Hinweise, wie es geht. Auf jeden Fall ist mein Projekt unabhängig und ich bezweifle, dass ich Zeit hätte, um daran teilzunehmen :) Warten Sie, bis der Wettbewerb vorbei ist, wenn Ihnen solche Dinge nicht gefallen.
Jack Schmidt

Antworten:

20

Nur eine zufällige Liste, wenn Sie Ihren Schaltplan posten, ist es wahrscheinlich einfacher:

1,8-V-Lithium-Knopfzellen sind sehr leicht zu finden, aber wahrscheinlich benötigt Ihre serielle Schnittstelle 3,3 V? Es sei denn, Ihr Empfangsende wird mit 1,8 V umgehen.

Der Leckstrom steigt im Allgemeinen mit zunehmender Spannung an, daher ist ein niedrigerer Wert in der Regel besser. Berücksichtigen Sie auch den Brownout-Punkt für das System im Vergleich zu den Batterieeigenschaften. Die 'Todes'-Eigenschaften der Batterie werden durch die von Ihnen verwendete Batteriechemie bestimmt. Wenn sich Ihre uC beispielsweise bei 1,7 V bräunt, möchten Sie möglicherweise eine Batterie mit höherer Spannung verwenden, da bei einigen Batterien die Ausgangsspannung langsam abnimmt, wenn die Batterie leer wird. Eine 3,3-V-Batterie hat eine längere Lebensdauer, da ihre Ausgangsleistung langsam nachlässt und Sie bis auf 1,8 V herunterfahren können. Wenn Sie eine 1,8-V-Batterie verwenden, werden Sie ziemlich schnell heruntergefahren, wenn die Batterie leer ist. Dies alles setzt voraus, dass Ihre serielle Schnittstelle oder andere Komponenten mit einem weiten Spannungsbereich umgehen können (ich kenne den AVR).

LEDs verbrauchen viel Strom. Wenn Sie keine LED mit sehr geringem Stromverbrauch verwenden und die Stromaufnahme steuern, verbrauchen sie wahrscheinlich viel mehr Strom als der AVR. Wenn es nur zum Debuggen da ist, füllen Sie es nicht für die Produktion auf oder lassen Sie es nur ab und zu blinken, um die Pünktlichkeit zu minimieren und die aktuelle Auslastung definitiv zu kontrollieren.

Wenn Sie können, wählen Sie die Polarität / den Ruhezustand Ihrer seriellen Schnittstelle aus, um so wenig Energie wie möglich zu verbrauchen. Der Ruhezustand sollte keine Energie verbrauchen. Wenn Klimmzüge erforderlich sind, verwenden Sie den größtmöglichen Widerstand, um die Signalintegrität aufrechtzuerhalten, aber den Stromverbrauch zu minimieren. Wenn Leistung ein großes Problem ist, verwenden Sie ein Signalschema, das Bits bevorzugt, die keine Leistung ziehen. Wenn Sie beispielsweise Klimmzüge haben und ein Protokoll verwenden, das zu vielen Einsen im Signal führt, wird die serielle Schnittstelle in einem Zustand belassen, in dem die meiste Zeit nicht so viel Strom verbraucht wird. Solche Optimierungen sind nur dann sinnvoll, wenn Sie den seriellen Bus intensiv nutzen. Wenn es nur sehr leicht verwendet wird, stellen Sie sicher, dass der Ruhezustand keine Energie zieht.

Im Allgemeinen können Sie davon ausgehen, dass alle Anweisungen (Lesen von GPIO usw.) dieselbe Leistung erfordern. Es ist nicht wirklich wahr, aber der Leistungsunterschied ist minimal.

Der Stromverbrauch hängt wesentlich mehr von der Anzahl / Art der Peripheriegeräte ab, die Sie eingeschaltet haben, und von der Zeit, die das Mikro im Vergleich zum Ruhezustand aktiv ist. Damit der ADC mehr Strom verbraucht, verbrauchen EEPROM-Schreibvorgänge eine angemessene Menge Strom. Insbesondere werden so etwas wie EEPROM-Schreibvorgänge normalerweise in relativ großen "Blöcken" ausgeführt, sodass Sie so viele Informationen wie möglich sammeln sollten, bevor Sie in das EEPROM schreiben (wenn Sie es natürlich auch verwenden). Für den ADC, der das Lesen des ADC während 2 seiner Schlafzustände unterstützt, ist dies eine gute Zeit zum Schlafen, da die ADC-Konvertierung relativ lange dauert.

Sie sollten wahrscheinlich nur die Abschnitte zu Energieverwaltung, Energiesparmodus und Minimierung des Energieverbrauchs im Datenblatt des Mikrocontrollers lesen : Linky Seite 35 weiter. Halten Sie den AVR so lange wie möglich im Tiefschlaf. Die einzige Ausnahme ist, dass Sie die Start- und Abschaltzeit berücksichtigen müssen. Es lohnt sich nicht, 10 Zyklen lang zu schlafen, wenn das Aufwachen 25 usw. dauert.

Verbrauchen Widerstände die Batterielebensdauer? Kondensatoren machen? Dioden machen?

Sie alle tun es bis zu einem gewissen Grad. Widerstände verbrauchen in den meisten Anwendungen am meisten:

P = V * I

P = V ^ 2 / R oder P = I ^ 2 * R (wobei V der Spannungsabfall über dem Widerstand ist)

Dioden haben einen (relativ) festen Spannungsabfall, so dass die Verlustleistung fast ausschließlich an den durch die Diode fließenden Strom gebunden ist. Zum Beispiel eine Diode mit einem Durchlassspannungsabfall von 0,7 V, P = 0,7 * I, wenn Strom durch die Diode fließt. Dies ist natürlich eine Vereinfachung und Sie sollten den Betriebsmodus anhand der IV-Eigenschaften der Diode überprüfen.

Kondensatoren sollten theoretisch keine Leistung abführen, aber in Wirklichkeit haben sie einen endlichen Serienwiderstand und einen Leckstrom ungleich Null, was bedeutet, dass sie etwas Leistung abführen, im Allgemeinen jedoch nichts, worüber Sie sich bei so niedrigen Spannungen Gedanken machen sollten. Die Auswahl von Kondensatoren mit minimalem Ableitstrom und ESR ist jedoch ein enormer Gewinn.

Soweit sie verwendet werden, um den Batterieverbrauch auszugleichen, hilft dies nicht wirklich beim Stromverbrauch, sondern eher beim Filtern. Auch die Batteriechemie spielt hier eine Rolle, einige Chemien werden mit einem konstanten Draw zufriedener sein, andere besser mit einem stacheligen Current Draw.

Kennzeichen
quelle
1
Der wichtige Teil von P = V ^ 2 / R ist, dass der Stromverbrauch abnimmt, wenn R mit einer festen Spannung ansteigt.
Kortuk
Kühlen Sie ab, also, um mehr von der Batterie zu benutzen, benötige ich vermutlich höhere Spannung (möglicherweise unter Verwendung des Reglers, der von Andrew vorgeschlagen wird). Ich werde einige Experimente durchführen, um zu sehen, wie niedrig die Spannung für die serielle Leitung ist. Ich werde auch sicherstellen, dass die nicht verwendeten Stifte für die Ausgabe festgelegt werden. Seriell wird nur gelegentlich verwendet, daher überprüfe ich nur den Ruhezustand. Ich habe definitiv versucht, alle Peripheriegeräte herunterzufahren, die ich kann.
Jack Schmidt
Für Kondensatoren: Wahrscheinlich brauche ich keinen Kondensator, um die Batterie zu entlasten. Überprüfen Sie die Batteriechemie, aber nehmen Sie an, dass sie das Stromverbrauchsmuster verarbeiten kann. Dann müssen Sie nicht versuchen, es anzupassen, oder?
Jack Schmidt
Danke für die P-Sache. Ich glaube ich verstehe jetzt. P = I * V wobei V der Spannungsabfall ist, damit ich den Batterieverbrauch in P oder I (oder P-Stunden oder I-Stunden) messen kann, solange die Spannung nicht geändert werden kann. Ich bin mir immer noch nicht sicher, ob ich V "kostenlos" ändern kann.
Jack Schmidt
1
Der erwähnte Buck-Boost-Regler andrew ist wirklich die beste Lösung. Ich habe es nicht erwähnt, weil das Layout solcher Schaltungen normalerweise kritisch ist. Es ist schwierig, sie ohne flippige Leistung oder tonnenweise EMI zu brettern. Lesen Sie das Datenblatt sorgfältig durch. Empfehlungen für das Layout und die Identifizierung kritischer Pfade sind normalerweise enthalten. Es wird auch strengere Beschränkungen für einige der verwendeten Teile geben. Kondensatoren mit niedrigem ESR und dergleichen.
Mark
12

Mark gab eine exzellente Antwort und traf auf viele der Punkte, die ich ansprechen wollte. Es gibt ein paar, die ich auch gerne beisteuern möchte.

Verwenden Sie ein Oszilloskop mit einem niederohmigen Widerstand in Reihe mit der Batterie, um Strommessungen durchzuführen. Die Stromaufnahme mit einem Mikrocontroller ist nicht einfach und in der Regel sind Messgeräte viel zu langsam, um eine gute Vorstellung davon zu bekommen, was vor sich geht. Was "niederohmig" bedeutet, hängt von der zu erwartenden Stromaufnahme ab. Ein 1-Ohm-Widerstand erzeugt 100 mV für jeweils 100 mA, und das ist wahrscheinlich zu viel für Sie. Ich würde einen 10 Ohm 1% oder 0,5% Widerstand versuchen; Sie sehen 100 mV für jede 10 mA Stromaufnahme. 18 Ohm würden Ihnen 100mV für jeden 5.5mA geben. Wenn Sie WIRKLICH auf niedrige Leistung aus sind, können Sie möglicherweise mit 1 km davonkommen. I = V / R: Sie sehen 100 mV für jeweils 100 uA entnommenen Strom. Vorsichtig aber; Wenn Sie genug Strom ziehen, fallen Sie am Ende zu stark über den Shunt und Ihre Messungen sind ausgeschaltet. Ganz zu schweigen von der Schaltung wird wahrscheinlich nicht funktionieren. :-)

Probieren Sie bei angeschlossenem Oszilloskop einige verschiedene Betriebsfrequenzen für den Mikrocontroller aus. Es mag Sie überraschen, dass Sie mit einer höheren Taktrate weniger Strom verbrauchen, weil Sie viel weniger Zeit "wach" verbringen.

Vermeiden Sie Klimmzüge so weit wie möglich. Sie sollten keine Ausgabe haben, da Sie sie in den meisten Fällen in einen Leerlaufzustand versetzen können. Die Eingaben sollten mit einem möglichst hohen Wert verknüpft werden, wie Mark sagte.

Stellen Sie sicher, dass Ihr Mikrocontroller so weit wie möglich ausgeschaltet ist. Verwandle unbenutzte Pins in Ausgänge und versetze sie in einen Zustand (hoch oder niedrig, egal). Lassen Sie keine LEDs an. Wenn Sie andere Komponenten ausschalten oder ihre Uhren stoppen können, tun Sie dies. SPI-Flash-Speicher verfügen beispielsweise häufig über einen Befehl zum Ausschalten, mit dem der ohnehin schon geringe Stromverbrauch noch weiter verringert wird.

Andere haben den Spannungsaspekt angesprochen, und ich möchte ihn auch kommentieren. Sie werden wahrscheinlich VIEL bessere Batterie verwenden, wenn Sie einen hocheffizienten Abwärts- / Aufwärtsregler zwischen der Batterie und Ihrem Stromkreis verwenden. Der Regler befindet sich im Buck-Modus (Spannungsreduzierung), wenn der Batteriestand höher als die von Ihnen benötigten 1,8 V ist, und wechselt in den Boost-Modus (Spannungserhöhung), wenn der Batteriestand unter 1,8 V fällt. Auf diese Weise können Sie den Stromkreis so lange betreiben, bis die Batterie vollständig entladen ist. Dies ist den Wirkungsgradverlust von wenigen Prozent wert, den Sie durch die Verwendung der Batterien erzielen. Stellen Sie sicher, dass der Regler über den gesamten Bereich, den Sie verwenden möchten, basierend auf seiner Effizienz ausgewählt wird, und dimensionieren Sie den Regler entsprechend. Ein Regler, der bei 98% Wirkungsgrad 1A liefern kann, liefert wahrscheinlich bei 60% Wirkungsgrad 50 mA. Lesen Sie die Datenblätter sorgfältig durch.

akohlsmith
quelle
Cool. Ich habe vorher noch kein Oszilloskop verwendet, aber ich vermute, dass unser lokales Labor mir dies gerne zeigen wird (derzeit verwende ich das Multimeter in Serie, um den Strom zu messen; nicht sehr gut). - Würden Sie den Regler auch dann empfehlen, wenn ich nur 1-10 mA verwende, vorausgesetzt, ich finde ein geeignetes Teil? Ist ein Wirkungsgrad von 90% gut genug (ich erinnere mich, dass ich einen billigen in diesem Bereich gefunden habe), oder verbraucht er mehr Strom, als er mir erspart?
Jack Schmidt
1
Ein sehr guter Punkt, um mit der Frequenz zu spielen, erinnert mich daran, wie das WLAN-Radio in meinem Handy mehr Strom verbraucht als das Mobilfunkmodem, aber das WLAN ist so viel schneller, dass es mehr schlafen kann und dadurch insgesamt besser mit Strom auskommt.
Mark
2
Ein weiterer Trick zur Schätzung des zeitlichen Durchschnitts des Stromverbrauchs von Mikrocontrollern in Szenarien, in denen die Stromaufnahme "platzt", besteht darin, einen wirklich großen Kondensator aufzuladen und ihn einen Stromregler mit niedrigem Ruhestrom speisen zu lassen, um die Batteriespannung zu simulieren. Ein 100.000 uF Kondensator wird 0,01 Volt pro Milliampsekunde fallen. Wenn sie in fünf Minuten (300 Sekunden) um 0,3 Volt abfällt, beträgt die durchschnittliche Stromaufnahme 100 uA.
Supercat
Der Punkt der Effizienz der Regulierungsbehörden ist sehr wichtig. Sie müssen also Ihren Bereich des Stromverbrauchs abschätzen, um einen geeigneten Regler innerhalb dieses Bereichs auszuwählen
gustavovelascoh,
4

Bei Ihrer Schaltung würde ich empfehlen, ein Multimeter im Mikroampere-Bereich zu verwenden, um den Stromverbrauch zu messen. Anhand der Batterieeigenschaften können Sie dann die Lebensdauer berechnen. Es muss nicht unbedingt Amperestunden / Strom sein, da der Akku unterschiedliche Entladungseigenschaften für unterschiedliche Lasten aufweist. Dies kann jedoch als Annäherung nützlich sein.

Bei 1 MHz, glaube ich, werden Sie ein bisschen Strom verbrauchen - mindestens 100µA, wenn PIC-Mikros zu vergleichen sind. Aber dies wird durch die 5mA bis 20mA, die durch Ihre LED gehen, überfordert sein, also sollten Sie dies zuerst loswerden.

Thomas O.
quelle
Cool, LED gelöscht. Es fällt mir schwer, eine genaue Messung durchzuführen. Sieht aus wie 0,9 mA im Moment, also wird meine Software möglicherweise nicht so stark heruntergefahren, wie ich dachte. Mit Arduino (und Heartbeat-LED) ist es eher 8-9mA, also hilft zumindest das Winzige.
Jack Schmidt
1

Heutzutage gibt es sofort verfügbare Entwicklungskits und Breakout-Boards, die sich hervorragend für präzise Strommessungen eignen, zum Teil bis in den nA-Bereich. Falls Sie das µCurrent Gold noch nicht definitiv getestet haben . Dies ist gut für statische Messungen, aber weniger für das Protokollieren von Messungen im Zeitverlauf.

Eine Möglichkeit, den µCurrent weiterhin zu verwenden, besteht darin, einen Differenzverstärker an den Ausgang anzuschließen. Dann können Sie das einem Oszilloskop oder einem Logikanalysator mit analogen Eingängen zuführen. Ich habe ein komplettes Tutorial dazu geschrieben. Ich glaube, es kann Leuten mit kleinem Budget helfen, die nicht über die richtigen Tools verfügen.

Es ist erstaunlich, was Sie nicht nur von der Spannung in Ihrem Schaltkreis lernen können, sondern auch von der Reaktion auf jede kleine Stromspitze. Bei der Auswahl der Batterietechnologien und den Validierungstests hat sich mein Hintern ein paarmal gerettet. 😎

jaredwolff
quelle
0

Alle Antworten haben bereits wichtige Punkte. Ich werde eine aus meiner Erfahrung hinzufügen.

Als ich Geräte mit einem Verbrauch von weniger als 10 uA und sogar weniger als 1 uA im Tiefschlafmodus entwickelte, machte die Reinigung des Boards einen Unterschied. Einmal hatte ich 7 von 10 Boards mit dem erwarteten Stromverbrauch. Alle waren gleich und alle funktionierten in Ordnung. Nach dem Reinigen mit einem Ultraschallreiniger erreichten alle Platten das erwartete Ergebnis.

Und schließlich schätzen Sie Ihren erwarteten / angestrebten Verbrauch, indem Sie die Datenblätter aller Ihrer Elemente überprüfen. Wenn Sie damit klar kommen, werden Sie Ihre Einschätzung erreichen. Dies schließt alle nicht verwendeten Pins im Mikrocontroller ein. Auch wenn Sie den ADC ausschalten, stellen Sie sicher, dass die Pin-Konfiguration im ausgeschalteten Zustand am besten von Ihrer externen Verbindung abhängt.

gustavovelascoh
quelle