Исследуем энергопотребление Bluetooth LE модуля MLT-BT05

c564408af1905ab943f04ebe01ed1653.jpg

Понадобилось мне один свой проект по-быстрому дополнить возможностью доступа к прибору через Bluetooth. Взгляд мой упал на давно валявшийся в столе модуль MLT-BT05 (такой, как на КДПВ), с которым когда-то поигрался, убедился в том, что байтики туда-сюда бегают и AT-команды отрабатываются, да и отложил за ненадобностью. На плате прибора был разведен и выведен на разъем свободный UART и оставалось только припаять модуль к его ответной части и дописать соответствующий код в прошивку. Возникал только один вопрос: питание у прибора батарейное, так что лишнее потребление нам ни к чему. Особенно когда модуль не используется. Bluetooth в нем, конечно, Low Energy, но возник вопрос, насколько low эта energy. Поиск не дал результатов — единственная найденная цифра была «до 50 мА». Значит, придется измерять самостоятельно.

Пробуем мультиметром

Мультиметр разочаровал. Нет, он показал примерно 8,5–8,7 мА, когда модуль в активном состоянии, независимо от того, бегают данные или нет, и независимо от настройки мощности (такое впечатление, что ничего она не настраивает), режима работы и т.п. Но когда я отдал команду AT+SLEEP, мультиметр стал показывать лишь пляшущие циферки — ток то падал до нуля, то подскакивал до 2–3 мА. Собственно, это и ожидалось — ведь в спящем режиме модуль должен время от времени просыпаться и что-то делать, чтобы к нему можно было подключиться. Но как узнать, сколько на самом деле потребляет наш «синий зуб». И самое главное — можно ли «задавить» это потребление в нерабочем состоянии до близкого к нулевому, избежав необходимости вводить в схему дополнительное управление питанием?

Включаем осциллограф

Предварительно впаяв в разрыв питания резистор на 10 Ом. Соответственно, 1 мА тока будет соответствовать падению напряжения 10 мВ.

В активном режиме наблюдаем примерно то, что показывал мультиметр. То есть постоянное потребление около 8,5 мА, перемежаемое то ли короткими импульсами, то ли помехами. А в режиме сна уже интереснее. Вот осциллограмма на скорости развертки 20 мс/дел.

35bb83e750f4a5fd56062dff4908f57e.png

Тут много помех, но на их фоне отчетливо видны две последовательности импульсов потребляемого тока. Между маленькими импульсами четко 100 мс, между большими чуть больше — 106 мс, при этом большие импульсы с маленькими никак не связаны, то попадая друг между другом, то накладываясь друг на друга. Но интервалы между двумя маленькими или двумя большими импульсами все время одинаковые.

А тут осциллограммы маленького и большого импульсов укрупненно.

d4a88cd53f36fb15ce522050b6636724.png

Так выглядит потребляемый ток в режиме Peripherial (AT+ROLE0), когда модуль готов к подключению извне и сигналит в эфир, передавая свой «позывной», для того, чтобы его можно было найти и подключиться к нему. Если мы переключим модуль в режим Central (AT+ROLE1), то в спящем режиме он замолкает. Потребление явно снижается, но не до нуля. На осциллограмме потребляемого тока исчезают большие импульсы — вероятно, это ток передатчика. Маленькие же остаются, интервал между ними не изменяется. В обоих режимах ни на интервалы между этими импульсами потребления, ни на их амплитуду не влияют никакие настройки, осуществляемые AT-командами.

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

А теперь посчитаем

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

  • у маленького импульса 7,8 мА за 2 мс;

  • у большого — 12,9 мА за 4,2 мс.

Отсюда получаем:

  • для маленьких импульсов средний ток Iср = 7,8 мА * 2 мс / 100 мс = 0,156 мА;

  • для больших — Iср = 12,9 мА * 4,2 мс / 106 мс = 0,511 мА.

В режиме AT+ROLE0 потребляемый ток включает обе серии импульсов, так что потребляемый ток в этом режиме равен сумме этих токов и составляет 0,667 мА.

Заключение

Итак, мы имеем следующие значения потребляемых токов в различных режимах работы модуля:
В активном режиме: 8,5…8,7 мА

В режиме сна:

Потребляемый ток не удается опустить ниже 156 мкА никакими настройками и этот ток явно слишком велик для потребления от батареи «выключенного» устройства, так что если выключение питания в вашей конструкции сделано переводом МК в режим STANDBY, придется озаботиться для модуля персональным ключом для его обесточивания. Впрочем, при потребляемом токе не более 10 мА, можно запитать модуль прямо от порта МК, не используя дополнительных ключей.

© Habrahabr.ru