Przechowywanie kart micro-SD o niskiej mocy

18

Budujemy rejestrator danych o niskiej mocy oparty na ATmega328P, w celu wykorzystania modułu ładującego Arduino i IDE itp. Idealnie zużycie energii powinno być mniejsze niż 0,3 mA przy 3,3 V, aby uzyskać około 4 miesięcy życia na jednym Bateria AA. Dane czujnika będą przechowywane z maksymalną prędkością 76 bajtów / s przez 4 miesiące, co daje około 750 MiB danych. Dlatego potrzebujemy dużego urządzenia pamięci, które wciąż ma małą moc.

Z tego, co mogę powiedzieć, jedynym praktycznym rozwiązaniem do przechowywania tak dużej ilości danych jest użycie karty SD. Wydaje się jednak, że karty SD zużywają nieco więcej energii, niż możemy sobie pozwolić, prąd jałowy 0,2 mA dla kart, które mamy teraz, i więcej, gdy piszą.

Więc kilka pytań:

  • Czy wyłącznik wysokiej strony jest jedynym praktycznym sposobem kontrolowania zużycia energii przez kartę SD?
  • Czy są jakieś zastrzeżenia, o których powinniśmy pamiętać przy przełączaniu zasilania na kartę? Na przykład wyrównywanie zużycia to proces, który zostanie przeprowadzony po zapisie bloku, lub może się zdarzyć w dowolnym momencie.
  • Czy są jakieś inne alternatywy, które powinniśmy rozważyć?
geometrikal
źródło
1
solarduino.net/?p=58 to artykuł, który może Cię zainteresować
vicatcu
Rozważ dodanie zewnętrznej pamięci RAM, takiej jak 23LC1024. Następnie możesz buforować więcej i zatrzymać kartę SD. Microchip tworzy również wersję z podtrzymaniem bateryjnym, jeśli przeszkadza Ci myśl o siedzeniu w pamięci ulotnej.
markrages

Odpowiedzi:

19

Jeśli budżetujesz średnio 0,3 mA, liczy się każdy µA. Nie stanowi to większego problemu dla mikrokontrolera, ale karta SD zużywa dziesiątki mA. Chcesz, aby była jak najmniej włączona. Ale ATmega328P ma tylko 2 kB pamięci RAM, co oznacza, że ​​bufor próbki zostanie zapełniony w mniej niż pół minuty, a następnie nadszedł czas, aby zapisać na karcie SD. Dwa razy na minutę.

Rozważałbym TI MSP430 zamiast AVR. Jest to wciąż powszechnie dostępny kontroler o najniższej mocy. Pozwoli ci to zaoszczędzić µA, którego potrzebujesz, zapisując na kartę SD. MSP430F5418A ma również 16 KB pamięci RAM, dzięki czemu masz do władzy na karcie SD tylko raz na trzy i pół minuty.

Możesz uruchomić MSP430 na oscylatorze niskiej częstotliwości i przełączyć się na DCO wysokiej częstotliwości (oscylator sterowany cyfrowo) w celu zapisu na karcie SD, dzięki czemu zajmuje to jak najmniej czasu.

Do zasilania karty SD rzeczywiście użyłbym przełącznika high-side. BSS215P jest odpowiedni układ logiczny poziom P-MOSFET.

edytuj
Jeśli nie przeszkadza ci pakiet BGA, urządzenie NAND Flash może być alternatywą dla karty SD. Ten może działać w trybie MMC lub SPI. Zużywa mniej niż karta SD, ale nadal zużywa 200 µA w trybie gotowości, więc nadal będziesz chciał go wyłączyć za pomocą wysokiej częstotliwości FET. Przed wyłączeniem zasilania upewnij się, że układy we / wy są na niskim poziomie. Dotyczy to również karty SD.

stevenvh
źródło
Dzięki za informację. Niestety, obecnie ograniczamy się do MCU z dostępnymi modułami ładującymi Arduino, ale rozważamy Atmega644PA ze względu na zwiększoną pamięć RAM. MCU zostanie przebudzone przez przerwanie RTC w celu wykonania pomiarów i wyłączenia zasilania w innym czasie. Czy istnieją alternatywy dla karty SD? Twoja sugestia, aby uzyskać MCU z dużą ilością pamięci RAM dla dużego bufora, jest dobra, o której nie myślałem. :)
geometrikal
@stevenvh Jakie cechy BSS215P MOSFET sprawiają, że nadaje się do tego zastosowania?
Elec Entuzjasta
AVR może nawet być w stanie dostarczyć kartę SD z pinu GPIO (powinno być możliwe 20mA).
JimmyB
14

(Odpowiadanie na mój post z przydatnymi informacjami)

Przeprowadziłem pewne eksperymenty z ograniczonym zestawem kart SD, aby sprawdzić ich zużycie energii. Wydaje się, że różnią się one znacznie między producentami i typami, niektóre karty zużywają 10 razy więcej mocy uśpienia niż inne.

Poniżej są dwa wyniki. Pierwszy to szacowany pobór prądu podczas snu, a drugi to średni pobór prądu dla około 1 sektora, pisz co 5 sekund dla mojej płyty .

Card                     Sleep (mA)         Cyclic write (mA)   Number of cards tested

Sandisk 4GB Class 4      0.34-0.95 (0.69)   0.64-1.25 (1.05)    5
Verbatim 4GB Class 4     0.06-0.12 (0.09)   0.12-0.17 (0.16)    6
Kingston 4GB Class 4     1.34-1.34 (1.34)   1.47-1.47 (1.47)    1
Lexar 4GB Class 4        0.09-0.09 (0.09)   0.11-0.12 (0.12)    2

Lexar 8GB Class 6        0.06-0.09 (0.08)   0.09-0.12 (0.10)    4 (best so far)

Toshiba 16GB Class 10    0.12-0.12 (0.12)   0.18-0.18 (0.18)    1

Nie uwzględniłem prądu szczytowego, ponieważ wydaje się, że nie jest to wiarygodny pomiar za pomocą mojego multimetru. Prawdopodobnie dlatego, że karta jest zapisana tylko na kilka ms. Zauważyłem jednak, że wszystkie karty dały pomiar szczytowy około 5 - 6mA (wygładzony), podczas gdy Lexar dawał 2 - 3mA (wygładzony). Należy zauważyć, że rzeczywisty maksymalny prąd jest o rząd wielkości większy niż ten, ale wskazuje, że karta Lexar ma niski prąd zapisu, a także tryb uśpienia.

Aktualny zwycięzca

Lexar 8GB klasa 6

Zaktualizuję tę listę, gdy będzie więcej testów. (Ostatnia aktualizacja: 14.08.2014)

geometrikal
źródło
Będziesz potrzebować uCurrent ( eevblog.com/projects/ucurrent ) do swoich eksperymentów. Podłączony do oscyloskopu, może dać ci dobry wgląd w zużycie energii w czasie podczas różnych sekwencji w twoim programie.
RJR
2

Niezłe testy. Sprawdź nasz samouczek dotyczący rejestrowania danych o niskiej mocy przy użyciu kart Arduino Pro Mini i SD: http://www.osbss.com/tutorials/temperature-relative-humidity/

Prawdopodobnie zawiera dokładnie to, czego potrzebujesz (przerwanie RTC budzi go, prawie roczna żywotność baterii itp.) Nasze zużycie energii w głównym nurcie wynosi około 0,195 mA przy 3,3 V, a to może spaść do 0,11 mA lub znacznie mniej, jeśli używasz innych płyt lub samego gołego układu ATmega328P.

Tak jak powiedział @stevenvh, będziesz potrzebował tranzystora do kontrolowania zasilania czytnika kart SD, gdy procesor jest w trybie uśpienia.

OSBSS
źródło
0

Najniższe prądy uśpienia, jakie widziałem dla kart SD, wynoszą około 0,05 mA dla starego sandisk 256Mb, i podobnie jak ludzie OSBSS, rzadko dostaję mój rejestrator danych poniżej 0,1 mA, ponieważ typowe karty SD wydają się pobierać około 0,07 mA. Jednak po dotarciu na to terytorium powinieneś być w stanie łatwo uzyskać 3-4 miesiące z AA, jeśli twój regulator rozruchu jest wystarczająco wydajny.

Upewnij się, że wyciągasz nieużywane połączenia na karcie SD lub prądy uśpienia mogą być znacznie wyższe. Zapoznaj się również z biblioteką małej mocy Rocket Screem, ponieważ pozwala to łatwo przejść do różnych trybów uśpienia 328P.

Jeśli chodzi o zamianę: koleś, który napisał biblioteki SD dla arduino, ostrzega przed wyłączeniem zasilania kart SD na placu zabaw w Arduino, więc nie zastosowałem tego podejścia. Byłbym ciekawy, jak to zadziałało dla facetów OSBSS (?)

Ed Mallon
źródło