только Vcc пин этого адаптера не подключен к МК, так как МК уже питается от батареи.
подключены только GND, CTS, TX, RX and DTR пины.
так удобно програмировать МК подключенный к внешнему источнику питания и заодно смотреть что МК выводит в Serial.
в общем все замечательно работает.
моя задача - мнимизировать потребляемый ток МК. для этого в цепь питания МК подключен мультиметр в режиме амперметра - и я online вижу потребляемый ток.
d00m, А какой ток показывает прибор, когда ардуина не спит ? Может вы думаете, что ардуина питается от вашего аккума, а она на самом деле кушает крохи с шин RX и TX UARTа, которые как известно всегда подтянуты к питанию. Особенности входной цепи позволяют получать питание с любого входа. Сответссно когда вы отключаете UART пропадает основное питание, и ардуина начинает кушать аккум.
dimax, судя по всему так и есть - MK чтото кушает от USB через FTDI, когда он подключен, раз при отключении возрастает нагрузка на цепь с батареей.. только получается МК кушает не "крохи" от FTDI адаптера (несмотря на то, что у него не подключен пин Vcc), а полноценно питается от него.
но как же так - везде пишут - вот потребление моей ардуины столько то микроампер и поэтому этот МК работает от батарейки годами.
я получаю примерно теже значения в мироамперах на простейшей схеме с термосенсором, но стоит отключить отладочный адаптер - сразу все меняется и потребление возрастает до значений при которых говорить о каком либо вменяемом сроке работы от батареи - не приходится.
когда мой девайс не спит - он включает пин на котором висят термосенсоры, запитывает их, измеряет температуру, и передает данные в эфир. при этом потребление максимум 40-50mA.
d00m, а кто может понять? Что вы к этой ардуине подсоединяли -не известно, схемы соединения вы не рисовали. Что это вообще за дуня -неизвестно (ссылка не работает). Почему она должна мало кушать во сне -если на ней что-то ещё помимо МК есть? Есть источники, в которых говорится именно про эту плату, что именно она может во сне есть "сколько-то микроампер" ?
Чудес не бывает. Чтобы ардуина мало потребляла надо постараться и по железной части и по программе. Тему уже много раз обсуждали
то, что потребление снижается при подключении адаптера результат так называемого паразитного питания. Собственно вы это уже обсудили. Я думаю ситуация усугубляется тем, что у вас напряжение на выходах FTDI 5в, а на аккумуляторе заметно меньше. Если есть переключатель на адаптере, выставьте 3.3в, эффект должен снизиться или даже пропасть
Проблема может крыться в том, что МК уходя в сон оставляет ноги в "вывешенном" состоянии. Т.е. они, по сути, не подключены никуда. Линии, связывающие МК и радиомодуль оказываются "в воздухе" и начинают ловить все помехи, какие только мимо пролетают. Радиомодуль воспринимает их, как управляющие сигналы и начинает беспорядочно переключаться (вплоть до включения на прием или передачу), что и выливается в повышенное энергопотребление. За атмегу не скажу, но сам наблюдал такое на связке stm32 + nrf24l01.
Сейчас точно не вспомню, но кажись атмега отключает все альтернативные функции (SPI, например) от пинов при уходе в сон. Соответственно, эти пины принимают дефолтное состояние, в котором и находятся пока МК спит. А дефолт -- это floating input, т.е болтание ногами в воздухе. Так что не только свободные ноги надо переводить в output, но и те, которые скоммутированы на периферийные устройства МК.
Насчет внутренней подтяжки все верно. После включения все пины в режиме входа, переключать на вход нет необходимости. Достаточно использовать внутреннюю подтяжку или внешний резистор на 10ком
надо понимать, что забота отнеиспользованных пинах может дать несколько мкА. Сейчас когда у вас 110мкА вы это не заметите
если есть возможность залить прошивку в голую мегу, то я бы замерил ток ее потребления. Если он заметно больше нужного, то боремся с программой, а если он устраивает, то ищем на плате лишних потребителей
что за хрень.. подробно описал свою проблему, отправил, и получил вот такую ерунду. и не отредактировать уже..
дублирую.
всем привет.
использую вот такую arduino - Anarduino с радиомодулем на борту:
http://www.anarduino.com/miniwireless/#schematic
питание - LiPo аккумулятор на 3 вольта.
к Serial порту МК подключен FTDI адаптер, который в свою очередь подключен к USB к ноуту.
http://www.amazon.com/gp/product/B012YUANZK?psc=1&redirect=true&ref_=oh_aui_detailpage_o08_s00
только Vcc пин этого адаптера не подключен к МК, так как МК уже питается от батареи.
подключены только GND, CTS, TX, RX and DTR пины.
так удобно програмировать МК подключенный к внешнему источнику питания и заодно смотреть что МК выводит в Serial.
в общем все замечательно работает.
моя задача - мнимизировать потребляемый ток МК. для этого в цепь питания МК подключен мультиметр в режиме амперметра - и я online вижу потребляемый ток.
то есть схема такая:
laptop -> USB -> FTDI(w/o Vcc) -> MCU <- (A) -battery
в режиме сна МК потребляет около 0.004mA или 44uA.
проблема в том, что если я отключаю от МК FTDI адаптер:
MCU <- (A) -battery
то амперметр начинает показывать потребление 0.11mA!
Почему оно возрастает?
я уже пробовал шунтировать на Serial порту у МК RX пин - замыкал его резистором 1kOm на GND - не помогло.
так же в коде пробовал выключал Serial полностью - тоже не помогает.
даже на простом тестовом коде, который включает режим сна - происходит тоже самое.
В общем мне нужен совет и как можно скорее, а то я уже голову сломал - со вчерашнего вечера пытаюсь разобраться с этим..
Заранее спасибо.
d00m, А какой ток показывает прибор, когда ардуина не спит ? Может вы думаете, что ардуина питается от вашего аккума, а она на самом деле кушает крохи с шин RX и TX UARTа, которые как известно всегда подтянуты к питанию. Особенности входной цепи позволяют получать питание с любого входа. Сответссно когда вы отключаете UART пропадает основное питание, и ардуина начинает кушать аккум.
dimax, судя по всему так и есть - MK чтото кушает от USB через FTDI, когда он подключен, раз при отключении возрастает нагрузка на цепь с батареей.. только получается МК кушает не "крохи" от FTDI адаптера (несмотря на то, что у него не подключен пин Vcc), а полноценно питается от него.
но как же так - везде пишут - вот потребление моей ардуины столько то микроампер и поэтому этот МК работает от батарейки годами.
я получаю примерно теже значения в мироамперах на простейшей схеме с термосенсором, но стоит отключить отладочный адаптер - сразу все меняется и потребление возрастает до значений при которых говорить о каком либо вменяемом сроке работы от батареи - не приходится.
когда мой девайс не спит - он включает пин на котором висят термосенсоры, запитывает их, измеряет температуру, и передает данные в эфир. при этом потребление максимум 40-50mA.
в общем ниче не понимаю. как быть ?
d00m, а кто может понять? Что вы к этой ардуине подсоединяли -не известно, схемы соединения вы не рисовали. Что это вообще за дуня -неизвестно (ссылка не работает). Почему она должна мало кушать во сне -если на ней что-то ещё помимо МК есть? Есть источники, в которых говорится именно про эту плату, что именно она может во сне есть "сколько-то микроампер" ?
для простоты я отключил МК от схемы, я же написал все подробно..
сайт не работает да. со вчера почемуто..
аналог - https://lowpowerlab.com/shop/moteino-r4
источники были на офф форуме. но и на форуме moteino тоже есть.
например
https://lowpowerlab.com/forum/index.php/topic,1620.0.html
там другая проблема обсуждается, но про потребление есть данные.
у меня же повторяемость 100% - отсоединил адаптер - начало кушать.
Чудес не бывает. Чтобы ардуина мало потребляла надо постараться и по железной части и по программе. Тему уже много раз обсуждали
то, что потребление снижается при подключении адаптера результат так называемого паразитного питания. Собственно вы это уже обсудили. Я думаю ситуация усугубляется тем, что у вас напряжение на выходах FTDI 5в, а на аккумуляторе заметно меньше. Если есть переключатель на адаптере, выставьте 3.3в, эффект должен снизиться или даже пропасть
axill
да! там есть такой джампер, как я сам не догадался - переключил на 3 вольта и этот эффект пропал.
теперь и при подключенном адаптере МК потребляет 0.11mA.
теперь странно то, что этот простейший тестовый код не усыпляет девайс так как нужно и как описывают другие пользователи.
они все таки получают микроамперы..
Отцепите радиомодуль и посмотрите, что с потреблением происходит без него.
он там сильно припаян.. отпаивать неохота, но похоже в нем и есть причина.
скорее всего это он потребляет 110uA, хотя и спит согласно коду..
Проблема может крыться в том, что МК уходя в сон оставляет ноги в "вывешенном" состоянии. Т.е. они, по сути, не подключены никуда. Линии, связывающие МК и радиомодуль оказываются "в воздухе" и начинают ловить все помехи, какие только мимо пролетают. Радиомодуль воспринимает их, как управляющие сигналы и начинает беспорядочно переключаться (вплоть до включения на прием или передачу), что и выливается в повышенное энергопотребление. За атмегу не скажу, но сам наблюдал такое на связке stm32 + nrf24l01.
так что можно поделать?
говорят можно и нужно что-то делать со свободными пинами - или аппаратно или программно.
какието резисторы ставить чтоли?
в коде я пытался все свободные цифровые пины переводить в OUTPUT и делать LOW - не помогало..
нужно ли както по другому действовать? нужно ли и аналоговые пины учитывать при этом?
Сейчас точно не вспомню, но кажись атмега отключает все альтернативные функции (SPI, например) от пинов при уходе в сон. Соответственно, эти пины принимают дефолтное состояние, в котором и находятся пока МК спит. А дефолт -- это floating input, т.е болтание ногами в воздухе. Так что не только свободные ноги надо переводить в output, но и те, которые скоммутированы на периферийные устройства МК.
так что можно поделать?
говорят можно и нужно что-то делать со свободными пинами - или аппаратно или программно.
какието резисторы ставить чтоли?
в коде я пытался все свободные цифровые пины переводить в OUTPUT и делать LOW - не помогало..
нужно ли както по другому действовать? нужно ли и аналоговые пины учитывать при этом?
со свободными пинами можно делать одно из трех:
- оставить в режиме входа и подтянуть к любой шине питания. если есть уверенность, что на выход не будут переключаться, то просто посадить на землю
- оставить в режиме входа и включить встроенную подтяжку
- перевести на выход
кроме того кое что из переферии можно отключить, например ADC
к тому же минимальное потребление достигается в режиме POWER_DOWN, а не IDLE. вы какой используете?
на плате может быть регулятор напряжения который потребляет
еще рекомендуется от кварца отказываться для снижения потребления
axill
а можно для "тех кто в бронепоезде" дополнительно объяснить?
- оставить в режиме входа и подтянуть к любой шине питания. если есть уверенность, что на выход не будут переключаться, то просто посадить на землю
оставить в режиме входа и подтянуть это - pinMode(Input) и резистором к Vcc(Vin) или к GND?
я точно не буду пользоваться остальными пинами, а именно всеми кроме 6, 7, 8, 9, А0 и А2.
так мне можно все подтянуть через резистор к GND? какой номинал?
- оставить в режиме входа и включить встроенную подтяжку
это pinMode(INPUT_PULLUP)? делал такое. чтото на потребление не повлияло.
- перевести на выход
pinMode(OUTPUT) полагаю. тоже делал. и еще в LOW заводил при этом. тоже не повлияло никак.
а как отключить ADC?
я использую
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
Насчет внутренней подтяжки все верно. После включения все пины в режиме входа, переключать на вход нет необходимости. Достаточно использовать внутреннюю подтяжку или внешний резистор на 10ком
надо понимать, что забота отнеиспользованных пинах может дать несколько мкА. Сейчас когда у вас 110мкА вы это не заметите
если есть возможность залить прошивку в голую мегу, то я бы замерил ток ее потребления. Если он заметно больше нужного, то боремся с программой, а если он устраивает, то ищем на плате лишних потребителей