Wie kann die Leistung im Barebone-Setup von atmega328p reduziert werden?

Alle 15 Minuten werden einmal Ultraschallsensordaten mit nRF24L01 an den Empfänger gesendet. Ich verwende atmega328P mit Batteriebetrieb mit AAA * 3-Batterie und es sollte mindestens 15 Tage funktionieren. Kann mir bitte jemand vorschlagen, wie ich den Stromverbrauch reduzieren kann, außer zum Zeitpunkt des Lesens von Daten vom Sensor. Ich habe auf eine Reihe von Blogs verwiesen, die den Tiefschlafmodus verwenden, aber ich muss ihn alle 15 Minuten aufwecken. Ich kann den Watchdog-Timer nicht verwenden, da er nur 8 Sekunden hat. Wenn ich eine externe RTC für Interrupts verwende, entstehen zusätzliche Kosten im Produkt.

Vielen Dank im Voraus :)

Antworten (2)

Haben Sie einen anderen Mikrocontroller in Betracht gezogen? Der AVR ist nicht gerade der sparsamste auf dem Markt. Es gibt auch XLP PICs und MSP430 (das MSP430 ist auch 16 Bit).

Außerdem sollten Sie die Leistungsbilanz Ihres Sensors überprüfen; Stellen Sie sicher, dass Sie tatsächlich alles ausschalten, was Sie nicht brauchen, wenn Sie nicht schlafen (die analoge Ultraschallschaltung saugt im Standby-Modus ziemlich viele Milliampere, wenn sie nicht ausgeschaltet ist); Überprüfen Sie auch den Stromverbrauch des Radios, vielleicht haben Sie einen Standby-Befehl vergessen (ich vergesse, ständig!)

Auch die Einrichtung Ihrer Leistungsumwandlung ist sehr wichtig. Was verwenden Sie, um die Leistung Ihrer Batterien zu regulieren?

Da Atmega328p eine Toleranz zwischen 1,8 V und 5,5 Vi hat, bevorzugen Sie keinen Regler, bei dem die Batteriespannung 4,5 V (AAA * 3) beträgt.
MSP430 kann seine eigene RTC mit einem 32,768-kHz-Quarz und einem internen Timer implementieren, der so selten aufwacht, wie Sie möchten. Meine Uhr wacht einmal pro Minute auf und läuft bei ausgeschaltetem Display mit etwa 0,8 uA (etwas besser als 70 uA!). Ich würde erwarten, dass Sie mit dem AVR und einem Uhrenkristall etwas Ähnliches tun und auf ein paar uA herunterkommen könnten, aber ich habe es nicht versucht.

Sie können den Watchdog-Timer verwenden, um 15 Minuten lang zu schlafen, indem Sie direkt nach dem Aufwachen so oft wie nötig in den Tiefschlafmodus wechseln, um 15 Minuten zu erreichen. Sie können verfolgen, wie viele 8-Sekunden-Zyklen Sie mit einer Variablen geschlafen haben. Der Inhalt des SRAM des Chips wird während des Ruhezustands beibehalten.

Danke mein Herr. Ich habe das versucht und den Strom auf 70 Mikroampere reduziert !!!!!!!!!!!. Ich habe eine der Bibliotheken benutzt und dabei die gleichen Dinge getan, die du gesagt hast.
Etwas anderes, das helfen könnte, den Stromverbrauch noch weiter zu reduzieren, ist (falls Sie es nicht bereits tun), Folgendes zu tun, bevor Sie Ihren avr in den Ruhezustand versetzen: - Deaktivieren Sie den analogen Komparator: ACSR = (1 << ACD); - ADC deaktivieren: ADCSRA &= ~(1 << ADEN); - Deaktivieren Sie eine Reihe von Peripheriegeräten: power_all_disable(); ( Weitere Einzelheiten finden Sie unter nongnu.org/avr-libc/user-manual/group__avr__power.html ) Denken Sie daran, das zu aktivieren, was Sie nach dem Aufwachen benötigen (und es wieder zu deaktivieren, bevor Sie schlafen gehen). Dieses Dokument war sehr informativ für mich: gammon.com.au/power