배터리 수명을 연장하기 위해 Arduino의 절전 옵션은 무엇입니까?


40

태양열 및 배터리 구동 프로젝트의 경우 전력 소비를 줄여야합니다.

타이머와 인터럽트를 사용하여 마이크로 컨트롤러가 아무것도하지 않을 때 잠자기 상태로 만드는 것에 대해 조금 알고 있습니다.

또한 일부 주변 장치를 비활성화하여 전력을 더 절약 할 수 있다는 것도 읽었습니다.

다음은이를 설명하는 페이지입니다. 절전 기술

내 질문:

  • 전력을 절약하기 위해 어떤 다른 기술이 있습니까?
  • 이러한 AVR 기능을보다 쉽게 ​​사용할 수있는 라이브러리가 있습니까?

답변:


33

참고 : 나는 나의 대답이 받아 들여지더라도 Arduino 보드로 에너지를 절약하려면 독자가 Anindo의 대답을 먼저 읽어야한다는 것을 지적하고 싶었습니다. 디자인에서 해당 항목을 해결하면 내 대답을 읽고 MCU를 저전력 모드로 설정하는 방법에 대해 걱정해야합니다.

Arduino가 전력을 절약 할 수있는 몇 가지 기술이 있습니다. 몇 가지를 나열한 다음 더 자세히 설명하는 페이지를 알려 드리겠습니다.

  1. 컨트롤러가 중요한 작업을 수행하지 않는 동안 (예를 들어 센서의 읽기와 다음 읽기 사이), 명령을 사용하여 컨트롤러를 아래 절전 모드 중 하나로 설정할 수 있습니다 set_sleep_mode (SLEEP_MODE_PWR_DOWN). 각 모드 옆에는 각 모드의 대략적인 전력 소비가 있습니다.

    • SLEEP_MODE_IDLE : 15mA
    • SLEEP_MODE_ADC : 6.5 mA
    • SLEEP_MODE_PWR_SAVE : 1.62mA
    • SLEEP_MODE_EXT_STANDBY : 1.62mA
    • SLEEP_MODE_STANDBY : 0.84 mA
    • SLEEP_MODE_PWR_DOWN : 0.36 mA
  2. 브라운 아웃 감지 (낮은 전압이 감지되면 컨트롤러를 끄는 회로)를 비활성화합니다 .

  3. ADC 끄기 (아날로그에서 디지털로 변환)

  4. 내부 시계를 사용하십시오

그런 다음 컨트롤러를 휴면 상태로 만들 때 아래의 하나 이상의 메커니즘을 사용하여 컨트롤러를 깨우고 무언가를 수행해야합니다.

  • 신호와 함께 일어나

  • 타이머와 함께 일어나

이것은 내가 만든 요약입니다-

이 기사는 주로 ATmega328P에 적용되지만이 기술은 다른 Arduino 호환 컨트롤러에도 적용됩니다. TheDoctor가 잘 말했듯이, 컨트롤러가 이러한 기술 중 어느 것을 지원하는지와 더 정확하게 수행하는 방법을 확인하려면 datashet을 확인해야합니다.


2
www.gammon.com.au/power 내 페이지를 참조 해 주셔서 감사합니다 . 여기에 언급 된 모든 기술을 사용하면 약 100nA (0.1µA)를 소비 할 수 있습니다. 큰 영향을 줄 수있는 다른 기술은 더 낮은 주파수와 더 낮은 전압에서 실행하는 것입니다. 또한 Anindo Ghosh가 전압 조정기를 사용하지 않는다고 말한 내용. 나는 2 년 동안 배터리를 사용한 후에도 여전히 강해지고있는 많은 기술을 사용 하는 온도 및 습도 센서-배터리 전원 을 사용했습니다.
Nick Gammon

@NickGammon-공평하게, 나는 당신의 훌륭한 기사가 더 나은 참조를받을 가치가 있다고 생각합니다. 위대한 기사에 감사드립니다-매우 명확하고 완전합니다! Arduino.SE에 오신 것을 환영합니다. 당신이 여기있어서 좋습니다.
Ricardo

24

실제로 Arduino 보드에서 가장 큰 전력 낭비는 선형 전압 레귤레이터입니다.

  1. 보드의 마이크로 컨트롤러, LED 또는 기타 주변 장치가 전류를 소비하는 한 선형 레귤레이터는 difference between supply and board voltagex와 동일한 전력을 낭비 current drawn합니다.

    따라서 첫 번째 수정은 보드의 전원 표시기 LED를 분리하고 가능한 한 다른 LED를 사용하지 않는 것입니다. 둘째, 온보드 레귤레이터에 전력을 공급하기에 충분한 낮은 전압을 보드에 공급하십시오.

  2. 원래 설계에서 사용 된 전압 조정기는 낮은 대기 전류를 자랑하지 않습니다. 이는 보드 내에 전력을 끌어 들이지 않아도 레귤레이터 자체가 켜져있을 때마다 상당한 전력을 낭비한다는 것을 의미합니다.

    쉬운 해결 방법은 온보드 레귤레이터를 매우 낮은 정 동작 전류 등급의 LDO (로우 드롭 아웃 선형 레귤레이터)로 교체하는 것입니다. 다양한 공급 업체 사이트에서 파라 메트릭 검색을 수행하면 대체 할 가능성이 높습니다.

  3. 위의 단계를 수행하더라도 Arduino 보드는 선택한 LDO가이를 지원하는 경우 LDO를 저전력 모드로 설정하는 메커니즘을 제공하지 않습니다. 전력 효율적인 설계는 일반적으로 전압 조정기의 "슬립 모드"핀을 사용하여 상당한 에너지를 절약합니다. 여기서는 옵션이 아닙니다.

가능한 모든 절전 모드와 트릭이 마이크로 컨트롤러 수준에서 적용 되더라도 Arduino는 기본적으로 초 저전력 장치로 설계되지 않았습니다. 몇 가지 중요하지 않은 애플리케이션을 실험 한 결과, 전압 레귤레이터와 LED가 어쨌든 나머지를 소비하기 때문에 실제로 달성 가능한 최고는 애플리케이션에 따라 약 10 % ~ 30 %의 전력 절약이라는 것을 알았습니다.


2
온보드 레귤레이터에 전원을 공급하기에 충분한 낮은 전압을 보드에 공급하거나 해킹 된 USB 케이블을 통해 5V를 공급하십시오.
익명 펭귄

13

200 페이지 데이터 시트를 읽은 다음 혼란스러운 비트 시프트 및 레지스터로 혼란을 겪을 수 있지만 다음 라이브러리를 권장합니다. http://playground.arduino.cc/Code/Enerlib

또한 Uno 또는 usb-to-serial 칩이있는 칩을 사용하는 경우이를 비활성화하거나 제거 할 수 있습니다.


3
당신은 해야한다 상관없이 데이터 시트를 읽을 무슨 일을하는지.
코너 울프

9

프로젝트가 작동하고 "생산"환경에 배포해야하는 경우 Arduino를 베어 메타 ATMega328 또는 ATTiny 제품군 칩으로 교체 할 수 있습니다. Arduino 보드의 모든 전력 공급기를 제거하면 필요하지 않습니다. 나는 찾았다 :

  • 9V 블록 배터리의 Arduino 보드-56mA
  • 슬립 모드 등이없는 8MHz에서 ATTiny85 베어-10mA
  • 슬립 모드에서 8MHz에서 ATTiny85 베어-0.03mA

더 많은 정보

Arduino로 ATtiny 프로그래밍

Arduino IDE 용 ATTiny 파일

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