Аппаратные методы энергосбережения в сенсорных системах на базе микроконтроллеров

№ 2’2012
Для проектирования встраиваемых систем с низким энергопотреблением требуется грамотное сочетание программного и аппаратного обеспечения, а также знание соответствующей предметной области. Неверно выбраный баланс между гибкой программной обработкой и более ограниченной по функциональности, но зачастую более экономичной аппаратной частью нередко приводит к непроизводительному расходованию электроэнергии. При этом незначительные изменения в аппаратной реализации могут кардинальным образом сказываться на общем энергопотреблении системы.

Задача проектирования микропроцессорных систем с пониженным энергопотреблением в общем случае сводится к поддержанию короткого рабочего цикла, чтобы большую часть времени процессор проводил в режиме ожидания. Такой подход продемонстрировал высокую эффективность при проектировании счетчиков потребления коммунальных услуг, в которых процессорное ядро может находиться в таком режиме суммарно на протяжении 99% своего жизненного цикла. Ядро активируется только для сбора данных с сенсорных входов (обычно по заданному расписанию) или для обработки редких внеплановых прерываний.

В важности поддержания короткого рабочего цикла можно убедиться, проанализировав динамику энергопотребления микроконтроллера в активном режиме и в режиме сна. Время — враг любого устройства с батарейным питанием, от которого требуется длительная автономная работа, так как даже небольшая на первый взгляд потребляемая мощность выливается в значительный расход электроэнергии при длительной работе.

В промежутках активности энергопотребление любой логической схемы дается формулой: CV2f, где C — суммарная емкость всех путей в цепях устройства, V — напряжение питания, а f — рабочая частота. Эта формула несколько усложняется за счет стробирования тактовых сигналов, распространенного в большинстве современных процессорных ядер, которое ограничивает переключения в неиспользуемых логических схемах путем временной блокировки их тактовых сигналов. Тем не менее эта приблизительная формула позволяет достаточно точно определить величину энергопотребления в активном режиме.

Микроконтроллеры с низким энергопотреблением обычно реализуются с использованием технологических процессов, обеспечивающих малые токи утечки, но суммарно сохраняется определяемая утечкой компонента, значительная для любого логического блока, активного в течение длительного времени. Мощность утечки является константой, хотя она имеет тенденцию к повышению с ростом рабочей температуры за счет более интенсивной тепловой генерации носителей заряда в транзисторах. Единственный способ снизить величину утечки, помимо тщательного проектирования технологического процесса, — это выключать питание логического блока.

Чтобы проектировщики имели возможность гибко регулировать энергопотребление, в рассматриваемых нами микроконтроллерах реализовано несколько видов «спящего» режима, которые предусматривают постепенное отключение питания все большего числа составляющих ядер с сохранением их состояния в энергонезависимой памяти или специальных регистрах с малой утечкой, пока устройство не будет выключено почти целиком. К примеру, в полностью активном режиме микроконтроллер Energy Micro EFM32 потребляет 5 мВт при тактовой частоте 10 МГц и напряжении питания 3 В, а в самом экономичном режиме сна — всего 60 нВт, что ниже почти на шесть порядков.

Еще один фактор, определяющий общее энергопотребление, — это затраты на «пробуждение». На стабилизацию цепей фазовой автоподстройки частоты (ФАПЧ), обеспечивающих стабильный тактовый сигнал для ядра, а также на восстановление информации о состоянии может потребоваться некоторое время. На этом временном промежутке потребляемая мощность вырастет, но пробуждающиеся части устройства не могут выполнять полезную работу, пока их питание и состояние полностью не восстановятся. Поскольку период выхода из «глубокого сна» снижает КПД микроконтроллера, им пренебрегать нельзя.

Если рабочий цикл, когда устройство с номинальной тактовой частотой 10 МГц активируется ежесекундно на 10 мс со временем пробуждения 2 мс, составляет 1%, то микроконтроллер с энергопотреблением 200 мкА/МГц, имеющий режим глубокого сна с потребляемым током 2 мкА, сможет проработать 12,7 лет от одной пары элементов типа AA. Если продлить рабочий цикл до 2%, время работы от батарей сократится до 7 лет. Важно, однако, как именно реализован рабочий цикл. Если цель состоит в том, чтобы повысить скорость отклика на события за счет пробуждения ядра микроконтроллера дважды в секунду, слагаемое времени пробуждения вырастет вдвое, сократив время работы от батареи не менее чем на полгода. Уменьшив же время пробуждения до 2 мкс, можно продлить период автономной работы (в предположении, что система пробуждается два раза в секунду) более чем на год (рис. 1).

Сократив период «пробуждения», можно минимизировать затраты энергии

Рис. 1. Сократив период «пробуждения», можно минимизировать затраты энергии на том отрезке времени, когда процессор еще не приступил к выполнению своих задач

Очевидно, что важно поддерживать короткий рабочий цикл при малом времени пробуждения. Но не всегда можно предсказать, когда именно датчики зафиксируют важное событие. Возьмем для примера емкостные датчики — технологию, которая сегодня получила широкое распространение в различных отраслях. Высококлассные емкостные датчики позволяют с высоким разрешением измерять близость, положение, смещение, влажность, уровень жидкости и ускорение любого проводящего объекта. С выходом смартфона Apple iPhone производители бытовой электроники осознали преимущества встраивания емкостных датчиков в свои устройства для создания более быстродействующих и интуитивных пользовательских интерфейсов. Эти датчики обычно недороги, и их сигналы требуют некоторой обработки со стороны микроконтроллера, что может быть трудно реализовать, если требуется обеспечить сверхнизкое энергопотребление.

Емкость характеризует влияние расстояния между двумя проводниками на напряженность электрического поля между ними. Если приложить напряжение к одной из двух пластин, между которыми имеется зазор, в этом зазоре возникнет электрическое поле как следствие разности электрических зарядов, накопленных на поверхности пластин. Заряд определяет, каким должен быть ток, чтобы изменить напряжение на пластине.

При использовании емкостного датчика в iPhone роль электризованной пластины играет чувствительная поверхность сенсора, а роль другой пластины — палец или стилус пользователя. Электронная схема драйвера постоянно меняет напряжение на чувствительной поверхности. Это напряжение называется напряжением возбуждения. Цепь измеряет ток, который требуется для изменения напряжения; данный ток служит мерой емкости между сенсором и объектом. Можно поступать и наоборот — пропускать фиксированный ток через сенсор и регистрировать изменение напряжения на нем.

В типовой реализации сенсорная цепь содержит автоколебательный RC-генератор. Он вырабатывает изменяющееся напряжение возбуждения на номинально постоянной частоте. Когда палец пользователя приближается к датчику, общая частота цепи меняется ввиду возрастания емкости на сенсорном элементе. Микроконтроллер обнаруживает это изменение частоты с помощью счетчика: если значение счетчика по истечении фиксированного промежутка времени оказывается существенно ниже номинального, алгоритм регистрирует прикосновение.

Описанный алгоритм измерения требует наличия двух основных компонентов: таймера и счетчика. Таймер программируется микроконтроллером на обратный отсчет от фиксированного значения. Когда таймер обнуляется, вырабатывается прерывание для микроконтроллера. Пока идет отсчет времени, значение счетчика микроконтроллера увеличивается на единицу с каждым положительным полупериодом напряжения генератора. По прерыванию от таймера микроконтроллер анализирует значение счетчика и определяет, произошло ли прикосновение.

Проблема такой реализации состоит в том, что процессорное ядро должно быть активным в процессе чтения сигнала с датчика, чтобы реагировать на прерывания и работать со счетчиком. На протяжении этого времени микроконтроллер может по большей части не выполнять других операций, кроме холостого цикла в активном режиме. Один из способов снизить энергопотребление — это сделать так, чтобы микроконтроллер пробуждался периодически для регистрации сигнала с сенсорной панели.

Однако в устройстве пользовательского интерфейса сенсорной подсистеме неизвестно, когда пользователь совершит следующее прикосновение. Главный микроконтроллер может периодически входить в режим сна, но длительное пребывание в этом режиме отрицательно скажется на времени отклика. Это, в свою очередь, затруднит пользование системой, так как некоторые прикосновения не будут правильно регистрироваться, пока система полностью не пробудится и не перейдет в состояние, позволяющее выполнять точные измерения. Поскольку большая часть событий происходит асинхронно, встраиваемые системы должны быть способны реагировать на воздействия только при превышении заданных порогов и без непроизводительного расходования энергии на периодический опрос датчиков.

Экономичнее было бы выполнять эти операции аппаратно и пробуждать микроконтроллер только после регистрации прикосновения, так как выделенная аппаратная схема не влечет больших накладных расходов. При таком подходе процессор тратит большую часть электроэнергии на передачу команд и данных исполнительным устройствам, а не на самостоятельные вычисления.

При сравнении аппаратного и программного методов (рис. 2) в некоторой степени уместна аналогия с рефлективной и высшей нервной (ВН) деятельностью. Рефлективная (аппаратное решение) более быстрая, но менее универсальная. ВН (головной мозг, программное решение) более универсальная, но гораздо менее быстродействующая (прим. ред.).

Преимущества аппаратного решения по сравнению с программным

Рис. 2. Преимущества аппаратного решения по сравнению с программным

Ученые из Стэнфордского университета, работающие над проектом экономичного процессора ELM, пришли к выводу, что только на передачу команд затрачивается 42% электроэнергии, расходуемой процессором. Необходимо также учитывать затраты энергии на перемещение переменного содержимого из памяти данных в регистры, а затем в тракт обработки данных и обратно. Такая миграция данных, которая производится обычно через шинные соединения, характеризующиеся большей емкостью (а следовательно, и большим энергопотреблением), не требуется в аппаратных реализациях.

В случае емкостной сенсорной подсистемы можно построить цепь, которая будет периодически возбуждать генератор, устанавливать таймер и затем отсчитывать количество импульсов до обнуления таймера. По окончании этого процесса, если значение счетчика меньше заданного минимума, данная цепь будет вырабатывать прерывание, пробуждающее микроконтроллер. В такой реализации исчезает необходимость периодического пробуждения микроконтроллера, если отсутствуют какие-либо другие функции управления. Микроконтроллер будет активироваться только тогда, когда для него есть работа, за счет чего энергопотребление снизится до минимума, определяемого действиями пользователя.

Похожая проблема, связанная с непредсказуемостью времени срабатывания, возникает в индуктивных сенсорных схемах. Существуют электронные датчики приближения, способные обнаруживать присутствие проводящего объекта. В частности, такие датчики распространены в металлодетекторах, светофорах, автомойках и разнообразном оборудовании промышленной автоматизации. Поскольку датчики этого типа не требуют физического контакта, они особенно часто применяются в жестких условиях окружающей среды, в которых работа оптических или инфракрасных сенсоров может нарушаться из-за загрязнения.

Высококлассные индуктивные датчики, известные также под названием вихретоковых, позволяют с высоким разрешением измерять положение и/или изменение положения любого проводящего объекта. Недорогие устройства этого типа используются в качестве бесконтактных выключателей, которые срабатывают просто на замыкание/размыкание в зависимости от присутствия проводящего объекта. Именно эта категория датчиков сильно затрудняет снижение энергопотребления при алгоритмической реализации в микроконтроллере.

Индуктивные датчики приближения регистрируют магнитные потери из-за тока, наведенного внешним магнитным полем на проводящих поверхности или объекте. Когда через катушку пропускается переменный ток, она вырабатывает переменное магнитное поле. Если к датчику приближается проводящий объект, под действием переменного магнитного поля датчика в объекте генерируются так называемые вихревые токи.

Один из способов генерации колебаний на индуктивности — это параллельный резонансный контур, состоящий из катушки индуктивности и конденсатора. Он в общих чертах напоминает RC-цепочку, используемую с емкостными сенсорами, но содержит еще катушку.

В конденсаторе энергия запасается в форме электрического поля, а в катушке — в форме магнитного поля. Когда ключ находится в первом положении, конденсатор заряжается до постоянного напряжения питания. При полной зарядке конденсатора ключ переводится во второе положение, в котором конденсатор включается параллельно катушке индуктивности и начинает разряжаться через нее. Напряжение на конденсаторе начинает падать, а ток через катушку — возрастать. Рост тока приводит к возникновению магнитного поля вокруг катушки. После того как конденсатор разрядится до конца, энергия, которая была запасена в нем ранее, будет теперь храниться в катушке индуктивности.

Поскольку в цепи отсутствует внешнее напряжение, поддерживающее ток в катушке, ток начинает течь через конденсатор, который при этом заряжается напряжением обратной полярности по сравнению с исходной. Затем весь цикл повторяется с периодическим переносом энергии между двумя этими элементами цепи. Полярность напряжения меняется при передаче энергии между катушкой индуктивности и конденсатором, в результате чего вырабатываются переменные напряжение и ток.

В каждом акте переноса энергии возникают потери, приводящие к затуханию колебаний. Они обусловлены наличием в цепи резистивных компонентов, на которых со временем рассеивается энергия. Амплитуда колебаний уменьшается с каждым полупериодом, пока вся энергия не будет израсходована. При этом затухание происходит быстрее, если вблизи от катушки находится металлический объект. Регистрируя изменение времени затухания, алгоритм микроконтроллера может обнаружить наличие проводящего объекта в пределах дальности действия датчика. Обычно для этого через равные промежутки времени измеряется изменение напряжения, которое затем сравнивается с опорным значением напряжения. Если входное напряжение оказывается ниже опорного, микроконтроллер может зарегистрировать присутствие объекта.

Как и в случае емкостных сенсоров, программная реализация требует активности микроконтроллера для генерации сигнала возбуждения и обработки входных сигналов аналогового компаратора. При измерении расхода воды или газа бывает затруднительно определить частоту пробуждения микроконтроллера для гарантированной регистрации всех оборотов рабочего колеса. Если потребитель не расходует воду или газ в течение длительного периода времени, микроконтроллер будет пробуждаться напрасно, не обрабатывая полезных данных. Примером удачного решения задачи снижения энергопотребления можно считать аппаратный блок микроконтроллера LESENSE от компании Energy Micro (рис. 3): он осуществляет мониторинг емкостного датчика, и процессор пробуждается только после того, как значение счетчика опустится ниже уровня запуска компаратора. Как следствие, процессор может проводить больше времени в режиме глубокого сна.

Схема работы аппаратного блока микроконтроллера LESENSE

Рис. 3. Схема работы аппаратного блока микроконтроллера LESENSE

Аппаратная реализация сенсорных цепей позволяет значительно снизить энергопотребление системы. Необходимые для этого аппаратные компоненты несколько отличаются от тех, которые используются с емкостными сенсорами. Многие из функциональных элементов остаются теми же — в частности, аналоговый компаратор для мониторинга выходного напряжения датчика, таймер времени измерений и датчик приближения. Но к индуктивному датчику требуется также дополнительный ЦАП, и схема соединений между отдельными компонентами отличается. Если микроконтроллер должен поддерживать работу с датчиками обоих типов, это повысит себестоимость системы.

Сходство между двумя типами сенсорного интерфейса можно использовать. Главное — не забывать во время проектирования аппаратной подсистемы, что большое значение имеют способы соединения аналоговых компараторов, ЦАП, счетчиков, таймеров и т. д. Кроме того, важно учитывать алгоритмы работы микроконтроллера сенсорной системы, которые, главным образом, основываются на состояниях, а переходы между состояниями задаются выполнением определенных логических условий (например, «значение счетчика меньше заданного после обнуления таймера» или «входной сигнал аналогового компаратора ниже заданного порога до обнуления таймера»).

Отслеживать эти состояния и управлять ими может конечный автомат, который (при условии его программируемости) может настраиваться для выполнения широкого спектра функций обработки сигналов с датчиков без пробуждения процессорного ядра. Именно такой подход использовала компания Energy Micro при реализации периферийного блока LESENSE (рис. 4).

Сенсорный интерфейс LESENSE может настраиваться для работы

Рис. 4. Сенсорный интерфейс LESENSE может настраиваться для работы практически с любыми типами аналоговых датчиков без вмешательства процессора

Проблема со многими программируемыми конечными автоматами состоит в том, что они могут срабатывать только по фиксированному набору выходных данных и генерировать только фиксированный набор выходных данных при переходе между состояниями. В LESENSE состояния и условия, по которым они выбираются, программируются с использованием дескрипторов, которые можно соединять в цепочки для выполнения относительно сложных операций, если есть такая необходимость. Так можно реализовывать довольно сложную логику, не требуя вмешательства со стороны процессорного ядра.

Если оснастить периферийный блок настраиваемым дешифратором, можно расширить возможности конечного автомата, наделив его способностью обрабатывать входные сигналы от множества датчиков. Например, квадратурное декодирование распространено в расходомерах и других индуктивных схемах регистрации вращения. При квадратурном декодировании датчики циклически проходят через набор состояний, соответствующих определенным положениям. Дешифратор позволяет выбрать подмножество датчиков для анализа без привлечения процессорного ядра. В итоге оказывается достаточно пробуждать микроконтроллер только после того, как было получено положительное значение в одном из квадратурных положений и зарегистрированы соответствующие данные.

Анализируя комбинации аппаратного и программного обеспечения, которые могут быть реализованы в микроконтроллерной системе в целом, и перераспределяя функции между программной и аппаратной частями, можно сделать так, чтобы гибкие возможности программной обработки использовались только при необходимости. Если прибегать к программной обработке входных сигналов от датчиков только при наличии таких сигналов, общее энергопотребление системы будет сведено к минимуму.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *