Питание от пина Arduino Pro Mini
- Войдите на сайт для отправки комментариев
Здравствуйте!
Имеется в наличии Arduino Pro Mini, а точнее ее китайский клон. К ней подключен модуль беспроводной связи на базе NRF24L01 (конечно же, тоже китайский клон). Питание подается от батареек, либо от стабилизированного источника, либо от программатора. Питание беспроводного модуля осуществляется оттуда же, откуда питается Arduino, только через пару диодов (дабы понизить напряжение). Пинги летят, все в порядке.
Но тут я решил понизить прожорливость связки Arduino Pro Mini + NRF24L01. Решил я запитать беспроводной модуль от цифрового пина Arduino (чтобы включать-выключать по мере надобности). Добавил строчки pinMode(5, OUTPUT); digitalWrite(5, HIGH); , подключил питание беспроводного модуля к 5-му пину. И ни фига... Пинги не летят... Подключил к другому пину (2, 4) - тоже молчание. Замерил поступающее на модуль напряжение - что-то в районе 3В - вроде норма... Попробовал побольше сделать напряжение - молчание в эфире. Подключаю к этому пину светодиод - горит... Втыкаю обратно (к входному напряжению) - пинги полетели...
Подскажите, где собака порылась?
P.S. Библиотеку использую Mirf...
Ток с пина - не больше 40 миллиампер, иначе пожгете порт. С порта имеет смысл управлять транзистором, включающим питание модуля.
А не подскажете какой транзистор лучше для этого использовать...
И если не слишком надоел вопросами - как его правильно подключить?
https://www.google.ru/search?client=ubuntu&channel=fs&q=arduino+%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%BE%D0%B9+%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE+%D1%82%D0%BE%D0%BA%D0%B0&ie=utf-8&oe=utf-8&gfe_rd=ctrl&ei=H08pU8KeO4Pv4QSij4HoBw&gws_rd=cr
Лучше один раз увидеть... :)
Питал nRF24l01+ с пина атмеги 328 - нормально все работает (правда, схема первоначально была заточена под 3В-батарейку).
Эта разработка вошла в это изделие: http://wiki.devicter.ru/index.php?title=Sensor_Node
Все работает нормально (тестировал несколько месяцев).
Да, я читал Ваши посты... В том числе из-за этого решил перейти на питание с цифрового пина, но не выходит... Может беспроводной датчик плохой/другой? Может с напряжением что-то не так?
Да, я читал Ваши посты... В том числе из-за этого решил перейти на питание с цифрового пина, но не выходит...
Ну так питание с цифрового пина это игра "в русскую рулетку". Может повезет, может пин выгорит, может устройству будет не хватать тока. Цифровые пины не предназначены для питания. К ним напрямую что-то подключать только если вы ЗНАЕТЕ что "подключаемый девайс" не возмет больше чем можно и ему этого хватит.
Пример такого девайса: светодиод обычный. Ему 20ma хватит, но желательно еще и резистор токоограничивающий что-бы "не взял больше чем ему нужно".
А кроме этого, нужно еще смотреть что-бы суммарная нагрузка на пины вясящие на одном порту не превышала указанного в даташите...
Вообщем "питать с пина" можно. Но только в случае когда вы ЗНАЕТЕ что вы делаете, почему и где границы дозволенного.
Ага... Теперь более-менее ясно - "лучше так не делать"!
А не могли бы Вы дать более конкретные характеристики транзистора, который будет включать/отключать питание беспроводного модуля? У меня есть КТ315Д - такой подойдет? А через транзистор (закрытый) не утекает ток?
Вообще-то , NRF24L01 имеет спящий режим -особо нет смысла извращатся. Вроде стандартные библиотеки его используют
Не подскажу. По схемотехнике я в первую очередь изучаю "что нельзя делать" :) Что-бы не спалить.
А вообще, это конечно нагугливается легко. Типичных схем много. Только ведь нужно знать сколько кушает ваш передатчик. А кроме вам - это никто узнать не может.
Через запертый транзистор - ток утекать не будет (практически :)
Вообщем начинайте с того что замеряйте ток который кушает ваш модуль (или читайте даташит на него, если он есть). Возможно выяснится что там потребление такое что "а пусть будет включен всегда..."
P.S. И не забудте, что большинство подобных модулей 3v, а не 5v. Поэтому питая от +5v или цифрового пина обычной ардуины его умучать не долго.
Вообще-то , NRF24L01 имеет спящий режим -особо нет смысла извращатся. Вроде стандартные библиотеки его используют
Я замерял... Arduino pro mini в режиме powerdown (я отковырял светодиод) потребляет 300 мкА. Втыкаю nrf24l01 - начинает кушать 7мА. В библиотеке mirf есть режим powerdown, но кушать продолжает... Убираю nrf24l01 - все Ок...
Через запертый транзистор - ток утекать не будет (практически :)
А практически - это сколько?
Вообщем начинайте с того что замеряйте ток который кушает ваш модуль (или читайте даташит на него, если он есть). Возможно выяснится что там потребление такое что "а пусть будет включен всегда..."
P.S. И не забудте, что большинство подобных модулей 3v, а не 5v. Поэтому питая от +5v или цифрового пина обычной ардуины его умучать не долго.
Замерял: если nrf24l01 всегда включен - батареек хватит на 1-2 месяца, а если без него - 1 год.
Насчет напряжения - читал. Но почему-то работает и от 5 вольт. Но я уменьшил - парой диодов - примерно до 3 вольт.
>начинает кушать 7мА.
Ну 7mA действительно можно и с пина, только не факт что на старте и при передаче он столько же кушает.
>Но я уменьшил - парой диодов
Впервые про такое слышу. Резистором - еще понятно, и то не идеальный вариант.
>У меня есть КТ315Д - такой подойдет?
Ну дык смотреть характеристики. Или искать "что пишут в инете" (как правильно подключать). Ну вот классика (давал на этом форуме ее наверное уже раз 30-ть).
Управление мощной нагрузкой постоянного тока. Часть 1 | Электроника для всех
Самый первый,простейший вариант, рассмотрен на примере КТ315 :)
Диодом как раз реальнее точно уменьшить немного десятых долей вольта - на диоде этот параметр падения фиксирован ,а на резисторе сильно зависит от тока,без нагрузки(на приеме) будет напряжение как на входе,что может не понравится питаемому устройсву.
,а на резисторе сильно зависит от тока
Ны дык нужно же не десятые, а 2 вольта "уронить". А резистор - так понятно что желательно не один, а два резистора. "Делитель напряжения". Может быть и диодом гасить возможно, но мне это кажется "используем на по назначению".
Вообщем, я не очень силен в схемотехнике, но мое IMHO, что
"для питания" нужно брать с 3.3V пина (если на плате под это есть отдельный стабилизитор или токи небольшие), либо отдельный линейный стабилизатор, а входы согласовывать (если в даташите не указано что они толерантные) соотвествующими схемами:Согласование логических уровней 5В и 3.3В устройств ... (все это гуглится, я когда-то так их и искал-выяснял).
Лично мне импонирует "Диодный интерфейс" (лично мне его просто и понять и собрать).
Десятые, это например 0.7 вольта ,а так как тут их два,то это значит 1.4в -что как раз нормально для радиомодуля. Падение напряжения зависит от марки диода.
А делитель на резисторах - это лишняя потеря энергии батареии...
Вообщем, я не очень силен в схемотехнике, но мое IMHO, что
"для питания" нужно брать с 3.3V пина
На Arduino Pro Mini нет такого пина :(
Падение на кремниевом диоде 0.7 вольта.
А ну такиуже написали.... Ну будем считать, что это уточнение именно про кремниевый pn переход.
LM7803
LM сам по себе будет не мало кушать. Я тоже всегда делаю на диодах когда известен ток потребления и требуемое падение напряжения. Требуется учитывать что падение напряжения зависит от тока через диод :).
LM сам по себе будет не мало кушать.
Даже когда нагрузка отлючена? Я же так понимаю, что основное время планируется "передатчик отключен". Но когда работает нужно "что-бы работал без пририканий".
известен ток потребления и требуемое падение напряжения.
Дык в том же и дело. Если верить что "кушает 7ma", то собственно и тразисторов не нужно с пина питать можно. Но... ведь по факту проблема глюков при питании с пина имеется. Значит там все-таки не 7ma (на старте или в момент передачи).
Если "только на старте" потребление большое, то возможно как-то можно как-то схимичить RC-цепочку к пину, и к сглаживать бросок потребления (правда моих знаний на ее расчет - не хватит).
Если же потребление большое в момент передачи... хочешь не хочешь прийдется думать о качественном питании. Либо LM, либо в сторону импульсников смотреть (но тут уже цена и габариты).
P.S. Но, как подсказывает форумный опыт, совсем не факт что проблема в железе. Возможно питая через пин, что-то в коде нахомутали...
LM сам по себе будет не мало кушать.
Даже когда нагрузка отлючена? Я же так понимаю, что основное время планируется "передатчик отключен". Но когда работает нужно "что-бы работал без пририканий".
Я вот думаю с цифрового пина через этот стабилизатор запитать - так что должен будет не кушать...
Дык в том же и дело. Если верить что "кушает 7ma", то собственно и тразисторов не нужно с пина питать можно. Но... ведь по факту проблема глюков при питании с пина имеется. Значит там все-таки не 7ma (на старте или в момент передачи).
Если "только на старте" потребление большое, то возможно как-то можно как-то схимичить RC-цепочку к пину, и к сглаживать бросок потребления (правда моих знаний на ее расчет - не хватит).
Если же потребление большое в момент передачи... хочешь не хочешь прийдется думать о качественном питании. Либо LM, либо в сторону импульсников смотреть (но тут уже цена и габариты).
P.S. Но, как подсказывает форумный опыт, совсем не факт что проблема в железе. Возможно питая через пин, что-то в коде нахомутали...
В простое кушает 7мА, при передаче до 20мА (не больше), при старте тоже не более 20 мА.
Мучал-мучал я этот передатчик - то работает, то не работает... Найти точно причину не смог... Сечас поеду за стабилизаторами.
Ребяты, в этой теме какой-то антинаучный кружок образовался. Если у кого-то хорошо работает выход контроллера как источник питания для другого устройства, то это не повод продвигать эти идеи в массы. Если у вас слабая нагрузка, ну возьмите любой современный стабилизатор с внешним разрешающим входом. Например если нужно 3,3 вольта, то возьмите LP2980, даже в таком дорогом магазе как чип-дип он стоит 19 рублей. На вход On/Off можно повесить управление от контроллера, питание взять от 5 вольт. И вот честный хороший программно-коммутируемый стабилизатор для радиомодуля. Даташит: http://lib.chipdip.ru/142/DOC000142786.pdf
Почему сразу антинаучный? Нагрузочная способность пина 40ма - из датащита. Что на нем включено - светодиод или модуль на мой взгляд без разницы. LP2980 будет постоянно,даже когда выключен, кушать 1мка (если производитель не слукавил). Это имеет значение при питании от ионистора, солнца или малой батареи. Нагрузочная способность LP2980 почти такая же как у пина 50ma.
2Wadamir - у тебя на питании модуля конденсатор 20-100 мкф стоит? Еще попробуй поменять выводы МК на которых CE и CSN - были замечены несовместимости с частью библиотек (сам удивляюсь с чего).
P/S/ Сам для стабилизации использую xc6206p332mr
Спасибо за наводку на LP2980 - пополнит актив используемых компанентов.
ales2k, если хорошенько пораскинуть мозгами, то разницу между светодиодом и радиомодулем как нагрузкой можно найти. Светодиод почти неприхотлив в еде, ему не нужно чистое питание, он не образует скачков тока выше номинала. Модулю (возможно) не нужно именно стабилизированное питание, но питание без помех -очень нужно. А с ноги меги как с антенны стекает по питанию в модуль масса всякой шуршащей гадости. По хорошему нужно ставить электролит, дроссель, керамику, но вся эта цепочка фильтрации будет перегружать выход меги в момент коммутации. Поэтому я голосую за правильное питание :)
Конечно модуль и светодиод разные вещи, и по нагрузке тоже. Но при потреблении 5-10 ma для ключа на выходе МК это не очень важно.
У atmel хорошо в документации описано устройство выходов. Там транзисторные ключи и в общемто помехам браться особо не откуда, что продтверждается банальным замером на пине прижатом контроллером или к 0 или к 1. (*свободно висящие не обсуждаются)
Конденсатор на модуле обязателен - потому, как при передаче в менее чем микросекундном интервале у модуля приличные токи. Почему это не указывает производитель NRF и китайцы не распаивают на своих платах конденсаторы - на их совести.
PS Это какую цепочку надо, чтобы перегрузить на выходе 50ма?
Ребяты, в этой теме какой-то антинаучный кружок образовался. Если у кого-то хорошо работает выход контроллера как источник питания для другого устройства, то это не повод продвигать эти идеи в массы.
обеими руками за!
к тому же кроме ограничения 40ма на пин есть ведь еще общее ограничение на чип. поэтому нельзя взять 10 пинов и прокачать через каждый 40ма, т.е 0.4А. исходя из этого здравый смысл должен подсказывать некоторую экономию по подключаемой нагрузке, надо же немного смотреть вперед и оставлять запас, а то вдруг потом не хватит :)
ales2k, по поводу помех - у меня всё было под рукой - провёл эксперимент, измерил осциллографом.
На ноге стабилизатора (+5) ардуино -шум до 10мв
Выход +5 вольт на ардуино -шум уже до 20мв
Выход меги, запрограммированный как HIGH -шум до 80мв, и спектр шума в основном около тактовой частоты.
Как видно "пища" для радиомодуля крайне тяжелоперивариваемая :)
Спасибо за информацию. А LP2980 - как шумит?
PS у меня больше 10 устройств с питанием от ног уже годами работают и с радиомодулями тоже. Пары конденсаторов обычно хватает для подавления помех по питанию.
ales2k, я там немножко поправил свой ответ. Шум с тактовой частотой, а не около мегагерца как сначала написал. LP2980 под рукой к сожалению нет, но по даташиту 160 мкв, в прочем такое я бы и измерить не смог, у моего осцилла разрешение 500мкв.
То, что у вас работает, да, тут спору нет, может и работать. Но может и не работать, или глючить, имеет на то полное право :)
Еще раз спасибо. Не понимаю почиму такую инфу не пишут в датащитах. Я разрабатывая устройства из 10+ корпусов(микрух) часто как будто хожу по минному полю, трачу кучу времени на прототипированние бегаю с частотомером и осцилографом по всей схеме....
Часто нахожу откровенное вранье в датащитах производителей.
Последнее вообще из ряда вон http://arduino.ru/forum/apparatnye-voprosy/ostorozhno-kitaiskaya-poddelka
>> эта цепочка фильтрации будет перегружать выход меги в момент коммутации.
А если так:
1. вначале имеем на пине 0
2. pinMode(pin, INPUT_PULLUP); // подали единицу через внутренний резистор
3. delay(50); // дали немного времени зарядиться ёмкостям
4. pinMode(pin, OUTPUT); // подали полноценную единицу до 40 ма
toc, изврат конечно, но можно как альтернатива :) Но думаю по части подавления помех стабилизатор всё же лучше, да и меньше деталей выйдет..
Купил стабилизатор - lm1117dt-3.3
Подключил - от пина не работает...
Вставил код:
pinMode(5, INPUT_PULLUP); // подали единицу через внутренний резистор
delay(50); // дали немного времени зарядиться ёмкостям
pinMode(5, OUTPUT); // подали полноценную единицу до 40 ма
Не заработало...
Попробовал сделать тоже самое на Arduino uno - от пина не работает... :(
В-общем никак у меня не получается... НИКАК...
Wadamir, делайте управляемый стабилизатор.
>Подключил - от пина не работает...
Дык зачем же вы его к пину-то? Ну, хотя-бы к +5v или лучше к акуму сразу. Что-бы выдать нормальный ток, ему же нужно где-то его взять.
>Подключил - от пина не работает...
Дык зачем же вы его к пину-то? Ну, хотя-бы к +5v или лучше к акуму сразу. Что-бы выдать нормальный ток, ему же нужно где-то его взять.
через стабилизатор напрямую от питания - все прекрасно работает (и работало до покупки стабилизатора).
но я ведь пытаюсь отключать питание от nrf24l01+ и потому пытался от пина запитаться, думал может стабилизатор выручит, ан нет... от пина не питается...
Wadamir, делайте управляемый стабилизатор.
подскажете? Только не отправляйте в google... Может где есть более конкретно?
но я ведь пытаюсь отключать питание от nrf24l01+ и потому пытался от пина запитаться, думал может стабилизатор выручит, ан нет... от пина не питается...
И это.... покажите код. Может у вас там в логике где-то ошибка, вы думаете что включили "когда нужно", а на самом деле нифига не включили :)
Wadamir, делайте управляемый стабилизатор.
подскажете? Только не отправляйте в google... Может где есть более конкретно?
Прочтите моё первое сообщение в этой теме, там дана полная информация. Прочтите следующие, в них описано почему радиомодуль не обязан работать питаясь от выхода контроллера..
попробовал... ни так, ни так не работает... светодиод втыкаю вместо nrf-ки - горит, втыкаю модуль - не шлет нифига...
код - пример из библиотеки mirf: на pro mini залил ping_server, а на uno залит ping_client. Единственная добавка в ping_server: после
Попробуйте, после
digitalWrite(5, HIGH);
сделать delay(500);
Например если нужно 3,3 вольта, то возьмите LP2980, даже в таком дорогом магазе как чип-дип он стоит 19 рублей. На вход On/Off можно повесить управление от контроллера, питание взять от 5 вольт. И вот честный хороший программно-коммутируемый стабилизатор для радиомодуля.
Вещь хорошая! Одно но - я когда поехал за стабилизатором прочитал Ваш ответ, честно записал на бумажке, но в магазине такой штучки не оказалось... Поэтому я ограничился только стабилизаторами...
Ребяты, в этой теме какой-то антинаучный кружок образовался.
обеими руками за!
а, я против цензуры техническаго инакомыслия - так они вообще в андеграунд уйдут и жертвоприношениями или межпланетным терроризмом займутся.
в общем - свободу питанию отпина!
*должны же быть темы напоржать?
Попробуйте, после
digitalWrite(5, HIGH);
сделать delay(500);
ЗАРАБОТАЛО!!! Прямо с пина! БЕЗ ТРАНЗИСТОРА!
попробовал... ни так, ни так не работает... светодиод втыкаю вместо nrf-ки
А тестером там померять вместо светодиода, есть ожидаемые 3.3V?
- горит, втыкаю модуль - не шлет нифига...
Стоп. А плату-то после этого перезагрузили? После подачи питание его же нужно инициализировать. А инициализация происходит только при загрузки дуины.
а, я против цензуры техническаго инакомыслия - так они вообще в андеграунд уйдут и жертвоприношениями или межпланетным терроризмом займутся.
Вчера только черную курицу зарезал над беспроводным модулем, а потом еще запустил лучи смерти в галактику E0: M89 и все было безрезультатно...
ЗАРАБОТАЛО!!! Прямо с пина! БЕЗ ТРАНЗИСТОРА!
Ну ведь упорный :) Ну все-таки с пина и хоть ты тресни ;) Ну не феншуйно это. Пин упалить можно.
Не если заработало, то уменьшай-те размер delay(). Я 500 сказал "ну что-бы точно много". Возможно там и пары микросекунд хватит.
P.S. А возможно просто тестили неправильно. Проверяли светиком, а потом на горячую включали модуль. Без ребута ардуины. А сейчас случайно перегрузили, вот и заработало.
Ну ведь упорный :) Ну все-таки с пина и хоть ты тресни ;) Ну не феншуйно это. Пин упалить можно.
Не если заработало, то уменьшай-те размер delay(). Я 500 сказал "ну что-бы точно много". Возможно там и пары микросекунд хватит.
P.S. А возможно просто тестили неправильно. Проверяли светиком, а потом на горячую включали модуль. Без ребута ардуины. А сейчас случайно перегрузили, вот и заработало.
Черт с ним с пином! :) Потом попробую изменить логику... Уже приятно! Еще раз спасибо!
А перегружал я его постоянно... Причем обе ардуины - толку было ноль...
Попробуйте, после
digitalWrite(5, HIGH);
сделать delay(500);
ЗАРАБОТАЛО!!! Прямо с пина! БЕЗ ТРАНЗИСТОРА!
от двух пинов питай - через диоды, естественно.
от двух пинов питай - через диоды, естественно.
Это, видимо, тонкий английский humor?
от двух пинов питай - через диоды, естественно.
Это, видимо, тонкий английский humor?
Нет, на самом деле как один из вариантов снизить риски. Но это, опять-таки когда точно знаем сколько модуль жрет в пике (а вы этого не знаете. тестером это не промеряешь).
Только нужно что-бы оба пина были на одном порту и включать их не через digitalWrite, а через прямую запись в регистры. Что-бы они включались/выключались действительно синхронно. Иначе выпалите их еще быстрее и вернее. И даже помощь модуля для этого не потребуется.
P.S. Но все равно, питатся от пинов - зло.