Питание от пинов и ток между пинами

Weisnar
Weisnar аватар
Offline
Зарегистрирован: 19.07.2018

Это уже не столько вопрос, сколько хочу поделиться результатом эксперимента, который стал для меня неожиданностью. Допустим, была задача сделать генератор и пропускать ток через датчик туда-обратно. Для этого, контакты датчика подключались к пинам (допустим, 8 и 10). Питание на них включалось так: 

pinMode(8, OUTPUT); digitalWrite(8, HIGH); pinMode(10, OUTPUT); digitalWrite(10, LOW); 
Результат виден на скриншоте. Если минус подключить не к GND, а к пину со значением LOW, то тока проходит в два раза меньше. Кто-то знает из-за чего это происходит?  
 
И еще мелкий нюанс, если кто вдруг не знает, к пину 13 подключён резистор и светодиод. Это не мешает ему пропускать максимум тока, но напряжение на его выходе падает. Этакий делитель напряжения. 
 
И в завершение, к какому выводу всё-таки пришел. В датчиках, которым принципиально проводить ток в обе стороны питание будет от двух пинов (+ и - местами будет чередовать контроллер, создавая некое подобие переменного тока). Тем более мне там ток не важен, важно напряжение, а оно такое же, как если бы минус был подключен к GND. 
В датчиках, где важен нормальный ток, от пина будет подаваться (включаться и отключаться) только плюсовое питание. Минус - будет стационарно на GND.
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

даташит почитай. Особенно, про максимальный ток пина в секции Absolute maximum ratings.

ВН
Offline
Зарегистрирован: 25.02.2016

Всякий источник обладает какой-то номинальной, максимальной нагрузочной способностью, которая указывается его производителем. Превышение этих параметров ведет к отказу источника и выходы МК тут не исключение.

Так что сначала ознакомьтесь с параметрами своего МК, а уж потом что-то там проектируйте на счет питания датчиков.

Пока идете прямой дорогой,  чтобы спалить проц или его пин.

rkit
Offline
Зарегистрирован: 23.11.2016

Это происходит потому что используется какой-то детский мультяшный симулятор, не соответствующий реальности.

К пину 13 на уно подключен компаратор.

svm
Offline
Зарегистрирован: 06.11.2016

Weisnar пишет:

 

 Если минус подключить не к GND, а к пину со значением LOW, то тока проходит в два раза меньше. Кто-то знает из-за чего это происходит?  

 
Сопротивление открытого ключа выходного каскада Ардуино - 20 Ом. Даже при токе 50 мА (а это уже на грани фола) падение на ключе будет 20х0,05=1 В. Если между двумя пинами, то падение будет уже 2 В. Соответственно при 100 мА, в два раза выше.
rkit
Offline
Зарегистрирован: 23.11.2016

svm пишет:

Даже при токе 50 мА (а это уже на грани фола) падение на ключе будет 20х0,05=1 В.

Интересно, а где остальные 4 вольта упадут? На 80омном проводе?

svm
Offline
Зарегистрирован: 06.11.2016

rkit пишет:

svm пишет:

Даже при токе 50 мА (а это уже на грани фола) падение на ключе будет 20х0,05=1 В.

Интересно, а где остальные 4 вольта упадут? На 80омном проводе?

У ТС нарисовано, что между двумя пинами течет ток 50 мА. Значит нагрузка около 60 Ом.

Weisnar
Weisnar аватар
Offline
Зарегистрирован: 19.07.2018

DetSimen пишет:
даташит почитай. Особенно, про максимальный ток пина...
Про информацию, что с пина можно питать на 40мА в курсе. Нужный мне датчик имеет сопротивление 1,5КОм и потребляет около 3 мА. 

svm пишет:
Сопротивление открытого ключа выходного каскада Ардуино - 20 Ом.
Вот! Скорее всего в этом и вся собака зарыта, что каждый OUTPUT всё-таки имеет небольшое сопротивление, коего не имеют пины VCC и GND. 

Резюмируя, приведу еще один более правильный и наглядный рисунок. Используется резистор 2КОм. Три вида подключения: VCC - GND (при 5В получаем 2,5мА), пин(12) - GND, пин(8 HIGH) - пин(10 LOW) получаем неожиданно меньший ток. Мой датчик оказался чувствителен к этой практически не заметной разнице 2,5мА - 2.35мА. Кто бы мок подумать, что вот те 20 Ом сопротивления самого пина (я, про это не знал но теперь  думаю, что там больше чем 20) спровоцируют написание целой темы на форуме :)

 

rkit
Offline
Зарегистрирован: 23.11.2016

svm пишет:

rkit пишет:

svm пишет:

Даже при токе 50 мА (а это уже на грани фола) падение на ключе будет 20х0,05=1 В.

Интересно, а где остальные 4 вольта упадут? На 80омном проводе?

У ТС нарисовано, что между двумя пинами течет ток 50 мА. Значит нагрузка около 60 Ом.

Значит? А ничего, что на схеме НЕТ НИКАКОЙ нагрузки?

rkit
Offline
Зарегистрирован: 23.11.2016

Weisnar пишет:

Скорее всего в этом и вся собака зарыта, что каждый OUTPUT всё-таки имеет небольшое сопротивление, коего не имеют пины VCC и GND.

Сопротивление, разумеется, имеют совершенно все элементы. Но оно далеко не такое, как нарисовано тут. Достаточно открыть даташит и сравнить табличные данные с этой картинкой, чтобы увидеть огромную разницу. Это просто дерьмовый симулятор.

gfx125
Offline
Зарегистрирован: 27.05.2017

Хиленькие какие-то у вас ардуинки - всего 100 мА. У меня круче, до 250 мА может выдать )))

 

 

Weisnar
Weisnar аватар
Offline
Зарегистрирован: 19.07.2018

rkit пишет:
Это просто дерьмовый симулятор.
Я любитель по этому, сам пользуюсь и всем советую: https://www.tinkercad.com/ - моделировал там и модели на 3D печать и спорные моменты на Ардуино потестить можно. Самое шикарное, что это прям эмулятор Ардуино Uno. Тоесть, можно даже программировать. По моему, для школьников - самое то, что надо.

gfx125 пишет:
У меня круче, до 250 мА может выдать )))
Это, видимо Proteus. Это как вы  на на нём пины включили, тоже можно программировать? Прикольно. Чей эмулятор более правильно показывает, мы так и не узнаем?

rkit
Offline
Зарегистрирован: 23.11.2016

Сколько раз уже в этой теме назвали точный источник такой информации?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

rkit пишет:

Значит? А ничего, что на схеме НЕТ НИКАКОЙ нагрузки?

А где Вы видели схему? Это наскальный рисунок и автор, показывая нам ток, что-то там себе "подразумевает".

Weisnar
Weisnar аватар
Offline
Зарегистрирован: 19.07.2018

Ну держите в завершение еще и наскальную фотку. Тему назвал "питание от пина" и показал, что не всё там аналогично, как питание от VCC. Знающие люди уже подсказали, что это из-за того, что на пинах есть небольшое, но сопротивление. Сам я этого не замечал пока не столкнулся с датчиком для которого принципиально: подают на него 3.15В или 3.04В. 

Теперь всё прояснилось. Всем спасибо. Дальше уже меряемся, какой эмулятор лучше. Меня тинкеркад устраивает, но в нем, к примеру, нет мультиплексоров (например CD4051). Это пичалька. 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Weisnar пишет:

Ну держите в завершение еще и наскальную фотку. Тему назвал "питание от пина" и показал, что не всё там аналогично, как питание от VCC. 

Вообще то "пины" предназначены для выдачи логических сигналов, а не для питания датчиков. Но если вам хочется их использовать для питания, то надо не в эмуляторах смотреть, а открыть даташит. Там есть графики зависимости напряжения от нагрузки на пине. Так, напиример при Vcc 5В напряжение на пине падает с 5 до 3 с небольшим вольт при возрастании нагрузки от 0 до 50мА 

Weisnar
Weisnar аватар
Offline
Зарегистрирован: 19.07.2018

Когда пытаюсь нагуглить что-то вида "падение напряжения на пине при нагрузке" попадаю на темы, аналогичные моей. Оказывается, не одного меня такое открытие посещает. А многих, у кого какие-то измерения чувствиельны к напряжению и вдруг оказывается, что от пина такое питание немного "гуляет".
На самом деле, своим первым постом я уже сразу ответ написал, что в данном случае, придётся отказаться от регулирования подачи питания чисто от пина. Это было бы просто, но это не подходит. Нужен или транзистор или, может, мультиплексор.
Сегодня если будет время, проэкспериментирую именно с мультиплексором. Чтобы был как в роли транзистора, только на большое количество датчиков. Как видите, решение вопроса "как запитаться от пина без потери тока" оказалось оригинальным: не делать этого, а с помощью пина только управлять питанием (реле, транзистор, мультиплексор...).
Последнее сообщение от asam меня уже окончательно в этом убедило. Что там (у каждого пина) не просто 20 Ом сопротивления, а оно еще и изменяться будет при изменении нагрузки. Графиков этих зависимостей - не нашел.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Weisnar пишет:
Оказывается, не одного меня такое открытие посещает.

Да, в мире есть много людей, хотящих странного.  Особенно, у каво совсем не было курса радиотехники в гуманитарном Вузе. 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Weisnar пишет:
Когда пытаюсь нагуглить что-то вида "падение напряжения на пине при нагрузке" попадаю на темы, аналогичные моей. Оказывается, не одного меня такое открытие посещает

Такое "открытие" посещает лишь тех кто ленится посмотреть даташит. Если нужн узнать сколько будет семью восем, то логичнее посмотреть в таблицу умножения, а не открывать дискуссию на форуме ближе это к 40-а или к 50-и

Цитата:
Что там (у каждого пина) не просто 20 Ом сопротивления, а оно еще и изменяться будет при изменении нагрузки. Графиков этих зависимостей - не нашел.

 

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Mi...

Figure 29-10. I/O Pin Output Voltage versus Source Current (VCC = 5 V)

Bayrn
Offline
Зарегистрирован: 14.06.2019

Доброго временни суток,

вопрос по поводу нагрузки на I/O Pins. Ардуино UNO можно до 40 mA на один пин нагружать, диодом там без опаски помигать... ))). А если взять к примеру Arduino Due, nodeMCU или MKR ZERO то тут и диодом можно выход поджарить, что в принципе логично, ибо I/O Pins для передачи информации предназначены. А что к примеру делать, если у меня имеется Arduino Due и передатчик для оптической передачи сигнала (по сути лазерный диод), который потребляет 30 mA? Чем чисто теоретически можно усилить сигнал, при том не потерять скорость передачи (в районе 5 MHz)? 

 

SLKH
Offline
Зарегистрирован: 17.08.2015

Bayrn пишет:

Доброго временни суток,

вопрос по поводу нагрузки на I/O Pins. Ардуино UNO можно до 40 mA на один пин нагружать, диодом там без опаски помигать... ))). А если взять к примеру Arduino Due, nodeMCU или MKR ZERO то тут и диодом можно выход поджарить, что в принципе логично, ибо I/O Pins для передачи информации предназначены. А что к примеру делать, если у меня имеется Arduino Due и передатчик для оптической передачи сигнала (по сути лазерный диод), который потребляет 30 mA? Чем чисто теоретически можно усилить сигнал, при том не потерять скорость передачи (в районе 5 MHz)? 

 

можно даже не теоретически, а реально - транзистором, биполярным или полевым.

 

SLKH
Offline
Зарегистрирован: 17.08.2015

Weisnar пишет:
Вот! Скорее всего в этом и вся собака зарыта, что каждый OUTPUT всё-таки имеет небольшое сопротивление, коего не имеют пины VCC и GND.
 

Любой источник напряжения имеет какое-то выходное сопротивление. Оно может быть вполне заметным (как у сигнальных пинов), близким к нулю (VCC) или (в некоторых специфических случаях) даже отрицательным.