Я собираюсь украсть мой ответ с того момента, когда я ответил на этот вопрос при последней попытке arduino SE.
Это немного сложно. По сути, существует ряд ограничивающих факторов:
Линии ввода-вывода от микроконтроллера (то есть аналоговых и цифровых выводов) имеют как совокупный (например, общий) предел тока, так и предел на вывод:
Из таблицы данных ATmega328P .
Однако, в зависимости от того, как вы определяете «булавки» Arduino, это не вся история.
5-контактный вывод Arduino не подключен через микроконтроллер . Таким образом, он может значительно увеличить мощность. Когда вы питаете Arduino от USB, интерфейс USB ограничивает общее энергопотребление до 500 мА. Это используется для устройств на плате Arduino, поэтому доступная мощность будет несколько меньше.
При использовании внешнего источника питания, через разъем питания ствола, вы ограничены местным регулятором 5V, который оценен в течение максимум 1 ампер . Тем не менее, это также термически ограничено , а это означает, что при потреблении мощности регулятор нагревается. Когда он перегревается, он временно отключается.
Регулируемый выход 3,3 В способен выдавать максимум 150 мА, что является пределом регулятора 3,3 В.
В итоге
- Абсолютный максимум для любого отдельного IO штыря 40 мА ( это максимум . Вы никогда не должны фактически вытащить полный 40 мА с булавкой. В основном, это порог , при котором Atmel больше не может гарантировать чип не будет поврежден. Вы всегда должны убедиться, что вы находитесь в безопасности ниже этого текущего предела. )
- Суммарный ток всех выводов ввода-вывода вместе составляет не более 200 мА
- Выходной контакт 5 В подходит для ~ 400 мА по USB, ~ 900 мА при использовании внешнего адаптера питания
- 900 мА для адаптера, который обеспечивает ~ 7В. По мере увеличения напряжения адаптера количество тепла, с которым должен работать регулятор, также увеличивается, поэтому максимальный ток будет падать при увеличении напряжения. Это называется тепловым ограничением
- Выход 3,3 В способен подавать 150 мА .
- Примечание - Любая мощность , потребляемая от 3.3V рельса должно пройти через 5V рельсы . Поэтому, если у вас есть 100 мА устройство на выходе 3.3V, вам нужно также считать это против 5V полного тока.
Примечание: это не относится к Arduino Due, и, вероятно, есть некоторые различия для Arduino Mega. Скорее всего, это верно для любого Arduino на базе микроконтроллера ATmega328.