Wir bauen einen stromsparenden Datenlogger auf der Basis des ATmega328P, um den Arduino-Bootloader und die IDE usw. zu nutzen. Idealerweise sollte der Stromverbrauch weniger als 0,3 mA bei 3,3 V betragen, um eine Lebensdauer von etwa 4 Monaten für einen einzelnen zu erreichen AA Batterie. Die Sensordaten werden 4 Monate lang mit maximal 76 Bytes / Sek. Gespeichert, was etwa 750 MiB Daten ergibt. Aus diesem Grund benötigen wir ein großes Speichergerät, das immer noch wenig Strom verbraucht.
Soweit ich weiß, ist die einzige praktische Lösung, um so viele Daten zu speichern, die Verwendung einer SD-Karte. SD-Karten scheinen jedoch etwas mehr Energie zu verbrauchen, als wir uns leisten können, 0,2 mA Leerlaufstrom für die Karten, die wir jetzt haben, und mehr, wenn sie schreiben.
Also ein paar Fragen:
- Ist ein High-Side-Schalter die einzige praktische Möglichkeit, den Stromverbrauch der SD-Karte zu steuern?
- Welche Vorsichtsmaßnahmen sollten wir beachten, wenn wir die Karte einschalten? Zum Beispiel ist Wear-Leveling ein Prozess, der nach einem Blockschreibvorgang ausgeführt wird oder jederzeit ausgeführt werden kann.
- Gibt es noch andere Alternativen, die wir in Betracht ziehen sollten?
quelle
Antworten:
Bei einem Budget von durchschnittlich 0,3 mA zählt jeder µA. Für den Mikrocontroller kein so großes Problem, aber die SD-Karte verbraucht Dutzende von mAs. Sie möchten es so wenig wie möglich einschalten. Der ATmega328P verfügt jedoch nur über 2 kB RAM. Das bedeutet, dass der Sample-Puffer in weniger als einer halben Minute voll ist und es Zeit ist, auf die SD-Karte zu schreiben. Zweimal in der Minute.
Ich würde einen TI MSP430 anstelle des AVR in Betracht ziehen. Es ist immer noch der Controller mit der niedrigsten Leistung, der allgemein verfügbar ist. Sie sparen den µA, den Sie beim Schreiben auf die SD-Karte benötigen. Der MSP430F5418A verfügt außerdem über 16 kB RAM, sodass Sie die SD-Karte nur alle dreieinhalb Minuten einschalten müssen.
Sie können den MSP430 mit seinem Niederfrequenzoszillator betreiben und zum Beschreiben der SD-Karte auf den Hochfrequenz-DCO (Digitally Controlled Oscillator) umschalten, damit dies so schnell wie möglich geschieht.
Für die Stromversorgung der SD-Karte würde ich in der Tat einen High-Side-Schalter verwenden. Der BSS215P ist ein geeigneter P-MOSFET auf Logikebene .
Bearbeiten
Wenn Ihnen ein BGA-Paket nichts ausmacht, ist ein NAND-Flash-Gerät möglicherweise eine Alternative zur SD-Karte. Dieser kann im MMC- oder SPI-Modus betrieben werden. Es verbraucht weniger als eine SD-Karte, verbraucht aber im Standby-Modus immer noch 200 µA. Sie sollten es also trotzdem mit dem High-Side-FET ausschalten. Stellen Sie sicher, dass die E / A auf dem Chip niedrig sind, bevor Sie die Stromversorgung ausschalten. Das gilt auch für die SD-Karte.
quelle
(Beantworte meinen eigenen Beitrag mit nützlichen Informationen)
Ich habe einige Experimente mit einem begrenzten Satz von SD-Karten durchgeführt, um deren Stromverbrauch zu überprüfen. Sie scheinen von Hersteller zu Hersteller sehr unterschiedlich zu sein, und manche Karten verbrauchen zehnmal mehr Energie als andere.
Es gibt zwei Ergebnisse unten. Das erste ist der geschätzte Stromverbrauch im Schlaf, und das zweite ist der durchschnittliche Stromverbrauch für ungefähr 1 Sektor, der alle 5 Sekunden für mein Board geschrieben wird .
Ich habe den Spitzenstrom nicht berücksichtigt, da er mit meinem Multimeter nicht zuverlässig zu messen scheint. Wahrscheinlich, weil die Karte nur für einige ms beschrieben wird. Ich bemerkte jedoch, dass alle Karten einen Spitzenwert von 5 bis 6 mA (geglättet) aufwiesen, während der Lexar 2 bis 3 mA (geglättet) aufwies. Beachten Sie, dass der tatsächliche Maximalstrom eine Größenordnung größer ist als dieser Wert. Dies zeigt jedoch an, dass die Lexar-Karte sowohl einen niedrigen Schreibstrom als auch einen niedrigen Ruhezustand aufweist.
Aktueller Gewinner
Lexar 8 GB Class 6
Ich werde diese Liste aktualisieren, sobald weitere Tests durchgeführt wurden. (Letzte Aktualisierung: 14.08.2014)
quelle
Schöne Tests. Schauen Sie sich unser Lernprogramm für Low-Power-Datenlogger mit Arduino Pro Mini und SD-Karten an: http://www.osbss.com/tutorials/temperature-relative-humidity/
Es enthält wahrscheinlich genau das, was Sie brauchen (RTC-Interrupt weckt es auf, fast ein Jahr Batterielebensdauer usw.). wenn Sie andere Karten oder den bloßen ATmega328P-Chip selbst verwenden.
Wie @stevenvh bereits sagte, benötigen Sie einen Transistor, um die Stromversorgung des SD-Kartenlesers zu steuern, wenn sich der Prozessor im Energiesparmodus befindet.
quelle
Die niedrigsten Schlafströme, die ich für SD-Karten gesehen habe, liegen bei 0,05 mA für alte Sandisk 256 MB, und wie bei den OSBSS-Leuten wird mein Datenlogger selten unter 0,1 mA aufgebaut, da typische SD-Karten ungefähr 0,07 mA zu ziehen scheinen. Wenn Sie dieses Gebiet erreichen, sollten Sie in der Lage sein, 3-4 Monate aus einem AA herauszuholen, wenn Ihr Boot-Regler effizient genug ist.
Vergewissern Sie sich, dass Sie die nicht verwendeten Verbindungen an Ihrem SD-Kartenadapter hochziehen, da sonst die Ruheströme viel höher sein können. Erkunden Sie auch die Low-Power-Bibliothek von Rocket Screem, mit der Sie problemlos in verschiedene 328P-Schlafmodi wechseln können.
Was das Umschalten betrifft: Der Kollege, der die SD-Bibliotheken für den Arduino geschrieben hat, warnt davor, die SD-Karten auf dem Arduino-Spielplatz auszuschalten, sodass ich diesen Ansatz nicht verfolgt habe. Ich wäre gespannt, wie es für die OSBSS-Jungs gelaufen ist (?)
quelle