ที่เก็บข้อมูล micro-SD การ์ดพลังงานต่ำ


18

เรากำลังสร้างเครื่องบันทึกข้อมูลพลังงานต่ำตาม ATmega328P เพื่อใช้ประโยชน์จากบูตบูท Arduino และ IDE ฯลฯ การใช้พลังงานในอุดมคตินั้นควรน้อยกว่า 0.3mA @ 3.3V เพื่อให้ได้ชีวิต 4 เดือนในเครื่องเดียว แบตเตอรี่ AA ข้อมูลเซ็นเซอร์จะถูกเก็บไว้ที่สูงสุด 76 ไบต์ / วินาทีสำหรับ 4 เดือนโดยให้ข้อมูลประมาณ 750 MiB ดังนั้นเราจึงต้องการอุปกรณ์หน่วยความจำขนาดใหญ่ที่ยังคงใช้พลังงานต่ำ

จากสิ่งที่ฉันสามารถบอกได้ทางออกเดียวในการจัดเก็บข้อมูลจำนวนมากนี้คือการใช้การ์ด SD อย่างไรก็ตามการ์ด SD ดูเหมือนจะใช้พลังงานมากกว่าที่เราสามารถจ่ายได้ 0.2mA ใช้งานปัจจุบันสำหรับการ์ดที่เรามีตอนนี้และอื่น ๆ เมื่อพวกเขากำลังเขียน

ดังนั้นคำถามบางอย่าง:

  • สวิตช์ระดับสูงเป็นวิธีการปฏิบัติเพียงวิธีเดียวในการควบคุมการใช้พลังงานของการ์ด SD หรือไม่
  • คำเตือนใด ๆ ที่เราควรทราบเมื่อเปลี่ยนพลังงานเป็นการ์ด? ตัวอย่างเช่นการสวมระดับกระบวนการที่จะดำเนินการหลังจากเขียนบล็อกหรือสามารถเกิดขึ้นได้ตลอดเวลา
  • มีทางเลือกอื่นที่เราควรพิจารณาหรือไม่?

1
solarduino.net/?p=58เป็นบทความที่อาจเป็นที่สนใจของคุณ
vicatcu

พิจารณาเพิ่ม RAM ภายนอกเช่น 23LC1024 จากนั้นคุณสามารถบัฟเฟอร์ได้มากขึ้นและปิดการใช้งานการ์ด SD Microchip ยังสร้างรุ่นที่รองรับแบตเตอรี่หากแนวคิดเรื่องข้อมูลนั่งอยู่ในหน่วยความจำที่ไม่แน่นอนนั้นทำให้คุณรำคาญใจ
เครื่องหมาย

คำตอบ:


19

หากคุณตั้งงบประมาณโดยเฉลี่ย 0.3 mA ทุก ๆ countA จะนับ มีปัญหาไม่มากสำหรับไมโครคอนโทรลเลอร์ แต่การ์ด SD จะกิน mAs เป็นสิบ คุณต้องการให้มันเปิดน้อยที่สุด แต่ ATmega328P มี RAM เพียง 2 kB ดังนั้นนั่นหมายความว่าบัฟเฟอร์ตัวอย่างของคุณจะเต็มในเวลาน้อยกว่าครึ่งนาทีจากนั้นก็ถึงเวลาที่จะเขียนลง SD การ์ด สองครั้งต่อนาที

ฉันจะพิจารณา TI MSP430 แทน AVR มันยังคงเป็นคอนโทรลเลอร์ที่ใช้พลังงานต่ำที่สุด มันจะช่วยให้คุณประหยัด you'llA คุณจะต้องเมื่อเขียนถึงการ์ด SD MSP430F5418Aนอกจากนี้ยังมี 16 กิโลไบต์ RAM เพื่อที่คุณจะต้องใช้พลังงานใน SD card เพียงครั้งเดียวทุกสามและครึ่งนาที

คุณสามารถเรียกใช้ MSP430 บนออสซิลเลเตอร์ความถี่ต่ำและเปลี่ยนไปเป็น DCO ความถี่สูง (ดิจิตัลควบคุมแบบดิจิตอล) สำหรับการเขียนไปยังการ์ด SD เพื่อให้ใช้เวลาน้อยที่สุดเท่าที่จะทำได้

สำหรับการเปิดการ์ด SD ฉันจะใช้สวิตช์ด้านสูงแน่นอน BSS215Pเป็นตรรกะระดับที่เหมาะสม P-MOSFET

แก้ไข
ถ้าคุณไม่รังเกียจแพ็คเกจ BGA อุปกรณ์แฟลช NAND อาจเป็นทางเลือกแทนการ์ด SD อันนี้สามารถทำงานในโหมด MMC หรือ SPI กินไฟน้อยกว่าการ์ด SD แต่ยังคงกินไฟในโหมดแสตนด์บาย 200 soA ดังนั้นคุณยังคงต้องการปิดมันด้วย FET ระดับสูง ตรวจสอบให้แน่ใจว่าได้ทำให้ I / Os เป็นชิปที่ต่ำก่อนที่จะปิดไฟ ที่ไปสำหรับการ์ด SD เช่นกัน


ขอบคุณสำหรับข้อมูล. น่าเสียดายที่ปัจจุบันเรา จำกัด เฉพาะ MCU ที่มีตัวตักบูต Arduino เท่านั้น แต่กำลังพิจารณา Atmega644PA เนื่องจาก RAM ที่เพิ่มขึ้น MCU จะถูกปลุกขึ้นมาโดยการขัดจังหวะ RTC เพื่อทำการตรวจวัดและจะหยุดทำงานในเวลาอื่น ๆ มีทางเลือกอื่นในการ์ด SD หรือไม่ ข้อเสนอแนะของคุณในการรับ MCU ที่มี RAM จำนวนมากสำหรับบัฟเฟอร์ขนาดใหญ่เป็นสิ่งที่ดีที่ฉันไม่ได้คิด :)
geometrikal

@stevenvh คุณลักษณะใดของ BSS215P MOSFET ที่เหมาะสำหรับแอปพลิเคชันนี้
ElecEnthusiast

AVR อาจสามารถจัดหาการ์ด SD จากพิน GPIO (ควรเป็นไปได้ 20mA)
JimmyB

14

(ตอบโพสต์ของฉันเองพร้อมข้อมูลที่เป็นประโยชน์)

ฉันทำการทดลองด้วยการ์ด SD จำนวน จำกัด เพื่อตรวจสอบการใช้พลังงาน พวกเขาดูเหมือนจะแตกต่างกันอย่างกว้างขวางระหว่างผู้ผลิตและภายในประเภทบัตรบางชนิดใช้พลังงานการนอนหลับมากกว่า 10 ครั้งกว่าคนอื่น ๆ

มีสองผลลัพธ์ด้านล่าง ที่แรกก็คือการบริโภคในปัจจุบันประมาณเมื่อนอนและสองคือการบริโภคในปัจจุบันเฉลี่ยประมาณ 1 ภาคการเขียนทุก 5 สองสำหรับคณะกรรมการของฉัน

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

ฉันไม่ได้รวมกระแสสูงสุดเนื่องจากดูเหมือนว่าการวัดที่เชื่อถือได้กับมัลติมิเตอร์ของฉัน อาจเป็นเพราะการ์ดถูกเขียนไปเพียงไม่กี่มิลลิวินาที แต่ฉันสังเกตเห็นว่าการ์ดทั้งหมดให้ประมาณ 5 - 6mA สูงสุด (เรียบ) ในขณะที่ Lexar ให้ 2 - 3mA (เรียบ) หมายเหตุกระแสสูงสุดจริงคือลำดับของขนาดที่ใหญ่กว่านี้ แต่ไม่บ่งชี้ว่าการ์ด Lexar มีกระแสการเขียนต่ำเช่นเดียวกับการนอนหลับ

ผู้ชนะปัจจุบัน

Lexar 8GB Class 6

ฉันจะอัปเดตรายการนี้เมื่อทำการทดสอบเพิ่มเติมเสร็จแล้ว (อัพเดทล่าสุด: 2014-08-14)


คุณจะต้องการ uCurrent ( eevblog.com/projects/ucurrent ) สำหรับการทดสอบของคุณ การใช้ออสซิลโลสโคปจะช่วยให้คุณมีความเข้าใจอย่างถ่องแท้เกี่ยวกับการใช้พลังงานเมื่อเวลาผ่านไปในช่วงต่าง ๆ ของโปรแกรม
RJR

2

การทดสอบที่ดี ตรวจสอบการสอนเครื่องบันทึกข้อมูลพลังงานต่ำโดยใช้ Arduino Pro Mini และการ์ด SD: http://www.osbss.com/tutorials/temperature-relative-humidity/

มันอาจมีสิ่งที่คุณต้องการ (การขัดจังหวะ RTC ทำให้มันเพิ่มขึ้นใกล้กับอายุการใช้งานแบตเตอรี่หนึ่งปีและอื่น ๆ ) การใช้พลังงาน "กระแสหลัก" ของเราอยู่ที่ประมาณ 0.195mA @ 3.3V และสิ่งนี้อาจลดลงถึง 0.11mA หรือต่ำกว่ามาก ถ้าคุณใช้บอร์ดอื่นหรือชิป ATmega328P เปล่า

เช่นเดียวกับ @stevenvh กล่าวว่าคุณจะต้องมีทรานซิสเตอร์เพื่อควบคุมพลังงานไปยังเครื่องอ่านการ์ด SD เมื่อโปรเซสเซอร์อยู่ในโหมดสลีป


0

กระแสการนอนหลับที่ต่ำที่สุดที่ฉันเคยเห็นสำหรับการ์ด SD อยู่ที่ประมาณ 0.05 mA สำหรับ sandisk เก่า 256Mb และเช่นเดียวกับกลุ่ม OSBSS ที่ฉันไม่ค่อยได้รับตัวสร้างบันทึกข้อมูลของฉันต่ำกว่า 0.1 mA เพราะการ์ด SD ทั่วไปดูเหมือนจะวาดประมาณ 0.07 mA ถึงกระนั้นเมื่อคุณไปถึงดินแดนนั้นคุณควรจะสามารถออกจาก AA ได้อย่างง่ายดาย 3-4 เดือนหากเครื่องควบคุมการบูตของคุณมีประสิทธิภาพเพียงพอ

ตรวจสอบให้แน่ใจว่าคุณดึงการเชื่อมต่อที่ไม่ได้ใช้งานในอะแดปเตอร์ SD การ์ดของคุณหรือกระแสการนอนหลับอาจสูงขึ้นมาก สำรวจไลบรารี่พลังงานต่ำจาก Rocket Screem ด้วยซึ่งจะช่วยให้คุณเข้าสู่โหมดสลีป 328P ที่แตกต่างกันได้อย่างง่ายดาย

สำหรับการสลับ: เพื่อนที่เขียนไลบรารี SD สำหรับ arduino เตือนไม่ให้ถอด SD การ์ดที่สนามเด็กเล่น Arduino ดังนั้นฉันจึงไม่ได้ใช้วิธีการนั้น ฉันอยากรู้ว่ามันทำงานอย่างไรสำหรับพวก OSBSS (?)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.