3.6. Основы электроники¶
Чтобы управлять чем-либо внешним с вывода GPIO, нужна схема по ту сторону вывода. Три понятия из базовой электроники – напряжение, ток и связь между ними через резистор – встречаются в каждой такой схеме.
3.6.1. Напряжение, ток, сопротивление¶
Напряжение (вольты, В) – это разность потенциалов между двумя точками схемы. Шина питания микросхемы может находиться под напряжением 3,3 В относительно земли; вывод GPIO, переведённый в высокое состояние, находится под тем же напряжением 3,3 В.
Ток (амперы, А, или миллиамперы, мА) – это поток заряда по проводу. Ток всегда возвращается туда, откуда пришёл, поэтому для протекания любого тока схема должна образовывать замкнутый контур от источника питания обратно к земле.
Сопротивление (омы, Ω) – это то, насколько путь препятствует этому потоку. Назначение резистора – задать ток известного значения при известном напряжении.
Закон Ома связывает их воедино:
Закон Ома в трёх его формах.¶
Словами: напряжение на резисторе равно току через него, умноженному на сопротивление. Зная любые две из трёх величин, третью находят алгебраически.
3.6.2. Диоды¶
Диод – это двухвыводной компонент, который проводит ток в одном направлении (от анода к катоду) и блокирует его в другом.
Диод проводит только от анода к катоду. Светодиод – это диод, который при проведении тока излучает свет.¶
У диода также есть прямое напряжение (Vf) – падение напряжения на нём, когда ток течёт в проводящем направлении. Как только приложенное напряжение достигает Vf, диод ведёт себя примерно как провод; ниже него ток почти не течёт.
3.6.3. Светодиоды¶
Светоизлучающий диод (LED) – это диод, который преобразует ток своей проводимости в видимый или инфракрасный свет. Яркость пропорциональна току; цвет задаётся химией светодиода, а не управлением.
Типичные значения прямого напряжения светодиодов:
Красный: 1,8 – 2,2 В
Зелёный или жёлтый: 2,0 – 2,4 В
Синий или белый: 2,8 – 3,4 В
Полезный рабочий ток для индикаторного светодиода составляет 5 – 20 мА. Более высокие токи дают большую яркость, но сокращают срок службы светодиода и могут превысить предел тока вывода GPIO.
3.6.4. Токоограничивающий резистор¶
Подключение светодиода напрямую между выводом GPIO и землёй позволило бы протекать почти неограниченному току: как только прямое напряжение достигнуто, светодиод выглядит почти как короткое замыкание. Последовательный резистор между выводом и светодиодом задаёт ток безопасного значения.
Последовательный резистор задаёт ток светодиода.¶
Напряжение питания распределяется между резистором и светодиодом: светодиод поглощает своё прямое напряжение, резистор – остальное. По закону Ома:
R = (Vsupply - Vf) / If
Для красного светодиода (Vf ≈ 2.0 V), питаемого от вывода GPIO 3,3 В током 10 мА:
R = (3.3 - 2.0) / 0.010 = 130 Ω
На практике выбирают ближайшее большее стандартное значение (150 Ω или 220 Ω). В результате светодиод светит чуть тусклее, но имеет больший запас по безопасности. Берите 200 – 470 Ω в качестве разумного значения по умолчанию, когда точная яркость не важна.
3.6.5. Почему важна каждая составляющая¶
Форма любой выходной схемы GPIO вытекает из четырёх изложенных выше понятий:
Напряжение задаёт энергию, доступную на выводе. У вывода GPIO 3,3 В есть 3,3 В, которые можно распределить по всему, что подключено между ним и землёй.
Диод (в данном случае светодиод) потребляет часть этого напряжения в виде своего прямого падения и отказывается проводить ток в неправильном направлении – он задаёт в какую сторону и фиксированную долю.
Токоограничивающий резистор потребляет оставшееся напряжение и превращает остаток в управляемый ток. Без него светодиод потреблял бы тот ток, который способен дать вывод, – обычно достаточный, чтобы вывести из строя один из компонентов или оба сразу.
Закон Ома – это то, что делает значение резистора вычислимым: по оставшемуся напряжению и желаемому току величина
Rнаходится алгебраически.
Напряжения, тока, сопротивления, диодов и одного преобразованного уравнения достаточно, чтобы спроектировать любой базовый выходной каскад GPIO.
Те же самые компоненты всё это время скрывались за встроенным светодиодом. machine.LED("LED_RED").on() зажигает светодиод, потому что плата камеры уже предоставляет всё вокруг него – токоограничивающий резистор, провод к земле, сам светодиод, – а класс лишь переключает GPIO кристалла за ними. Представление «одна строка зажигает светодиод» верно; это просто краткий способ сказать «управляй этой схемой». Уберите абстракцию – и останется ровно та схема, что показана выше.
machine.Pin – это тот же кристалл, представленный без окружающих компонентов. Скрипт управляет напряжением вывода напрямую; вы сами добавляете резистор (рассчитанный по закону Ома), светодиод и обратный путь к земле. Те же четыре понятия возвращаются, в чуть иных комбинациях, за устранением дребезга кнопок, фильтрацией PWM и управлением двигателями.