저전력 마이크로 SD 카드 저장


18

우리는 Arduino 부트 로더 및 IDE 등을 사용하기 위해 ATmega328P를 기반으로 저전력 데이터 로거를 구축하고 있습니다. 이상적으로 단일 소비 전력으로 약 4 개월의 수명을 달성하려면 전력 소비가 3.3V @ 0.3V 미만이어야합니다. AA 배터리. 센서 데이터는 4 개월 동안 최대 76 바이트 / 초로 저장되어 약 750MiB의 데이터를 제공합니다. 따라서 여전히 저전력 인 대용량 메모리 장치가 필요합니다.

내가 알 수 있듯이이 많은 데이터를 저장하는 유일한 실용적인 솔루션은 SD 카드를 사용하는 것입니다. 그러나 SD 카드는 우리가 감당할 수있는 것보다 조금 더 많은 전력을 사용하는 것, 현재 가지고있는 카드에 대해 0.2mA의 유휴 전류, 그리고 더 많이 쓸 때 더 많이 사용하는 것 같습니다.

그래서 몇 가지 질문 :

  • 하이 사이드 스위치가 SD 카드의 전력 소비를 제어하는 ​​유일한 실용적인 방법입니까?
  • 카드의 전원을 켤 때주의해야 할 사항이 있습니까? 예를 들어, 블록 쓰기 후에 수행되거나 언제든지 발생할 수있는 프로세스를웨어 레벨링하는 것입니다.
  • 고려해야 할 다른 대안이 있습니까?

1
solarduino.net/?p=58 관심있는 기사입니다
vicatcu

23LC1024와 같은 외부 RAM을 추가하십시오. 그런 다음 더 버퍼링하고 SD 카드를 종료 된 상태로 유지할 수 있습니다. 휘발성 메모리에 데이터를 저장한다는 아이디어가 귀찮다면 Microchip은 배터리 백업 버전을 만듭니다.
markrages

답변:


19

예산을 책정한다면 µA 카운트마다 평균 0.3 mA입니다. 마이크로 컨트롤러에는 그다지 큰 문제는 아니지만 SD 카드는 수십 mA를 소비합니다. 가능한 한 적게 켜고 싶습니다. 그러나 ATmega328P에는 2kB의 RAM이 있으므로 샘플 버퍼가 반 분 안에 가득 차서 SD 카드에 쓸 시간입니다. 분당 2 회.

AVR 대신 TI MSP430을 고려할 것입니다. 여전히 가장 보편적으로 사용 가능한 컨트롤러입니다. SD 카드에 쓸 때 필요한 µA를 절약 할 수 있습니다. MSP430F5418A은 또한 당신이 SD 카드에 전원이 그래서, 16KB의 RAM이 한 번만 매 3 반 분.

저주파 오실레이터에서 MSP430을 실행하고 SD 카드에 쓰기 위해 고주파 DCO (Digitally Controlled Oscillator)로 전환 할 수 있으므로 가능한 한 적은 시간이 걸립니다.

SD 카드에 전원을 공급하기 위해 실제로 하이 사이드 스위치를 사용합니다. BSS215P는 적절한 로직 레벨 P-MOSFET이다.

편집
BGA 패키지가 마음에 들지 않으면 NAND 플래시 장치가 SD 카드의 대안이 될 수 있습니다. 이것은 MMC 또는 SPI 모드에서 작동 할 수 있습니다. SD 카드보다 적은 전력을 소비하지만 여전히 대기 상태에서 200µA를 소비하므로 하이 사이드 FET를 사용하여 여전히 꺼야합니다. 전원을 끄기 전에 칩에 대한 I / O를 낮게 설정하십시오. SD 카드도 마찬가지입니다.


정보 주셔서 감사합니다. 불행히도 현재 Arduino 부트 로더를 사용할 수있는 MCU로 제한되어 있지만 RAM 증가로 인해 Atmega644PA를 고려하고 있습니다. MCU는 측정을 수행하고 다른 시간에 전원을 끄기 위해 RTC 인터럽트에 의해 깨어날 것입니다. SD 카드에 대한 대안이 있습니까? 큰 버퍼를 위해 RAM이 많은 MCU를 얻는 제안은 내가 생각하지 않은 좋은 것입니다. :)
geometrikal

@stevenvh BSS215P MOSFET의 어떤 특성이이 어플리케이션에 적합합니까?
ElecEnthusiast

AVR은 GPIO 핀에서 SD 카드를 공급할 수도 있습니다 (20mA 가능).
JimmyB

14

(유용한 정보로 내 게시물에 답하기)

전력 소비를 확인하기 위해 제한된 SD 카드 세트로 몇 가지 실험을 수행했습니다. 제조업체와 유형에 따라 크게 다르며 일부 카드는 다른 카드보다 10 배나 더 많은 절전 전력을 소비합니다.

아래 두 가지 결과가 있습니다. 첫 번째는 수면시 예상 전류 소비이며, 두 번째는 내 보드의 5 초마다 약 1 섹터 쓰기의 평균 전류 소비입니다 .

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

멀티 미터로 신뢰할 수있는 측정으로 보이지 않기 때문에 피크 전류를 포함시키지 않았습니다. 카드가 몇 ms 동안 만 쓰여졌 기 때문일 수 있습니다. 그러나 나는 모든 카드가 약 5-6mA 피크 측정 (매끄럽게)을 주었고 Lexar는 2-3mA (매끄럽게)주었습니다. 실제 최대 전류는 이보다 훨씬 크지 만 Lexar 카드의 쓰기 전류가 낮고 절전 상태임을 나타냅니다.

현재 우승자

렉사 8GB 클래스 6

더 많은 테스트가 완료되면이 목록을 업데이트하겠습니다. (최종 업데이트 : 2014-08-14)


실험을 위해 uCurrent ( eevblog.com/projects/ucurrent )가 필요합니다. 오실로스코프에 연결하여 프로그램의 다양한 시퀀스 동안 시간이 지남에 따라 전력 소비에 대한 통찰력을 제공 할 수 있습니다.
RJR

2

좋은 테스트. Arduino Pro Mini 및 SD 카드를 사용하는 저전력 데이터 로거 자습서를 확인하십시오 : http://www.osbss.com/tutorials/temperature-relative-humidity/

아마도 필요한 것을 정확히 포함하고있을 것입니다 (RTC 인터럽트로 배터리 수명이 1 년 가까이되는 등). 우리의 "주류"전력 소비는 약 0.195mA @ 3.3V이며 이는 0.11mA 이하로 떨어질 수 있습니다. 다른 보드 또는 베어 ATmega328P 칩 자체를 사용하는 경우

@stevenvh가 말했듯이 프로세서가 절전 모드 일 때 SD 카드 리더의 전원을 제어하려면 트랜지스터가 필요합니다.


0

SD 카드에서 가장 낮은 절전 전류는 오래된 sandisk 256Mb의 경우 약 0.05mA이며 OSBSS 사람들과 마찬가지로 일반적인 SD 카드는 약 0.07mA를 소비하므로 데이터 로거 빌드가 0.1mA 미만으로 거의 얻지 않습니다 . 그래도 해당 영역에 도달하면 부팅 레귤레이터가 충분히 효율적이면 AA에서 3-4 개월을 쉽게 얻을 수 있습니다.

SD 카드 어댑터에서 사용하지 않는 연결을 풀고 있는지 확인하십시오. 그렇지 않으면 절전 전류가 훨씬 더 높아질 수 있습니다. Rocket Screem의 저전력 라이브러리 를 탐색하면 다른 328P 절전 모드로 쉽게 들어갈 수 있습니다.

전환에 관해서 : arduino 용 SD 라이브러리를 작성한 동료는 Arduino 놀이터에서 SD 카드의 전원을 끄는 것에 대해 경고 하므로이 접근법을 추구하지 않았습니다. OSBSS 사람들에게 어떻게 효과가 있는지 궁금합니다. (?)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.