산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

얼마나 낮은(전력)까지 갈 수 있습니까?

제 마지막 게시물인 "Arm Cortex-M 저전력 모드 기본 사항"에서 모든 Arm Cortex-M 프로세서에서 찾을 수 있는 저전력 모드의 기본 사항과 WFI 및 WFE 명령을 활용하여 프로세서를 배치하는 방법을 살펴보았습니다. 자다. 하지만 실제로 남아 있는 질문은 이러한 저전력 모드가 실제 마이크로컨트롤러에서 어떻게 구현되고 이러한 모드가 임베디드 시스템에 어떤 영향을 미칠까요? 이 게시물에서는 마이크로컨트롤러를 절전 모드로 전환하는 방법과 에너지 소비량을 확인하는 방법을 자세히 살펴보겠습니다.

저전력 모드 실험

저전력 모드를 탐색하는 가장 좋은 방법은 마이크로컨트롤러를 선택하고 실제로 다양한 저전력 모드에서 프로세서를 실행하는 것입니다. 이 게시물을 위해 저는 실험했을 뿐만 아니라 많은 제품, 응용 프로그램 및 과정에서 사용한 검증된 진정한 NXP Kinetis-L Freedom 보드의 먼지를 제거하기로 결정했습니다. 나는 또한 마이크로컨트롤러가 끌어들이는 에너지의 양뿐만 아니라 전체 개발 보드를 측정하기로 결정했습니다. MCU는 일반적으로 보드에서 가장 전력을 많이 소비하는 장치 중 하나이지만, 전체 시스템 전류를 측정하면 보드의 유일한 에너지 소비자가 아니라는 사실을 종종 알게 되었습니다. 마이크로컨트롤러를 최적화하는 데는 오랜 시간이 걸릴 수 있지만 항상 에너지 최적화가 필요한 유일한 장치는 아닙니다.

기준 측정으로 시작

제품의 에너지 소비 최적화 작업을 할 때마다 먼저 기본 에너지 측정을 시작합니다. 이것은 일반적으로 우리가 어디에서 시작하는지 이해하기 위해 몇 초 또는 몇 분에 걸쳐 장치의 현재 소비량을 프로파일링하여 수행됩니다. 개발 보드 실험을 위해 Kinetis-L을 절전 모드가 구현되지 않은 상태로 실행 모드로 두고 모든 주변 장치를 켜고 LED를 주기적으로 토글하도록 보드를 설정했습니다. I-Jet 디버거 및 I-Scope와 함께 IAR Embedded Workbench를 사용하여 아래에서 볼 수 있는 LED가 꺼져 있을 때 ~16.9mA, LED가 켜져 있을 때 ~18.0mA의 보드에 대한 간단한 기준선을 프로파일링할 수 있었습니다. 그림 1. 보시다시피, 측정을 어디에서 가져왔는지 기록하는 것이 중요합니다. 그렇지 않으면 분석에서 크게 벗어날 수 있습니다.

더 큰 이미지를 보려면 클릭하십시오.

그림 1. LED가 초당 한 번 토글되는 개발 기판의 전류 측정. (출처:저자)

대기 및 최대 절전 모드로 에너지 최적화

에너지 절약을 확인하는 가장 빠른 방법은 대기 또는 최대 절전 모드를 구현하는 것입니다. Kinetis-L 프로세서의 데이터시트를 살펴보면 대기 모드가 3볼트에서 3.7~5.0mA를 소비하는 것으로 나타났습니다. 이 모드에서 CPU 및 주변 장치 클록은 비활성화되지만 플래시는 잠자기 모드에 있으므로 프로세서가 인터럽트 시간 프레임(12 – 15 클록 주기) 내에서 여전히 깨어날 수 있습니다. 대기 모드는 구현하기 쉽고 대기 모드로 들어가는 코드는 아래에서 볼 수 있습니다.

<글꼴 스타일 ="글꼴 크기:13px;" face ="Courier New"> 무효 Sleep_Wait(무효)
{
SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;
asm("WFI");
}

상자 모서리를 스크롤하거나 드래그하여 필요에 따라 확장합니다.

이 두 줄의 코드만 있으면 개발 보드의 전류 소비가 18.0mA에서 15.9mA로 떨어집니다. 전류 소비가 11.6% 감소한 것입니다! 보드가 680mA 배터리로 구동된다면 장치의 배터리 수명은 37.8시간에서 42.8시간으로 단축되었을 것입니다! 단 두 줄의 코드에서 5시간 단축!

이러한 고급 전원 모드의 장점은 한 단계 더 쉽게 진행할 수 있다는 것입니다. 프로세서를 대기 모드로 전환하는 대신 다음 코드를 사용하여 깊은 절전 대기 모드로 이동할 수 있습니다.

<글꼴 스타일 ="글꼴 크기:13px;" face ="Courier New"> 무효 Sleep_Deep(무효)
{
SCB_SCR |=SCB_SCR_SLEEPDEEP_MASK;
asm("WFI");
}

상자 모서리를 스크롤하거나 드래그하여 필요에 따라 확장합니다.

우리가 한 일은 SCB_SCR 레지스터에서 단일 비트를 조정하는 것뿐이었고 이제 원래의 18mA 전류 소모에서 14.8mA로 변경되었습니다. 소비전류가 17.8% 감소한 것입니다! 다시 말하지만, 보드가 680mA 배터리로 구동된다고 가정하면 배터리 수명은 이제 37.8시간에서 46시간으로 단축되었을 것입니다! 이는 몇 줄의 코드로 상당한 절감 효과를 얻을 수 있으며 이는 빙산의 일각에 불과합니다!

uA 전류 소모를 위한 정지 및 VLLS 모드 활용

정지 모드를 사용하면 코어 및 시스템 클록을 비활성화하여 MCU 전류 소모를 최대 2mA까지 추가로 낮출 수 있습니다. 전원 모드가 낮을수록 이를 구현하는 데 더 많은 코드가 필요하고 코드가 시스템 백업을 깨우기 위해 더 복잡해집니다. Kinetis-L에서 정지 모드로 들어가는 코드는 아래에서 볼 수 있습니다.

<글꼴 스타일 ="글꼴 크기:13px;" face ="Courier New"> 무효 Sleep_Stop(void)
{
volatile unsigned int dummyread =0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL(0) |=SMC_
dummyread =SMC_PMCTRL;
Sleep_Deep();
}

상자 모서리를 스크롤하거나 드래그하여 필요에 따라 확장합니다.

정지 모드는 전원 관리 제어 레지스터를 통해 제어되며 상태가 설정되면 Sleep_Deep 함수가 호출되어 전원 모드 설정과 WFI 실행을 완료합니다.

지금까지 MCU 드로잉 1 – 2mA에 대해 이야기했습니다. 최신 마이크로컨트롤러에는 마이크로암페어 또는 나노암페어를 끌어들이는 전력 모드가 있습니다! Kinetis-L 프로세서는 2013년경에 데뷔했으며 VLLS(Very Low Leakage Stop) 모드는 135~496마이크로암페어만 사용합니다! 이 전원 모드를 초기화하는 코드는 아래에서 볼 수 있습니다.

<글꼴 스타일 ="글꼴 크기:13px;" face ="Courier New"> 무효 Sleep_VLLS1(void)
{
volatile unsigned int dummyread =0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL |=SMC_PMCTRL |=;
SMC_VLLSTRL =SMC_VLLSCTRL_LLSM(1);
dummyread =VLLS_CTRL;
Sleep_Deep();
}

상자 모서리를 스크롤하거나 드래그하여 필요에 따라 확장합니다.

이 시점에서 마이크로컨트롤러는 에너지를 거의 소모하지 않습니다!

웨이크업 대기 시간에 대한 저전력 모드의 영향

지금까지 살펴보았듯이 프로세서를 저전력 및 저전력 모드로 전환하는 것은 에너지를 절약하는 좋은 방법이지만 절약에는 비용이 따릅니다. 프로세서의 에너지 상태가 낮을수록 프로세서가 깨어나 유용한 작업을 수행하는 데 더 많은 시간이 필요합니다. 예를 들어 표준 정지 모드를 사용하는 경우 프로세서가 깨어나서 코드 실행을 다시 시작하는 데 2us에 인터럽트 대기 시간이 더 필요합니다. 나쁘지 않아. 그러나 Kinetis-L에서 VLLS 모드 중 하나를 사용하는 경우 프로세서를 부팅하는 웨이크업 대기 시간에 추가로 53~115마이크로초가 추가됩니다! 응용 프로그램에 따라 허용되지 않을 수 있습니다. 그림 2는 Kinetis-L에서 저전력 모드에서 실행 상태로의 추가 전환을 보여줍니다.

더 큰 이미지를 보려면 클릭하십시오.

그림 2. Kinetis-L의 저전력 모드에서 다양한 모드로의 전환 시간. (출처:Kinetis-L 데이터시트)

결론

Arm 마이크로컨트롤러에는 모두 표준 저전력 모드가 있지만 모든 실리콘 공급업체는 개발자가 사용할 수 있는 저전력 모드를 사용자 지정합니다. 우리가 보았듯이 실리콘 공급업체는 종종 깨우기 대기 시간에 최소한의 영향을 미치는 낮은 매달린 과일 역할을 하는 여러 모드를 제공합니다. 또한 프로세서를 거의 끄고 수백 마이크로암페어 이하만 소비하는 몇 가지 초저전력 모드를 제공합니다! 개발자는 사용하려는 에너지의 양과 시스템이 이벤트에서 깨어나고 응답하는 데 필요한 속도의 균형을 맞춰야 하는 경우가 많습니다. 절충안은 확실히 애플리케이션에 따라 다르므로 모든 제품과 애플리케이션에서 최저 전력 모드를 실행할 수 있을 것이라고 기대하지 마십시오.


제이콥 베닝고 은 현재 12개국 이상의 고객과 협력하여 소프트웨어, 시스템 및 프로세스를 획기적으로 변화시키는 임베디드 소프트웨어 컨설턴트, 고문 및 교육자입니다. 부담 없이 [email protected], 웹사이트 www.beningo.com으로 연락하고 그의 월간 Embedded Bytes 뉴스레터를 구독하십시오.


임베디드

  1. 적층 제조를 확장하기 위해 3D 프린터 모니터링을 어떻게 활용할 수 있습니까?
  2. 첨가제 MES를 사용하여 어떻게 연속 적층 생산으로 확장할 수 있습니까?
  3. IIoT 데이터가 린 제조에서 수익성을 높이는 방법
  4. 산업 자동화에서 얼마나 많은 현실을 가질 수 있습니까?
  5. 정전으로 인해 전원 공급 장치가 손상될 수 있는 방법
  6. 낮은 역률의 원인
  7. 해군 황동 용접 방법 알아보기
  8. 커패시터는 어떻게 충전합니까?
  9. PDP 조정으로 비용을 절감하는 방법
  10. 수압을 어떻게 더 강하게 만들 수 있습니까?