Penyimpanan kartu micro-SD berdaya rendah

18

Kami sedang membangun data logger berdaya rendah berdasarkan ATmega328P, untuk memanfaatkan boot loader Arduino dan IDE, dll. Idealnya konsumsi daya harus kurang dari 0,3mA @ 3,3V untuk mendapatkan sekitar 4 bulan hidup dalam satu Baterai AA. Data sensor akan disimpan maksimum 76 byte / detik selama 4 bulan, memberikan sekitar 750 MiB data. Oleh karena itu kita memerlukan perangkat memori yang besar, yang masih berdaya rendah.

Dari apa yang dapat saya katakan, satu-satunya solusi praktis untuk menyimpan data sebanyak ini adalah dengan menggunakan kartu SD. Namun kartu SD tampaknya menggunakan sedikit daya lebih dari yang kita mampu, 0,2 mA saat menganggur untuk kartu yang kita miliki sekarang, dan lebih banyak lagi ketika mereka menulis.

Jadi beberapa pertanyaan:

  • Apakah saklar sisi tinggi satu-satunya cara praktis mengendalikan konsumsi daya kartu SD?
  • Apakah ada peringatan yang harus kita ketahui ketika mengalihkan daya ke kartu? Misalnya, meratakan pemakaian merupakan proses yang akan dilakukan setelah blok tulis, atau dapatkah itu terjadi kapan saja.
  • Apakah ada alternatif lain yang harus kita pertimbangkan?
geometrikal
sumber
1
solarduino.net/?p=58 adalah artikel yang mungkin menarik bagi Anda
vicatcu
Pertimbangkan untuk menambahkan RAM eksternal seperti 23LC1024. Kemudian Anda dapat buffer lebih banyak dan tutup kartu SD. Microchip juga membuat versi yang didukung baterai, jika gagasan tentang data yang tersimpan dalam memori yang tidak stabil mengganggu Anda.
markrages

Jawaban:

19

Jika Anda menganggarkan rata-rata 0,3 mA setiap μA dihitung. Bukan masalah bagi mikrokontroler, tetapi kartu SD akan mengkonsumsi puluhan MA. Anda ingin mengaktifkannya sesedikit mungkin. Tetapi ATmega328P hanya memiliki 2 kB RAM, sehingga itu berarti buffer sampel Anda akan penuh dalam waktu kurang dari setengah menit, dan kemudian saatnya untuk menulis ke kartu SD. Dua kali dalam satu menit.

Saya akan mempertimbangkan TI MSP430 bukan AVR. Itu masih kekuatan terendah pengendali yang tersedia. Ini akan menghemat µA yang Anda perlukan saat menulis ke kartu SD. The MSP430F5418A juga memiliki 16 kB RAM, sehingga Anda memiliki kekuasaan pada kartu SD hanya sekali setiap tiga setengah menit.

Anda dapat menjalankan MSP430 pada osilator frekuensi rendah, dan beralih ke DCO frekuensi tinggi (Oscillator Controlled Oscillator) frekuensi tinggi untuk menulis ke kartu SD, sehingga ini membutuhkan waktu sesedikit mungkin.

Untuk menyalakan kartu SD saya memang akan menggunakan saklar sisi tinggi. Itu BSS215P adalah sesuai logika tingkat P-MOSFET.

sunting
Jika Anda tidak keberatan dengan paket BGA, perangkat NAND Flash dapat menjadi alternatif untuk kartu SD. Yang ini dapat beroperasi dalam mode MMC atau SPI. Ini mengkonsumsi kurang dari kartu SD, tetapi masih mengkonsumsi 200 μA dalam keadaan siaga, jadi Anda masih ingin mematikannya dengan FET sisi tinggi. Pastikan untuk membuat I / Os ke chip rendah sebelum mematikan daya. Itu berlaku untuk kartu SD juga.

stevenvh
sumber
Terimakasih atas infonya. Sayangnya, saat ini kami terbatas pada MCU dengan boot loader Arduino yang tersedia, tetapi sedang mempertimbangkan Atmega644PA karena peningkatan RAM. MCU akan dibangunkan oleh interupsi RTC untuk melakukan pengukuran dan mematikannya di lain waktu. Apakah ada alternatif untuk kartu SD? Saran Anda untuk mendapatkan MCU dengan banyak RAM untuk buffer besar adalah saran bagus yang tidak saya pikirkan. :)
geometrikal
@stevenvh Karakteristik apa dari BSS215P MOSFET yang membuatnya cocok untuk aplikasi ini?
ElecEnthusiast
AVR bahkan mungkin dapat memasok kartu SD dari pin GPIO (20mA harus dimungkinkan).
JimmyB
14

(Menjawab posting saya sendiri dengan informasi yang berguna)

Saya telah melakukan beberapa percobaan dengan kartu SD terbatas untuk memeriksa konsumsi daya mereka. Mereka tampaknya sangat bervariasi antara produsen dan dalam jenis, beberapa kartu mengkonsumsi daya tidur 10 kali lebih banyak daripada yang lain.

Ada dua hasil di bawah ini. Yang pertama adalah perkiraan konsumsi saat ini saat tidur, dan yang kedua adalah konsumsi rata-rata saat ini untuk sekitar 1 sektor tulis setiap 5 detik untuk papan saya .

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

Saya belum memasukkan puncak arus karena tampaknya bukan pengukuran yang dapat diandalkan dengan multimeter saya. Mungkin karena kartu hanya ditulis untuk beberapa ms. Tapi saya perhatikan bahwa semua kartu memberi sekitar 5 - 6mA pengukuran puncak (dihaluskan) sedangkan Lexar memberi 2 - 3mA (dihaluskan). Catatan, arus maks sesungguhnya adalah urutan besarnya lebih besar dari ini, tetapi ini mengindikasikan bahwa kartu Lexar memiliki arus tulis rendah serta waktu tidur.

Pemenang saat ini

Lexar 8GB Kelas 6

Saya akan memperbarui daftar ini karena lebih banyak tes yang dilakukan. (Pembaruan terakhir: 2014-08-14)

geometrikal
sumber
Anda akan menginginkan uCurrent ( eevblog.com/projects/ucurrent ) untuk percobaan Anda. Terhubung ke osiloskop, ini dapat memberi Anda wawasan yang baik dalam konsumsi daya dari waktu ke waktu selama berbagai urutan dalam program Anda.
RJR
2

Tes yang bagus. Lihatlah tutorial datalogger berdaya rendah kami menggunakan Arduino Pro Mini dan kartu SD: http://www.osbss.com/tutorials/temperature-relative-humidity/

Mungkin berisi persis apa yang Anda butuhkan (interupsi RTC membangunkannya, hampir satu tahun masa pakai baterai, dll.) Konsumsi daya "arus utama" kami adalah sekitar 0,195mA @ 3,3V, dan ini bisa turun ke 0,11mA atau lebih rendah, jika Anda menggunakan papan lain atau chip ATmega328P kosong itu sendiri.

Seperti yang dikatakan @stevenvh, Anda akan memerlukan transistor untuk mengontrol daya ke pembaca kartu SD saat prosesor dalam mode tidur.

OSBSS
sumber
0

Arus tidur terendah yang pernah saya lihat untuk kartu SD adalah sekitar 0,05 mA untuk 256Mb sandisk tua, dan seperti orang-orang OSBSS saya jarang mendapatkan data logger builds saya bawah 0,1 mA karena kartu SD yang khas tampaknya menarik sekitar 0,07 mA. Namun, ketika Anda mencapai wilayah itu, Anda seharusnya dapat dengan mudah mendapatkan 3-4 bulan dari AA jika regulator boot Anda cukup efisien.

Pastikan untuk memeriksa bahwa Anda menarik koneksi yang tidak digunakan pada adaptor kartu SD Anda, atau arus tidur bisa jauh lebih tinggi. Jelajahi juga perpustakaan berdaya rendah dari Rocket Screem, karena ini memungkinkan Anda memasuki berbagai mode tidur 328P dengan mudah.

Adapun peralihan: orang yang menulis perpustakaan SD untuk Arduino memperingatkan agar tidak menghidupkan kartu SD di taman bermain Arduino, jadi saya belum mengejar pendekatan itu. Saya ingin tahu bagaimana cara kerjanya untuk OSBSS (?)

Ed Mallon
sumber