Не может получить низкую мощность с Adafruit Trinket

Я хочу использовать как можно меньше энергии во время сна с помощью Adafruit Trinket. Основываясь на результатах, представленных в различных местах в Интернете (блоги и т. д.), я ожидаю, что смогу снизить ток до 50-100 микроампер на ATTiny85 Trinket. Я осознаю тот факт, что использование такой платы, как Trinket, может немного увеличить потребление, и я физически удалил светодиод питания и регулятор мощности. Я подаю 5 В непосредственно на контакт 5 В.

Я использую самый простой скетч, о котором только могу подумать, для малой мощности, без подключения к какому-либо контакту:

#include <avr/sleep.h>          // библиотека для сна

#define adc_disable() (ADCSRA &= ~(1<<ADEN)) // отключаем АЦП (до отключения питания)

void setup() {
  // поместите сюда код установки для однократного запуска:
  delay(10000);

  // power_all_disable();
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  adc_disable();
  sleep_enable();
  sleep_mode();

}

void loop() {

}

Но я не могу потреблять менее 1,3 миллиампер во время сна. Знаете ли вы, в чем может быть причина использования ~ 1 мА вместо ~ 100 мкА? Любая идея, как я могу уменьшить это еще больше?

Изменить 1: оно должно быть даже намного меньше ~50–100 мкА: ATtiny85: энергопотребление и тактовая частота ; хотя эти библиотеки, возможно, в первую очередь предназначены для ATMega328P, похоже, что они должны работать и с ATTiny85: http://www. .technoblogy.com/show?KX0

Редактировать 2. У меня валялся Adafruit Metro Mini на базе ATMega328P. Я убрал светодиод ON, а затем, используя именно этот скетч, подавая питание непосредственно на контакт 5V Metro Mini, приводит к энергопотреблению около 150 мкА во время сна, что больше похоже на то, что я ожидаю. Странно, что с ATtiny в 10 раз больше, а должно было быть меньше (?). Я что-то упустил или это просто сломанная библиотека на ATtiny? Это немного иронично, так как я выбрал меньшую плату на базе ATtiny85 для экономии тока по сравнению с ATMega328P...

, 👍0

Обсуждение

Вы просыпаетесь ото сна? Вы учитываете 10 секунд при запуске, когда он работает на полной мощности? Поместите что-нибудь в loop(), что может указывать на то, что он проснулся (может быть, включить светодиод или что-то в этом роде)., @Majenko

Я знаю, что он бодрствует первые 10 секунд (потом потребляемая мощность составляет около 13 мА), после этого периода потребляемая мощность падает до 1,3 мА, о которых я упоминал. ;) Я мог бы, конечно, разбудить его сторожевым псом, но я не думаю, что это цель этого наброска; Я хочу только измерить энергопотребление в спящем режиме, поэтому я думаю, что заставить его спать в настройках и позволить ему спать в порядке. Я также заставил его спать в основном цикле в другом скетче, и получил аналогичные результаты., @Zorglub29

Брелок использует базовый процессор ARM. Отключить питание не так уж и просто. Вы, вероятно, часами читали Atmel, а затем спецификации ядра ARM, прежде чем приступить к разработке своих собственных библиотек Arduino «сна / с низким энергопотреблением». В этот момент вы можете начать вносить свой вклад в улучшение программного обеспечения ARM BSP для Arduinos, поскольку они (были?) полны ошибок., @st2000

@st2000: хорошо, это звучит немного странно, поскольку http://www.gammon.com.au/power обращается к домену микроампер, используя только стандартные библиотеки (и, я думаю, ту же архитектуру чипов), но я могу пропустить что-то?, @Zorglub29

Извините, мой плохой, безделушка использует Atmel ATtiny85. Тем не менее, ваша ссылка на веб-страницу питания говорит, что она предназначена для Atmega328P. Кроме того, я не уверен, что BSP одинаков для этих двух процессоров. Вы можете проверить это, чтобы убедиться, что вы не против использования двух разных версий библиотек сна. По одному на каждый процессор., @st2000

Нет проблем ;) Согласен, ссылка на Ника Гэммона говорит, что он должен быть для ATMega328P, но я использую его с ATtiny. Однако похоже, что этот код должен работать и на ATtiny: http://www.technoblogy.com/show?KX0 https://forum.arduino.cc/index.php?topic=372982.0, @Zorglub29

Если вы серьезно относитесь к низкому энергопотреблению, вам, вероятно, следует обратиться непосредственно к техническому описанию устройства и убедиться, что все, что вам не нужно, отключено, например, АЦП, источники опорного напряжения и т. д. Если возможно, разделите тактовую частоту. Выключите часы, которые вам не нужны. Кроме того, при малых токах вам придется беспокоиться о питании, подаваемом или потребляемом выводами ввода-вывода, и о таких вещах, как напряжение нагрузки вашего измерителя. Часто бывает трудно получить прибор, который пропускал бы рабочий ток и измерял ток покоя!, @Chris Stratton

Хорошо, достаточно справедливо для необходимости просмотреть техническое описание для очень низкой мощности. Но все же, это немного странно / грустно, я не могу добраться до области 100 микроампер., @Zorglub29


1 ответ


Лучший ответ:

2

Пожалуйста, взгляните на схемы:

https://cdn-learn.adafruit.com /assets/assets/000/010/774/original/adafruit_products_trinket5.png?1378223478

Разъем USB использует резистор (1500 Ом) против сети 5 В и Z-диод 3,6 В на его (D-)-контакте. В дополнение к току, потребляемому микроконтроллером, эта часть схемы потребляет дополнительный ток. (5[В] - 3,6[В])/1500[Ом] = 0,0009333... ~= 0,001 [А].

Несмотря на то, что я не совсем уверен, не проведя некоторых тестов, мне кажется, что это правдоподобно.

ОБНОВЛЕНИЕ (Ответ на комментарий ОП ниже.)

На схеме используется символ обычного диода, но рядом с ним есть метка 3,6 Вольт. Предполагаю, что это должен быть стабилитрон с обратным падением напряжения 3,6 Вольта. Если я прав, диод используется для ограничения 5 вольт до 3,6 вольт (по какой причине). Стабилитрон эффективно ограничивает напряжение на нем до 3,6 вольт. Остальное напряжение 5 Вольт должно быть сброшено на резистор. т.е. 5В - 3,6В = 1,4В. Это падение напряжения говорит нам по закону Ома, что ток через резистор равен:

I = U / R
I[A] = 1.4[V] / 1500[Ohm]  = (about) 1 mA.

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

,

Мммм, похоже, что этот диод работает против полярности, обеспечиваемой +5V, и здесь только для защиты контакта или чего-то в этом роде, верно? Я думаю, что он не должен потреблять ток от 5 В (?)., @Zorglub29

@ Zorglub29: я отредактировал ответ в ответ., @Peter Paul Kiefer

Большое спасибо за объяснение, вы определенно правы :) Очень странно, что 1) на чертежах используется «неправильный» символ 2) они используют такую схему на «маломощной» плате. Свяжусь с Adafruit. Как вы думаете, почему они решили использовать заданное напряжение на этом выводе?, @Zorglub29

Я предполагаю, что они используют USB-соединение с контроллером 5 В, у которого нет собственного USB-порта. Обычно ограничивают напряжение на контактах D- и D+ USB-подключения, чтобы оставаться в пределах спецификаций. Насколько мне известно, Adafuit рекомендует использовать более новый брелок M0 (ARM). (Угадайте почему! ;-)) Моими любимыми микроконтроллерами являются серии MSP430/MSP432 от Texas Instruments. Это реальная низкая мощность. ;-) И Energia IDE почти такая же, как Arduino IDE. (Хотя я использую IDE на основе Eclipse, поэтому у меня мало опыта). Я слышал, что STM32 (например, Blue Pill) также являются устройствами с очень низким энергопотреблением., @Peter Paul Kiefer