- Техники за пестене на енергия за микроконтролери
- 1. Режими на заспиване
- 2. Динамично изменение на честотата на процесора
- 3. Структура на фърмуера на манипулатора на прекъсвания
- 4. Оптимизиран с мощност фърмуер
- Заключение
Точно както газът (бензин / дизел) е важен за движението на мотоциклети, камиони и автомобили (да, с изключение на Тесла!), Така е и електрическата енергия за повечето приложения на електрониката и още повече, за вградени системни приложения, които обикновено са батерии (ограничена енергия), от обикновените мобилни телефони до умни домашни устройства, наред с други.
Ограниченият характер на захранването на батерията предполага необходимостта да се гарантира степента на консумация на енергия на тези устройства трябва да бъде разумна, за да насърчи тяхното приемане и използване. Особено при устройства, базирани на IoT, при които може да се очаква устройството да продължи 8 - 10 години с едно зареждане без подмяна на батерията.
Тези тенденции направиха прилагането на съображения за ниска мощност при проектирането на вградени системи и през годините дизайнерите, инженерите и производителите в няколко момента са разработили няколко интелигентни начина за ефективно управление на консумираната от продуктите мощност, за да гарантират, че те продължават по-дълго на едно зареждане. Много от тези техники се фокусират върху микроконтролера, който е сърцето на повечето устройства. В днешната статия ще проучим някои от тези техники и как те могат да бъдат използвани за минимизиране на консумацията на енергия в микроконтролерите. Въпреки че микропроцесорът консумира по-малко енергия, но може да бъде използван навсякъде, поставен на микроконтролер, следвайте връзката, за да научите как микропроцесорът се различава от микроконтролера.
Техники за пестене на енергия за микроконтролери
1. Режими на заспиване
Режимите на заспиване (обикновено наричани режими с ниска мощност) са може би най-популярната техника за намаляване на консумацията на енергия в микроконтролерите. Те обикновено включват деактивиране на определени схеми или часовници, които задвижват определени периферни устройства на микроконтролерите.
В зависимост от архитектурата и производителя, микроконтролерите обикновено имат различен вид режими на заспиване, като всеки режим притежава способността да деактивира повече вътрешни схеми или периферни устройства в сравнение с другия. Режимите на заспиване обикновено варират от дълбок сън или изключен, до режими на празен ход и дремене.
Някои от наличните режими са обяснени по-долу. Трябва да се отбележи, че характеристиките, както и наименованието на тези режими, могат да варират в зависимост от производителя.
i. Режим на готовност / заспиване
Това обикновено е най-простият от режимите с ниска мощност, които дизайнерите могат да приложат. Този режим позволява на микроконтролера да се върне към пълна работа с много бърза скорост. Следователно не е най-добрият режим, ако цикълът на захранване на устройството изисква много често да напуска режима на заспиване, тъй като се изразходва голямо количество енергия, когато микроконтролерът излезе от режим на заспиване. Връщането в активен режим от режим на готовност обикновено се основава на прекъсване. Този режим се реализира на микроконтролера чрез изключване на дървото на часовника, което задвижва веригата на процесора, докато основният високочестотен часовник на MCU продължава да работи. С това централният процесор е в състояние да възобнови операциите веднага, когато се активира спусъка за събуждане. Часовникът се използва широко за прекъсване на сигнали в режими с ниска мощност за микроконтролери и този режим ефективно предава тактови сигнали в процесора.
ii. Режим на готовност
Режимът на готовност е друг режим с ниска мощност, лесен за изпълнение от дизайнерите. Той е много подобен на режим на празен ход / режим на заспиване, тъй като включва също така използването на часовник в процесора, но една основна разлика е, че позволява промяна в съдържанието на оперативната памет, което обикновено не е случаят с режима на празен ход / сън. В режим на готовност високоскоростните периферни устройства като DMA (директен достъп до паметта), серийните портове, ADC и AES периферните устройства продължават да работят, за да гарантират, че са налични веднага след пробуждането на процесора. За някои MCU RAM също се поддържа активен и може да бъде достъпен от DMA, което позволява данните да се съхраняват и получават без намеса на CPU. Мощността, използвана в този режим, може да бъде до 50uA / MHZ за микроконтролери с ниска мощност.
iii. Режим на дълбоко заспиване
Режимът на дълбок сън обикновено включва деактивиране на високочестотни часовници и други вериги в микроконтролера, оставяйки само тактовата верига, използвана за задвижване на критични елементи като таймер за наблюдение, откриване на кафяво и веригата за включване при нулиране. Други MCU могат да добавят други елементи към него, за да подобрят общата ефективност. Консумацията на енергия в този режим може да бъде само 1uA в зависимост от конкретния MCU.
iv. Режим Стоп / ИЗКЛ
Някои микроконтролери имат различни варианти на този допълнителен режим. В този режим както високите, така и ниските осцилатори обикновено са деактивирани, оставяйки включени само някои конфигурационни регистри и други критични елементи.
Характеристиките на всички режими на заспиване, споменати по-горе, се различават от MCU до MCU, но основното правило е; колкото по-дълбок е сънят, толкова по-голям е броят на периферните устройства, деактивирани по време на сън, и по-ниската консумирана мощност, макар че това обикновено означава също; толкова по-голямо е количеството консумирана енергия за възстановяване на системата. По този начин зависи от дизайнера да разгледа тази вариация и да избере правилния MCU за задачата, без да прави компромиси, които засягат спецификацията на системата.
2. Динамично изменение на честотата на процесора
Това е друга широко популярна техника за ефективно намаляване на количеството консумирана мощност от микроконтролера. Това е най-старата техника и малко по-сложна от режимите на заспиване. Включва фърмуера, динамично задвижващ часовника на процесора, редувайки се между висока и ниска честота, тъй като връзката между честотата на процесора и количеството консумирана мощност е линейна (както е показано по-долу).
Прилагането на тази техника обикновено следва този модел; когато системата е в неактивно състояние, фърмуерът задава тактовата честота на ниска скорост, което позволява на устройството да спести малко енергия и когато системата трябва да направи тежки изчисления, тактовата честота се връща обратно.
Съществуват контрапродуктивни сценарии за промяна на честотата на процесора, което обикновено е резултат от лошо разработен фърмуер. Такива сценарии възникват, когато тактовата честота се поддържа ниска, докато системата извършва тежки изчисления. Ниската честота в този сценарий означава, че системата ще отнеме повече време, отколкото е необходимо, за да изпълни зададената задача и по този начин ще консумира кумулативно същото количество енергия, която дизайнерите са се опитвали да спестят. По този начин трябва да се обърне допълнително внимание при внедряването на тази техника в критични за времето приложения.
3. Структура на фърмуера на манипулатора на прекъсвания
Това е една от най-екстремните техники за управление на захранването в микроконтролерите. Това е възможно от няколко микроконтролера като ARM cortex-M ядра, които имат бит за заспиване при излизане в регистъра SCR. Този бит осигурява на микроконтролера способността да заспива след стартиране на рутинно прекъсване. Въпреки че има ограничение за броя на приложенията, които ще работят безпроблемно по този начин, това може да бъде много полезна техника за полеви сензори и други, дългосрочни, базирани на събиране на данни приложения.
Повечето от другите техники според мен са вариации на вече споменатите по-горе. Например, селективната техника за периферно тактиране е по същество вариация на режимите на заспиване, при които дизайнерът избира периферните устройства за включване или изключване. Тази техника изисква задълбочени познания за целевия микроконтролер и може да не е много подходяща за начинаещи.
4. Оптимизиран с мощност фърмуер
Един от най-добрите начини за намаляване на количеството консумирана енергия от микроконтролера е чрез писане на ефективен и добре оптимизиран фърмуер. Това пряко влияе върху количеството работа, извършена от процесора за време и това, като удължаване, допринася за количеството енергия, консумирана от микроконтролера. По време на писането на фърмуера трябва да се положат усилия, за да се гарантира намален размер на кода и цикли, тъй като всяка изпълнена ненужна инструкция е част от енергията, съхранявана в батерията, която се губи. По-долу са дадени някои често срещани съвети на базата на C за оптимизирано разработване на фърмуер;
- Използвайте класа „Static Const“ колкото е възможно повече, за да предотвратите копиране по време на изпълнение на масиви, структури и др., Което консумира енергия.
- Използвайте указатели. Те са може би най-трудната за разбиране част от езика C за начинаещи, но са най-добрата за ефективен достъп до структури и съюзи.
- Избягвайте Modulo!
- Локални променливи над глобални променливи, където е възможно. Локалните променливи се съдържат в процесора, докато глобалните променливи се съхраняват в RAM, процесорът има достъп до локалните променливи по-бързо.
- Неподписаните типове данни са вашият най-добър приятел, когато е възможно.
- Приемете „отброяване“ за цикли, където е възможно.
- Вместо битови полета за неподписани цели числа, използвайте битови маски.
Подходите за намаляване на количеството енергия, консумирана от микроконтролер, не се ограничават до софтуерно базирани подходи, споменати по-горе, съществуват хардуерно базирани подходи, като основната техника за контрол на напрежението, но за да се запази дължината на този пост в разумен диапазон, ще спести тях за още един ден.
Заключение
Внедряването на продукт с ниска мощност започва от избора на микроконтролер и може да бъде доста объркващо, когато се опитате да прегледате разнообразните опции, предлагани на пазара. Докато сканира чрез, листът с данни може да работи добре за постигане на общата производителност на MCU, но за критични за захранването приложения може да бъде много скъп подход. За да разберат истинските характеристики на мощността на микроконтролера, разработчиците трябва да вземат предвид електрическите спецификации и функционалностите с ниска мощност, достъпни за микроконтролера. Дизайнерите не трябва да се тревожат само за текущата консумация от всеки от режимите на захранване, рекламирани от листа с данни на MCU, те трябва да разгледат времето за събуждане, източниците за събуждане и периферните устройства които са достъпни за използване по време на режимите с ниска мощност.
Важно е да проверите характеристиките на микроконтролера, който планирате да използвате, за да установите опциите, които имате за изпълнение с ниска мощност. Микроконтролерите са едни от най-големите бенефициенти на технологичния напредък и сега има няколко микроконтролера с ултра ниска мощност, които гарантират, че разполагате с ресурси, които да ви помогнат да останете в рамките на бюджета си за енергия. Редица от тях предоставят и няколко софтуерни инструмента за анализ на мощността, от които можете да се възползвате за ефективен дизайн. Личен фаворит е линията микроконтролери MSP430 от Texas Instrument.