Оптопара PC817 и Arduino: гальваническая развязка, схема подключения, распиновка
PC817 — светодиод и фототранзистор в одном корпусе на четыре ноги, между которыми только свет. Вывод Arduino зажигает светодиод, свет открывает транзистор на другой стороне — и цепи никак не связаны электрически. Так плата управляет чужим устройством с другой землёй или защищается от помех силовой части.
Именно эта микросхема стоит на модулях реле рядом с перемычкой JD-VCC. Как отдельная деталь она нужна, когда развязку надо сделать самому: управлять чужой кнопкой, читать сигнал с высоковольтной цепи, соединить две платы с разным питанием.
Схема подключения
Распиновка
| Провод | Куда и зачем |
|---|---|
| 1 — анод (A) | Плюс внутреннего светодиода, через резистор к выводу платы. Помечен точкой. |
| 2 — катод (K) | Минус светодиода, на землю платы. |
| 4 — коллектор (C) | Выход, к плюсу чужой цепи через её резистор подтяжки. |
| 3 — эмиттер (E) | Выход, к земле чужой цепи. С той стороны своя земля, с платой не соединяется. |
Характеристики
- Изоляция
- 5000 В между сторонами
- Ток светодиода
- 5–20 мА, максимум 50
- Прямое падение
- 1,2 В
- Ток коллектора
- до 50 мА
- Напряжение коллектор-эмиттер
- до 35 В
- Коэффициент передачи
- 50–600 %
- Корпус
- DIP-4
Как считать резисторы
Со стороны Arduino: вывод даёт 5 В, на светодиоде падает 1,2, остаток 3,8 В делим на желаемые 10 мА — 380 Ом, ближайший 330 или 390. Со стороны выхода транзистор ведёт себя как ключ на землю чужой цепи: между коллектором и её плюсом ставят резистор 1–10 кОм, а сигнал снимают с коллектора — единица в покое, ноль при включённом светодиоде.
Оптопара медленная по меркам электроники: до 20 килогерц. Для кнопок, реле, сигналов «включи-выключи» — с запасом; для передачи данных на мегабитах — нет.
Обратная задача: читать высокое напряжение
Оптопара работает и в другую сторону. Светодиод питается от чужой цепи — например, 12 или 24 В через резистор 2,2 кОм, а транзистор подключён к выводу Arduino с INPUT_PULLUP. Есть напряжение — вывод читает ноль. Так безопасно узнают, включён ли прибор, не заводя его напряжение на плату.
Библиотека
не нужна— С точки зрения кода это светодиод: digitalWrite на входе, digitalRead на выходе.
Готовый скетч
// Оптопара как развязанный выход: вывод 7 зажигает внутренний светодиод,
// на другой стороне открывается транзистор
const int OPTO_PIN = 7;
void setup() {
pinMode(OPTO_PIN, OUTPUT);
}
void loop() {
digitalWrite(OPTO_PIN, HIGH); // транзистор открыт: коллектор замкнут на эмиттер
delay(1000);
digitalWrite(OPTO_PIN, LOW); // закрыт
delay(1000);
}Скетч собирается arduino-cli под Arduino UNO
На выходной стороне ничего не мигает, пока туда не подключена своя цепь: подтяжка к её плюсу и то, чем вы управляете.
Частые ошибки
Светодиод без резистора
Вывод платы отдаст 40 мА, светодиод оптопары рассчитан на 50 предельных — проживёт недолго и утащит вывод. 220–330 Ом обязательны.
Соединили земли обеих сторон
Развязка исчезла: помехи и разность потенциалов пошли на плату. Смысл оптопары в том, что земли разные. Если земля общая — оптопара не нужна, хватит транзистора.
Выход инвертирован
Так и есть: включённый светодиод замыкает коллектор на эмиттер, и на выходе с подтяжкой появляется ноль. Учитывайте в логике.
Не тянет нагрузку
Транзистор оптопары — до 50 мА, это сигнал, не сила. Реле или мотор на выходе — только через ещё один транзистор.
Перепутаны 3 и 4
Эмиттер третий, коллектор четвёртый — не по порядку. Точка на корпусе у первой ножки, нумерация против часовой стрелки.
Что понадобится
- Оптопара PC817 (или EL817, LTV-817 — аналоги)
- Резистор 330 Ом
- Резистор 4,7 кОм для выходной стороны
- Arduino UNO
- Макетная плата и провода