본문 바로가기

[AVR]/AVR_EVM

AVR 파워다운 모드 전류측정 실험

AVR 파워다운 모드 전류측정 실험

AVR은 저전류 전용 칩이 아니기 때문에 고려 해본적이 없었는데 전류소모를 적게 해야 할 일이 있어 AVR소비 전류를 줄이는 방법에 대해 검토 해 보았다. MSP430에 비하면 비할 바가 못되지만 아무튼 5단계의 슬립모드 설정이 가능하고 실험 결과 나쁘지 않게 사용가능할것 같다.


AVR전류 측정

전원 공급후 while루프 돌때 - 12mA
USB기능 동작시 - 25mA

아무런 동작을 하지 않아도 12mA가 흐러고 타이머나 기타 페리를 사용하는 순간 25mA까지 소비 한다.

이 상태로는 좀 문제가 있는것 같고 슬립모드 관련 데이터 시트를 보니 몇가지 방법이 있는것 같다. 테스트에 사용한 칩은 ATmega88V이다. 예전 버전 ATmega8을 가지고 테스트 하다 고생 했는데.. 결국 새로운 칩은 슬립 모드 관련 상당히 개선된 점이 많았다.


AVR에는 5단계의 슬립모드가 있다.



IDLE Mode
표에서 처럼 CPU클럭만 멈추고 다른 페리들은 살아 있어서 외부 페리의 이벤트에 따라 께어날 수 있다. 하지만 소비 전류는 크게 줄어들지 않는다.

WINAVR에서 제공하는 코드로 아래와 같이 하면 슬리모드로 진입할 수 있다.
  set_sleep_mode(SLEEP_MODE_IDLE);
  sleep_mode();

실험 결과 슬립모드로 들어 들어 갔을때 9mA 정도 소비 한다. 일반 동작시보다는 3mA정도 줄어 든것 같다


ADC Noise Reduction Mode
IDLE모드 보다는 조금더 페리를 정지 시켜서 전류 소모를 줄이는데... ADC노이즈를 줄이는데 효과가 있다고 하니 사용해볼 만하다.


Power-save Mode
슬립모드에서도 타이머를 사용할 수 있기 때문에 일정시간 이후 슬립모드에서 깨어날 수 있도록 할 수 있다. 
아래 코드로 진입 가능하며 하다.
  set_sleep_mode(SLEEP_MODE_PWR_SAVE);
  sleep_mode();

타이머 인터럽트로 일정 시간 이후 깨어날 수 있으므로 일정시간 간격으로 데이터 센싱하는 용도로 사용하면 파워를 많이 줄일 수 있다.
실험 결과 파워세이브 모드에서 1mA 정도의 소비 전류가 있다.


Power-down Mode
표와같이 모든 페리를 끄고 외부 인터럽트만 동작하는 모드로 가장 전류 소모를 줄일 수 있다. 하지만 께어날 수 있는 방법이 스위치 등을 달아서 에서 인터럽트 발생하는 방법 밖에 없으로 일정시간 후 스스로 께어나기는 힘들다.
아래 코드로 설정 가능하다.
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_mode();

실험 결과 파워다운 모드에서 0.6uA 정도의 전류 소모로 동작이 가능하다.




파워다운 모드가 좋은데 아쉬운 점은 스스로 께어나지 못한다는 점이다. 그렇다고 파워 세이브 모드로 해서 타이머를 켜두면 1mA의 전류가 흐르기 때문에 문제이다.
메뉴얼을 보니 와치독 타이머 인터럽트로 CPU를 깨울 수 있다고 한다.
와치독타이머로 일정 시간후 스스로 께어나게 코드 수정 후 테스트 결과 6uA정도 소모 한다. 께어나는 동안 페리가 동작하므로 잠깐 13uA까지 모소 하지만 파워 세이브 모드와 유사하게 동작하지만 전류는 상당히 줄일 수 있었다.




참고로 ATMega8 (예전 버전)에는 슬립모드 관련 기능이 많이 빈약하다.


반응형