가스 (휘발유 / 디젤)가 자전거, 트럭 및 자동차 (예, Teslas 제외!)가 이동하는 데 중요한 것처럼, 대부분의 전자 애플리케이션에서 전력도 마찬가지이며, 일반적으로 배터리 인 임베디드 시스템 기반 애플리케이션의 경우도 마찬가지입니다 (제한된 에너지) 전력, 일반 휴대폰에서 스마트 홈 장치에 이르기까지.
배터리 전력의 제한적 특성은 이러한 장치의 채택 및 사용을 장려하기 위해 이러한 장치의 전력 소비율이 합리적이어야한다는 것을 의미합니다. 특히 배터리 교체없이 한 번 충전으로 8 ~ 10 년 동안 기기를 사용할 수있는 IoT 기반 기기의 경우 더욱 그렇습니다.
이러한 추세는 임베디드 시스템 설계에서 저전력 고려 사항을 구현 하게했으며 수년에 걸쳐 설계자, 엔지니어 및 제조업체는 여러 지점에서 제품에서 소비되는 전력을 효과적으로 관리하는 여러 가지 지능적인 방법을 개발하여 제품에서 더 오래 지속되도록했습니다. 단일 충전. 이러한 기술의 대부분은 대부분의 장치의 핵심 인 마이크로 컨트롤러에 중점을 둡니다. 오늘 기사에서는 이러한 기술 중 일부와이를 사용하여 마이크로 컨트롤러의 전력 소비를 최소화하는 방법을 살펴 보겠습니다. 마이크로 프로세서는 전력을 덜 소비하지만 어디에서나 마이크로 컨트롤러에 배치하여 사용할 수 있지만 링크를 따라 마이크로 프로세서가 마이크로 컨트롤러와 어떻게 다른지 알아보십시오.
마이크로 컨트롤러를위한 절전 기술
1. 수면 모드
슬립 모드 (일반적으로 저전력 모드라고 함)는 마이크로 컨트롤러의 전력 소비를 줄이는 데 가장 널리 사용되는 기술입니다. 일반적으로 마이크로 컨트롤러의 특정 주변 장치를 구동하는 특정 회로 나 클럭을 비활성화하는 것이 포함됩니다.
아키텍처 및 제조업체에 따라 마이크로 컨트롤러는 일반적으로 서로 다른 종류의 절전 모드를 가지며, 각 모드는 다른 모드에 비해 더 많은 내부 회로 또는 주변 장치를 비활성화 할 수 있습니다. 수면 모드는 일반적으로 깊은 수면 또는 꺼짐에서 유휴 및 잠자기 모드까지 다양합니다.
사용 가능한 모드 중 일부는 아래에 설명되어 있습니다. 이러한 모드의 특성과 이름은 제조업체마다 다를 수 있습니다.
나는. 유휴 / 절전 모드
이는 일반적으로 설계자가 구현할 수있는 가장 간단한 저전력 모드입니다. 이 모드를 사용하면 마이크로 컨트롤러가 매우 빠른 속도로 전체 작동으로 돌아갈 수 있습니다. 따라서 마이크로 컨트롤러가 절전 모드를 종료 할 때 많은 양의 전력이 소모되기 때문에 장치의 전원 주기로 인해 매우 자주 절전 모드를 종료해야하는 경우 최상의 모드가 아닙니다. 대기 모드에서 활성 모드로 돌아가는 것은 일반적으로 인터럽트 기반입니다. 이 모드는 MCU 1 차 고주파 클록이 계속 실행되는 동안 CPU 회로를 구동하는 클록 트리를 끄는 방식으로 마이크로 컨트롤러에서 구현됩니다.. 이를 통해 CPU는 웨이크 업 트리거가 활성화되는 즉시 작업을 재개 할 수 있습니다. 클록 게이팅은 마이크로 컨트롤러의 저전력 모드에서 신호를 차단하기 위해 광범위하게 사용되었으며이 모드는 CPU에서 클록 신호를 효과적으로 게이트합니다.
ii. 대기 모드
대기 모드는 설계자가 쉽게 구현할 수있는 또 다른 저전력 모드입니다. CPU 전체에서 클럭 게이팅을 사용하기 때문에 유휴 / 절전 모드와 매우 유사 하지만 한 가지 주요 차이점은 유휴 / 절전 모드에서는 일반적으로 발생하지 않는 램의 내용을 변경할 수 있다는 것입니다. 대기 모드에서 DMA (직접 메모리 액세스), 직렬 포트, ADC 및 AES 주변 장치와 같은 고속 주변 장치는 CPU가 깨어 난 직후에 사용할 수 있도록 계속 실행됩니다. 특정 MCU의 경우 RAM도 활성 상태로 유지되며 DMA에서 액세스 할 수 있으므로 CPU 개입없이 데이터를 저장하고 수신 할 수 있습니다. 이 모드에서 소비되는 전력은 저전력 마이크로 컨트롤러의 경우 50uA / MHZ만큼 낮을 수 있습니다.
iii. 딥 슬립 모드
딥 슬립 모드는 일반적으로 마이크로 컨트롤러 내의 고주파 클록 및 기타 회로를 비활성화 하고 감시 타이머, 브라운 아웃 감지 및 리셋 회로의 전원과 같은 중요한 요소를 구동하는 데 사용되는 클록 회로 만 남겨 둡니다. 다른 MCU는 전반적인 효율성을 향상시키기 위해 다른 요소를 추가 할 수 있습니다. 이 모드의 전력 소비는 특정 MCU에 따라 1uA만큼 낮을 수 있습니다.
iv. 정지 / OFF 모드
특정 마이크로 컨트롤러에는이 추가 모드의 다양한 변형이 있습니다. 이 모드 에서 높고 낮은 발진기는 일반적으로 비활성화되고 일부 구성 레지스터와 기타 중요한 요소 만 켜집니다.
위에서 언급 한 모든 절전 모드의 기능은 MCU마다 다르지만 일반적인 경험 규칙은 다음과 같습니다. 수면이 깊을수록 수면 중에 비활성화 된 주변 장치의 수가 많아지고 소비되는 전력량이 적습니다. 시스템을 백업하는 데 소비되는 에너지 양이 많아집니다. 따라서이 변형을 고려하고 시스템 사양에 영향을 미치는 타협없이 작업에 적합한 MCU를 선택하는 것은 설계자에게 달려 있습니다.
2. 프로세서 주파수의 동적 수정
이것은 마이크로 컨트롤러가 소비하는 전력량을 효율적으로 줄이기 위해 널리 사용되는 또 다른 기술입니다. 이것은 가장 오래된 기술이며 수면 모드보다 조금 더 복잡합니다. 여기에는 프로세서 클럭을 동적으로 구동하는 펌웨어가 포함되며, 프로세서 의 주파수와 소비되는 전력량 간의 관계가 선형이므로 고주파수와 저주파를 번갈아 가며 사용합니다 (아래 참조).
이 기술의 구현은 일반적으로이 패턴을 따릅니다. 시스템이 유휴 상태 일 때 펌웨어는 클럭 주파수를 저속으로 설정하여 장치가 전력을 절약 할 수 있도록하고 시스템이 많은 계산을 수행해야 할 때 클럭 속도를 다시 높입니다.
일반적으로 잘못 개발 된 펌웨어로 인해 프로세서 주파수를 수정하는 비생산적인 시나리오가 있습니다. 이러한 시나리오는 시스템이 많은 계산을 수행하는 동안 클럭 주파수가 낮게 유지 될 때 발생합니다. 이 시나리오에서 빈도가 낮다는 것은 시스템이 설정된 작업을 수행하는 데 필요한 것보다 더 많은 시간이 걸리므로 설계자가 절약하려고했던 것과 동일한 양의 전력을 누적 적으로 소비한다는 것을 의미합니다. 따라서 시간이 중요한 응용 프로그램에서이 기술을 구현할 때는 특별히주의해야합니다.
3. 인터럽트 핸들러 펌웨어 구조
이것은 마이크로 컨트롤러에서 가장 극단적 인 전력 관리 기술 중 하나입니다. SCR 레지스터에 슬립 온 엑시트 비트가있는 ARM cortex-M 코어와 같은 소수의 마이크로 컨트롤러로 가능합니다. 이 비트는 마이크로 컨트롤러에 인터럽트 루틴을 실행 한 후 절전 기능을 제공합니다. 이러한 방식으로 원활하게 실행되는 애플리케이션의 수에는 제한이 있지만 이는 필드 센서 및 기타 장기적인 데이터 수집 기반 애플리케이션에 매우 유용한 기술이 될 수 있습니다.
내 생각에 다른 기술의 대부분은 이미 위에서 언급 한 기술의 변형입니다. 예를 들어, 선택적 주변 장치 클럭킹 기술은 기본적으로 설계자가 주변 장치를 켜거나 끌 수있는 절전 모드의 변형입니다. 이 기술은 대상 마이크로 컨트롤러에 대한 깊은 지식이 필요하며 초보자에게 친숙하지 않을 수 있습니다.
4. 전력 최적화 펌웨어
마이크로 컨트롤러가 소비하는 전력량을 줄이는 가장 좋은 방법 중 하나는 효율적이고 최적화 된 펌웨어를 작성하는 것 입니다. 이는 시간당 CPU가 수행하는 작업량에 직접적인 영향을 미치며, 이는 확장으로 마이크로 컨트롤러가 소비하는 전력량에 기여합니다. 불필요한 명령이 실행될 때마다 배터리에 저장된 에너지의 일부가 낭비되므로 코드 크기와주기를 줄이기 위해 펌웨어를 작성하는 동안 노력해야합니다. 다음은 최적화 된 펌웨어 개발을위한 몇 가지 일반적인 C 기반 팁입니다.
- 전력을 소비하는 배열, 구조 등의 런타임 복사를 방지하려면 "정적 상수"클래스를 가능한 많이 사용하십시오.
- 포인터를 사용하십시오. C 언어에서 초보자가 이해하기 가장 어려운 부분 일 수 있지만 구조 및 공용체에 효율적으로 액세스하는 데 가장 적합합니다.
- 모듈로를 피하십시오!
- 가능한 경우 전역 변수에 대한 지역 변수. 로컬 변수는 CPU에 포함되고 전역 변수는 RAM에 저장되며 CPU는 로컬 변수에 더 빨리 액세스합니다.
- 서명되지 않은 데이터 유형은 가능한 한 가장 친한 친구입니다.
- 가능한 경우 루프에 "카운트 다운"을 채택하십시오.
- 부호없는 정수에 대한 비트 필드 대신 비트 마스크를 사용하십시오.
마이크로 컨트롤러가 소비하는 전력량을 줄이기위한 접근 방식은 위에서 언급 한 소프트웨어 기반 접근 방식에 국한되지 않고 핵심 전압 제어 기술과 같은 하드웨어 기반 접근 방식 이 존재하지만이 게시물의 길이를 합리적인 범위 내로 유지하기 위해 절약 할 것입니다. 다른 날을 위해.
결론
저전력 제품 구현은 마이크로 컨트롤러의 선택에서 시작되며 시장에서 사용할 수있는 다양한 옵션을 살펴 보려고 할 때 매우 혼란 스러울 수 있습니다. 스캔하는 동안 데이터 시트는 MCU의 일반적인 성능을 얻기 위해 잘 작동 할 수 있지만 전력이 중요한 애플리케이션의 경우 매우 비용이 많이 드는 접근 방식 일 수 있습니다. 마이크로 컨트롤러의 실제 전력 특성을 이해하려면 개발자는 마이크로 컨트롤러에서 사용할 수있는 전기 사양과 저전력 기능을 고려해야합니다. 설계자는 MCU의 데이터 시트에서 광고하는 각 전력 모드의 전류 소비에 대해 염려 할뿐만 아니라 웨이크 업 시간, 웨이크 업 소스 및 주변 장치를 조사해야합니다. 저전력 모드에서 사용할 수 있습니다.
사용하려는 마이크로 컨트롤러의 기능을 확인하여 저전력 구현을위한 옵션을 확인하는 것이 중요합니다. 마이크로 컨트롤러는 기술 발전의 가장 큰 수혜자 중 하나였으며 이제는 전력 예산 내에서 유지하는 데 도움이되는 리소스를 확보 할 수있는 몇 가지 초 저전력 마이크로 컨트롤러가 있습니다. 이들 중 다수는 효과적인 설계를 위해 활용할 수있는 몇 가지 전력 분석 소프트웨어 도구도 제공합니다. 개인적으로 가장 좋아하는 것은 Texas Instruments의 MSP430 마이크로 컨트롤러 라인입니다.