Странное потребление энергии в спящем режиме

Я закончил свой проект и теперь измеряю ток, но что-то не так. Я использую плату Arduino Pro Mini и библиотеку LowPower, но потребление составляет около 3,5 - 5 мА и не менее 500 мкА (плата почти все время находится в спящем режиме).

Когда я начал работать с платой, ее светодиод был удален, но я думаю, что эта работа была сделана неправильно. Как я могу проверить, что светодиод был удален правильно?

Спасибо всем.

EDIT1: Странное энергопотребление не связано со светодиодом платы.

EDIT2: @Gerben предложил мне проверить состояние контактов SPI, подключенных к плате. Я использую в этом проекте модуль SD-карты и модуль GSM/GPRS, но виновником этого чрезмерного энергопотребления является первый. Затем я отключил все контакты модуля SD-карты, и тогда я получил около 60 мкА, так что проблема в этих контактах, но я не могу уменьшить потребление энергии. Контакты модуля SD-карты - 10, 11, 12 и 13, поэтому я использовал такие операторы, как digitalWrite(10, LOW), digitalWrite(11, LOW) и так далее после чтения/записи на SD-карту, но это бесполезно.

EDIT3: Я решил загрузить представление моего проекта с использованием Fritzing. Внешние модули не идентичны, но они содержат те же пины.

Общий вид схемы:общий вид схемы.

Подробности соединений:

подробнее

Я использую следующие внешние компоненты:

  • Модуль SD-карты
  • Модуль GPRS/GSM A6

В моем проекте есть несколько важных деталей:

  • Модуль GPRS питается индивидуально. Другая батарея предназначена для питания платы Arduino и модуля SD-карты.
  • Батарейки 6 В.
  • База транзисторов управляется 2 и 3 цифровыми выводами соответственно.
  • Выводы 8 и 9 платы Arduino действуют как выводы RX и TX с использованием библиотеки AltSofSerial.h.

, 👍1

Обсуждение

Советы можно найти в [Методы энергосбережения для микропроцессоров](http://gammon.com.au/power). Сомневаюсь, что это как-то связано с неработающим светодиодом., @Nick Gammon

Как можно удалить светодиод так, чтобы он потреблял 5 мА? Это бессмысленно. Он либо всё ещё там, либо его нет. Если бы удаление привело к короткому замыканию контактов, то ток потребления был бы гораздо выше 5 мА., @Nick Gammon

@NickGammon Я думаю, что проблема в модуле SD-карты, потому что если я отсоединяю контакты CS, DI, DO и CK, то потребление составляет около 60 мкА., @cpinamtz

@PinaGamer, вы просто отключили эти контакты или также контакты VCC и GND модуля SD-карты? Если нет, попробуйте оставить эти контакты подключенными: если это модуль, у него должен быть встроенный преобразователь и, возможно, преобразователь уровня, которые остаются под напряжением (в этом случае подайте питание через контакт Arduino и выключайте его, когда он не нужен). Если вы отключили только эти контакты и оставили VCC и GND подключенными, проверьте осциллографом, меняется ли состояние. Если нет, попробуйте также измерить ток, потребляемый SD-картой (модулем) в спящем режиме., @frarugi87

@frarugi87 Я отключил только те контакты, о которых говорил выше, чтобы VCC и GND оставались подключенными. Что вы рекомендуете? Удалить транзистор и активировать или деактивировать модуль SD-карты с помощью цифрового контакта?, @cpinamtz

@PinaGamer, о каком транзисторе вы упомянули ? Предлагаю вам 1) попробовать измерить ток, протекающий через модуль SD, только в спящем режиме. 2) оставить модуль SD подключённым, но отсоединить только VCC и измерить весь ток. 3) Опубликовать ссылку на используемый вами модуль SD; возможно, появятся другие идеи ., @frarugi87

@frarugi87 Потребление в предложенных вами случаях составляет: 1) 4,8 мА 2) 3,9 мА. Модуль SD-карты — [этот](https://www.elecfreaks.com/wiki/index.php?title=SD%26MMC_Card_Module_Double_Side)., @cpinamtz

Подождите, вы заблокировали землю модулей? Если да, попробуйте подать на все контакты SD-карты значение HIGH, а не LOW (иначе вы пытаетесь запитать устройство через цифровые контакты). И... подумайте об использовании PMOS-транзистора для блокировки контакта VCC..., @frarugi87

digitalWrite(10, LOW) или лучше digitalWrite(10, HIGH) не будут работать, если вы сначала не отключите SPI., @Gerben

@frarugi87 Не понимаю, почему для отключения модуля SD-карты нужно высокое значение, а не низкое. Зачем мне нужен PMOS-транзистор?, @cpinamtz

@PinaGamer, потому что если выключить транзистор, все узлы на SD должны быть подключены к VCC, единственному оставшемуся соединению. Если подать 0 В на любой вывод, на плате появится дифференциальное напряжение, что-то включится. Попробуйте установить высокое значение (чтобы всё было на VCC) или переведите выводы в режим высокого импеданса (то есть в режим входа). Для размыкания вывода VCC вместо вывода GND используется PMOS-транзистор (или PNP), что позволяет сохранить заземление вместе (обычно это лучший подход, поскольку заземления обычно проектируются с учётом того, что они должны быть вместе)., @frarugi87

@Gerben Вы рекомендуете мне использовать digitalWrite(10, HIGH) для включения [внутреннего PULL-UP](https://www.arduino.cc/en/Tutorial/DigitalPins) этого пина? Почему? При таком использовании ток снижается до 80 мкА., @cpinamtz

См. комментарий frarugi87. Ничего общего с подтягиваниями., @Gerben

@Gerben frarugi87 предлагает мне поместить выводы в высокоомное состояние, поэтому в void setup() я поставил digitalWrite(10, HIGH), @cpinamtz

digitalWrite(10, HIGH) не означает высокий импеданс. Высокий импеданс, если вы меняете тип контакта на ВХОД. Поэтому pinMode(10, INPUT). Но я имел в виду, что он говорил, что нужно установить контакт на Vcc, а не на GND. К тому же, нет смысла делать это в setup. Но, пожалуйста, перечитайте все комментарии, потому что, по-моему, вы совершенно не понимаете, о чём мы говорим., @Gerben


2 ответа


0

Если вы физически удалили светодиод, убедитесь, что его контактные площадки не закорочены старым припоем. Если нет, то вы удалили его правильно.

Однако: 5 мА может быть вполне разумным потреблением тока для вашего проекта. Не видя полной схемы и не анализируя ваш код, невозможно сказать, какой ток вы ожидаете увидеть.

,

Я загрузил такой простой проект: #include <LowPower.h> void setup(){ LowPower.powerDown(SLEEP_TIME, ADC_OFF, BOD_OFF); } void loop(){ } И потребление чуть меньше 3,5 мА. Так что, думаю, дело не в коде., @cpinamtz

Например, что? И как вы питаете плату?, @Majenko

Я питаю проект с помощью 4 батареек типа АА емкостью 1900 мАч., @cpinamtz

Честно говоря, меня бы меньше беспокоило потребление тока в 5 мА, чем 30%-ная потеря мощности на линейном стабилизаторе. Что ещё подключено к плате?, @Majenko

Интересно... Я изолировал плату, снова измерил ток, и теперь получаю 60 мкА. Значит, проблема в схеме... К ней подключены SD-карта и GSM-модули, оба управляются транзисторами., @cpinamtz

@PinaGamer Если вы снимаете питание с помощью транзистора, также убедитесь, что выводы SPI/UART не находятся в состоянии HIGH. В противном случае питание будет поступать в модули через этот вывод (и через ограничивающие диоды в микросхемах модулей)., @Gerben

@Gerben Я использую AltSoftSerial.h [библиотеку](https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html) для связи с GSM-модулем, используя цифровые контакты 8 и 9, а также контакт 10 для начала связи SPI с модулем SD-карты, но нет никаких операторов типа digitalWrite(8,HIGH) или чего-то подобного., @cpinamtz

@PinaGamer Я не собираюсь читать весь код библиотеки, чтобы выяснить, установлен ли выход в состояние HIGH в режиме ожидания. Вы можете сделать это самостоятельно. Или можно пойти простым путём: пока Arduino находится в спящем режиме, отсоединить модули и с помощью мультиметра проверить, есть ли на каком-либо из выходных контактов, подключенных к модулям, напряжение 5 В. Недавно я работал над проектом, в котором мне пришлось отключить SPI и установить низкий уровень на выводе MOSI перед выключением устройства, подключенного к шине SPI., @Gerben


1

РЕШЕНИЕ [автор OP]

Моя проблема заключалась в том, что модуль SD-карты потреблял энергию, когда он управлялся транзистором, а моя плата Arduino находилась в спящем режиме. Поэтому я записал в void setup() операторы digitalWrite(PIN, HIGH), где PIN представляет все контакты, подключенные к плате, которые принадлежат модулю SD-карты (контакты DI, DO, CS и CK), чтобы включить внутренний резистор этих контактов. Затем я проверил потребление энергии и оно составило менее 100 мкА.

,