Как человек, не знающий за какой конец держать паяльник, я очень опасаюсь повредить Raspberry Pi. Поэтому мне хочется получить ясное представление как устроены эти GPIO чтобы не поджарить их.
Упрощенно каждый GPIO можно представить как пару полевых транзисторов с плавающим затвором:
Не обращаем внимания на диоды, по идее они призваны обеспечивать защиту от статики не той полярности, на практике всё равно можно угробить микросхему статическим зарядом.
Итак, у нас имеется два транзистора, один из которых открыт. Какой? Зависит от уровня на Input
: если там 0
, то открыт U2
(у него канал типа P
и он сужается при положительном заряде на затворе 1), если же там 1
, то открыт U1
(у него канал типа N
и он расширяется при положительном заряде на затворе 1).
Но самое смешное тут то, что ток через переходы транзисторов ничем не ограничен.
Напряжение. Тут всё просто — 3.3V.
Ток. Может быть запрограммирован как 2, 4, 6, 8, 10, 12, 14 или 16mA. Однако тут есть подвох: все GPIO должны потреблять вместе не более 50mA. Начальное значение нигде не документировано, считается, что все выходы работают на 8mA. Кроме того программирование определённого тока означает лишь то, что при этом токе гарантировано различение логических уровней напряжения.
То есть ток будет потребляться тот, что нужен нагрузке независимо от запрограммированного, но более 16mA потреблять не стоит.
Итак имеем светодиод:
Из википедии подсматриваем табличку падений напряжений на 20mA 5mm светодиодах различного цвета:
Цвет | Падение напряжения |
---|---|
Красный | |
Жёлтый | |
Зелёный | |
Голубой |
Пусть ток через диод будет 8mA, свечение мы заметим. Падение напряжения на диоде принимаем худшее — 2.48V. Оставшееся напряжение должно падать на резисторе R1
.
На резисторе падает . При токе в 8mA сопротивление резистора R1
равно . У меня есть резисторы в и :
Посмотрим насколько больше тока я получу при : A. Этим можно пренебречь. Однако в других подобных случаях лучше увеличивать сопротивление, так как ток при этом будет уменьшаться, а, как правило, меньший ток это хорошо.
У меня есть небольшой блок питания, который можно использовать для проверки схемы перед подключением к Raspberri Pi:
Регуляторы AMS1117, на которых построен это блок, описаны как защищённые от короткого замыкания и температурной перегрузки, так что ничего страшного не случится, если в схеме или расчётах будут ошибки.
Нужно только помнить, что максимальное входное напряжение равно 15V.
Собираем плату:
И проверяем напряжение на резисторе:
0.36V, значит на моём светодиоде падает больше, чем рассчитывалось. Посчитаем какой ток течёт в цепи:
A
Неплохо. Светодиод светится, ток вполне безопасный, можно переходить непосредственно к Raspberry Pi. Но это в следующий раз