Нюансы оптронной развязки, борьба с её недостатками и интересный на мой взгляд костыль: как разогнать скорость копеечной опторазвязки и наполучать других бонусов. Я не силён в рекламе, поэтому на месте КДПВ будет сразу тема статьи.
![](https://habrastorage.org/getpro/habr/upload_files/47d/ebd/07b/47debd07b799091d41a04a2c09b8625c.jpg)
Я — инженер-электронщик. Или схемотехник. Или, как это только не называют на биржах труда — электроник, железячник, hardware engineer. В общем, кую железо, и не могу не куя). Интерес к этой профессии мне уже много лет подогревает возможность в каждом проекте сделать хоть маленькое, но открытие. Я думаю, что больше половины Хабра может сказать о себе то же самое, поэтому и я тоже тут застрял.
Скорее всего каждый инженер-схемотехник рано или поздно сталкивается с необходимостью гальванической развязки сигналов. Избавиться от помех по общему проводу или питанию, не сжечь интерфейс при выравнивании потенциалов, не взбодрить пользователя фазным напряжением. Логично, что и способов развязки электрических сигналов придумали достаточно много: реле, трансформаторы, ИК, радио, оптоволокно, ну и конечно разнообразные цифровые изоляторы, клоны или не клоны знаменитых ADUMов.
Обычный транзисторный оптрон, типа PC817 или его ещё большее количество клонов — наиболее дешёвое решение для развязки. Это довольно странно с технологической точки зрения. Ведь оптрон, в отличии от большинства других микроэлектронных изделий, содержит два кристалла, а не один. На подложках для светодиодов (GaAs, InP) транзисторы делать получается дорого. А самый ходовой материал микроэлектроники — кремний — как назло, не светится. Тем не менее за счёт массовости стоимость такого изделия оказывается в районе 2 ₽.
![Изображение взято с сайта https://electricalschool.info/electronica/2060-optopary-harakteristiki-ustroystvo-primenenie.html Изображение взято с сайта https://electricalschool.info/electronica/2060-optopary-harakteristiki-ustroystvo-primenenie.html](https://habrastorage.org/getpro/habr/upload_files/73d/0dc/971/73d0dc97164f2f3a8607bfb48e5a31de.png)
https://electricalschool.info/electronica/2060-optopary-harakteristiki-ustroystvo-primenenie.html
Не 200, как цифровой изолятор от заслуженных мэтров микроэлектроники. И не 20, как современные китайские изделия. А всего 2 (два прописью).
Дисклеймер: [ Я сейчас говорю не про разовые сборки DIY, а про серийное изготовление. Где с ростом партии идёт борьба за каждый занюханный резистор. Для разовых изделий, конечно, стоимость разработки начинает играть значительную роль, и лучше не опускаться до нюансов дискретной схемотехники, а взять то, что лежит на поверхности, сэкономив время. Но если вдруг эта статья поможет хотя‑бы 3–4 разработчикам применить более оптимальное решение в своих 9–12 проектах, польза будет налицо. ]
Итак, не всё то — золото, что блестит. И не всё то — г.., что лежит в сторонке и не отсвечивает. Но за кажущуюся простоту приходится платить по крайней мере внимательным прочтением описаний. А вот тут, как говорил один известный персонаж, есть нюансы.
![Это описание на оптрон PC817 от SHARP Это описание на оптрон PC817 от SHARP](https://habrastorage.org/getpro/habr/upload_files/11b/19a/735/11b19a73560ef331a19d911651fc6121.png)
CTR — это коэффициент передачи тока. Отношение тока на транзисторном выходе оптрона к току через светодиод на входе. Разброс как минимум в 2 раза. И это не от того, что фирма SHARP их так хреново сделала, а это в принципе большой баг технологий микроэлектроники. Процессы диффузии, которые используются при изготовлении чипов, подчиняются тем же правилам, что и скорость химической реакции. Процесс ускоряется в 2–4 раза при увеличении температуры на 10°C. Диффузия идёт значительными темпами при температуре, приближающейся к плавлению кремния, а это больше 1000°C. Нагреть, точно удержать и потом охладить получается сложно. Отсюда и разброс.
На самом деле разброс параметров выходит раз так в 10, а не в 2. Просто после изготовления готовые изделия сортируются по CTR в процессе тестирования. Специально никто не делает CTR 80–160%, когда можно 300–600%. Также специально никто не делает CPU на 2 GHz, когда в соседнем цеху делают 4 GHz. Просто так получается. А что выходит за рамки — идёт обратно в переплавку. Почти чистый кремний тоже денег стоит.
Второй нюанс — уплывание параметров в зависимости от температуры. И тоже в 2 раза. Для устройств, которые работают в офисных условиях, это кажется не так актуально. Но даже они, бывает, разогреваются. А уж то, что работает, например, в автомобиле — и в Якутии, и в Дубаях должно работать без вопросов. Про самолёты и бороздящие просторы вселенной космические корабли вообще молчу — это отдельная тема.
![Оттуда же. И это ещё типовая кривая, на счёт неё производитель гарантий никаких не даёт. Оттуда же. И это ещё типовая кривая, на счёт неё производитель гарантий никаких не даёт.](https://habrastorage.org/getpro/habr/upload_files/f0d/659/e99/f0d659e993bea9723888e729f9831584.png)
К чему я это? Для надёжной передачи цифрового сигнала через оптрон необходимо получить надёжные полностью открытое и закрытое состояния выходного транзистора. Иначе вся вся прелесть цифрового сигнала пропадает — логические уровни сигнала перестанут быть логическими, перестанут попадать в отведённые для них рамки.
[ Я тут ещё не учёл уплывание прямого напряжения светодиода от температуры и экземпляра. При питании 5 V это не большая проблема — поставил резистор, и ограничил ток. При 3,3 V уже сказывается. А при 1,8 V — очень важно. Но это уже более глубокое погружение. ]
Итого: чтобы передать сигнал, нужен запас по CTR как минимум в 4 раза, а лучше побольше. То есть, когда светодиод светодиодит, транзистор должен быть глубоко в насыщении. Этот факт ещё пригодится в дальнейшем.
Теперь нюансы про скорость. Что нам говорит описание?
![Вроде неплохо. Чтобы, например, раз в месяц снятьпоказания с электросчётчика - запас по скорости колоссальный Вроде неплохо. Чтобы, например, раз в месяц снятьпоказания с электросчётчика - запас по скорости колоссальный](https://habrastorage.org/getpro/habr/upload_files/827/0c4/4ee/8270c44ee40757948ff0f70dd58d3b5e.png)
показания с электросчётчика - запас по скорости колоссальный
80 типовых kHz в аналоговом режиме — да, неплохо. Но этот режим мы не можем нормально использовать по причине разброса CTR. Ладно, смотрим, что в «цифровом» режиме. При таком разбросе задержек, наверное, длительность бита в 30 μs (33 kBit/s) скорее всего прокатит. Но тут опять появляется знакомый персонаж с нюансом...
![Здрасьте! Что-то вы меня часто вспоминаете. Здрасьте! Что-то вы меня часто вспоминаете.](https://habrastorage.org/getpro/habr/upload_files/869/0d9/d5d/8690d9d5d14bd94070f78f985ace890d.png)
Ic (ток коллектора)=2 mA. Нагрузка 100 Ω. Цифровые устройства у нас в основном сделаны по технологии КМОП, и логические уровни у них задаются напряжением, а не током. И господин Ом нам говорит, что на такой нагрузке сигнал будет 200 mV. А такой сигнал не увидят ни знаменитые фруктово-ягодные, ни овощные устройства. Разве что Ардуина включит свой АЦП и их всех оцифрует.
А если вспомнить про разброс CTR, то этими цифрами из описания мы вообще можем подтереться не можем воспользоваться. На кой их вообще тут пишут? Ладно, посмотрим, что в других режимах. А там вот что:
![Это изделие фирмы LiteOn. Примерно то же самое Это изделие фирмы LiteOn. Примерно то же самое](https://habrastorage.org/getpro/habr/upload_files/cd3/147/1e4/cd31471e4b4416e450260fd2e5eac761.png)
Не лучше. Чтобы получить сигнал 3 V (помним про разброс CTR), придётся поставить нагрузку 3 V / 2 mA / 4 = 6 kΩ. И уже цифра даже типовой задержки вырастает до 90 μs. А это уже не позволит нормально «гонять» данные даже на 9600 bit/s. Да, мы ещё можем поднять ток светодиода, но ведь хочется его подключить к обычному цифровому выходу. И часто каналов опторазвязки, как в ПЛК, например, может быть сильно больше одного — нарвёмся на ограничение общего тока через GPIO. И тут уже оптрон за 2 ₽ действительно превращается в кусок оптрон за 2 ₽.
Но это тоже ещё цветочки. Взгляните на предыдущую картинку повнимательнее. На графике написано условие теста Vce=2V. Не VCC. То есть, в этом тесте выходной транзистор не насыщается! Тест искусственный, и в таком режиме оптрон без танцев с бубном не годится для передачи дискретного сигнала. Так что и с этими цифрами нам придётся сделать то же, что и с предыдущими.
А вот в условиях следующего теста выходной транзистор насыщается. И логические уровни уже будут действительно логическими с точки зрения КМОП.
![Это более полезное описание FODM214 от OnSemi Это более полезное описание FODM214 от OnSemi](https://habrastorage.org/getpro/habr/upload_files/a3f/2b0/bcb/a3f2b0bcbf83018c959fbba5884bd923.png)
Да даже по картинке видно, что всё становится на свои места. Тот, кто погружался в схемотехнику биполярных транзисторов, я думаю, вспомнит про насыщение, и его главный баг — время рассасывания носителей заряда. Время отключения значительно (на десятки микросекунд) больше времени включения даже у гигагерцовых транзисторов. Я не нашёл удачную прямую ссылку про этот термин, но вот более-менее похожее объяснение процесса, если интересно.
Чтобы победить этот баг, применяли и применяют разные костыли:
ТТЛШ — автоматически закрывает транзистор, когда он близок к насыщению. Сейчас редко используется, но когда‑то это был большой прорыв в цифровой микроэлектронике
БТИЗ (IGBT) — принцип увеличения скорости похож на ТТЛШ. Маломощный полевой транзистор не даёт насытиться мощному биполярному. Жадина‑говядина такая)
ЭСЛ (ECL, PECL) — биполярный транзистор не работает в режиме насыщения, только в отсечке. До сих пор самая скоростная технология цифровых микросхем, применяется не часто, но для полноценных 40–100 Gbit/s — одно из немногих решений.
Принудительное удаление лишнего заряда из базы подачей напряжения обратной полярности. Обычно делается с помощью конденсатора, как вот тут, например
![Через C5 и C6. Но и T2 тоже помогает Через C5 и C6. Но и T2 тоже помогает](https://habrastorage.org/getpro/habr/upload_files/3d2/23e/7f7/3d223e7f70d6a7537e2425f4760b2015.png)
Уменьшение сопротивления нагрузки, судя по описанию, тоже позволяет отключить насыщенный транзистор быстрее. Но это лишняя потребляемая мощность во включённом состоянии. Как быть? Одна такая цепь уже хочет кушать десяток миллиампер, а что будет, если она не одна? Да ну их, проще уже цифровой изолятор поставить и не грызть мозг.
Но воспользуемся принципами КМОП — поставим комплиментарную пару оптронов. И уберём прожорливую нагрузку. Что будет? Для удобства повторю картинку со схемой.
![Ещё раз Ещё раз](https://habrastorage.org/getpro/habr/upload_files/c76/ca5/bdf/c76ca5bdf803afc98793f61b71d81c64.jpg)
Параметры схемы:
R1 = R2 = 470 Ω для скорости до 50 kbit/s. 220 Ω, если хочется разогнать до 100.
VD1 — B AT54J
DA1 и DA2 — оптр оны EL3H7(B)(TA)-G
VCC1 = 2,7..5,5 V, но в принципе и выше в зависимости от R1,R2
VCC2 = 1,5..80 V (да, именно такой широкий диапазон!)
Как это работает:
Когда на входе логический «0», то включён светодиод у оптрона DA1, и на выходе чёткая логическая «1». Когда на входе «1» — включён DA2, и на выходе «0». То есть схема инвертирует сигнал, но если поменять местами транзисторы, инверсии не будет.
Открытый верхний транзистор помогает быстро выключиться нижнему. И наоборот. Из-за этого достигается гораздо большая скорость работы, чем в классической схеме с нагрузочным резистором. Естественно, не бесплатно, а ценой второго оптрона за ещё 2 ₽.
Во время переключения через транзисторы успевает пройти порция сквозного тока, как и у КМОП-схем. Зато в статическом режиме, не важно 0, или 1, выход ест всего лишь микро- или нано-амперы утечки через закрытый транзистор. Когда в качестве питания изолированной части схемы приходится подтягивать какие-то фантомные источники, низкий ток питания может оказать хорошую услугу, упрощая схемотехнику.
А когда вход отключён (высокоимпедансное, Z-состояние GPIO), что будет? В левой части схемы ток потечёт по цепи R1-VD1-R2. Оба светодиода погаснут, и в правой части тоже окажется классическое высокоимпедансное состояние GPIO. Так что не зря я выложил дополнительные 2 ₽ за второй оптрон — схема даже в статике передаёт больше одного бита информации.
Итого:
Скорость достаточно высокая для копеечной схемотехники. Меньше, чем у цифровых изоляторов, конечно, зато...
Нет привязки к напряжению питания. В промышленных приборах, например, встречаются логические уровни в 24 V. Или уровни ±12 V. А выход и к 1,8-вольтовой логике подключить можно
Выход не потребляет ток в статическом режиме. Такого цифровые изоляторы не умеют
Полностью копирует GPIO — передаёт 0, 1 и высокоимпедансное состояние. Бывают случаи, когда это нужно
Если любителям или профессионалам схемотехники статья зайдёт, буду писать ещё. Читайте даташиты, и пребудет с вами сила! Всем — добра!
Важный UPD:
Спасибо за полезные комментарии!
Понял, что без практики это всё менее интересно. Поэтому ещё немного поковырялся паяльником и снял осциллограммы с нескольких ракурсов. Во-первых в закреплённом комментарии - собственно, работа этой схемы. Задержка (по уровню 50%) получилась 7 mks в оригинальной схеме.
Если убрать VD1 (тогда пропадёт возможность передать Z-состояние) то задержка уменьшается до 4,4 mks. Почему без диода быстрее? Потому, что часть тока горящего светодиода утекает через паразитную схему, и фактически на выходе уменьшается ток.
![Вот ведь паразит! Вот ведь паразит!](https://habrastorage.org/getpro/habr/upload_files/9da/78a/998/9da78a99890c9459e2a680857197371d.png)
Вот так выглядит эквивалентная схема входа при передаче логического нуля. Крестиком помечено, что один светодиод не светит. Ещё возможно, я перепутал R1 и R2, но суть не сильно меняет.
При входном питании VCC1 ≥ 5 V применение диода Шоттки не сильно мешает. Если питание ≤ 3,3 V, лучше ставить обычный маломощный быстродействующий диод типа LL4148 с бо́льшим падением напряжения. Если VCC ≈ 2,5 V — то даже 2 диода последовательно, например BAV99. Я в итоге выбирал по принципу "не множь сущности, в перечне элементов этот уже есть".
Много - не мало, и при большем VCC1 рекомендации для меньших тоже не мешают. Светодиод не засветится, если на нём напряжение в вольтах меньше энергии кванта его света в электрон-вольтах.
Теперь о подопытных: в подробных тестах участвовали 2 пары, 4 штуки. Я модифицировал схему так, чтобы можно было измерить CTR каждого из оптронов — добавил к ним индивидуальную нагрузку. По сравнению с КДПВ левая половина реальной схемы перевёрнута, чтобы не было инверсии сигнала.
![Стрелками указал, куда подключён осциллограф. Стрелками указал, куда подключён осциллограф.](https://habrastorage.org/getpro/habr/upload_files/e59/c2e/c92/e59c2ec92bd317fe767920b69ed26ad1.png)
Входной сигнал не менялся, и минимальная длительность импульса в следующих картинках одинаковая. Но масштаб времени разный — будьте внимательны. Для начала тест с нагрузкой R3=R4=47 Ω. VD1 отсутствует.
![Быстрее, выше, сильнее! (с) В.В Маяковский Быстрее, выше, сильнее! (с) В.В Маяковский](https://habrastorage.org/getpro/habr/upload_files/1dc/09c/fb3/1dc09cfb34a13fb2674eeece73db0e46.png)
Отличный результат, кстати - задержка всего 1,8 mks. Получилось, примерно как в этой статье, а точнее в практический её части. Спасибо за наводку @VT100. Мне же эта схема позволила посчитать CTR обоих оптронов сразу. Жёлтый около 150%, голубой — 170%. Другая тестовая пара имела ещё меньший разброс, оба в районе 160%. По описанию у избранных устройств с кодом (B) в маркировке должно было быть 130-260%, так что попали, и попали ближе к нижней границе. Запомним этот факт.
Теперь посчитаем, какую бы нагрузку разработчик подключит к выходу оптрона в стандартном решении - просто открытый коллектор. По описанию минимальный CTR избранных - 130%, а входной ток по зелёной осциллограмме — (1,8 V / 470 Ω) = 3,8 mA. Как я уже писал, делаем нормальный запас на температурный дрейф x2, и небольшой запас x1,5 оставим на остальные мелкие нюансы - разброс прямого напряжения светодиода, неточность напряжений питания, и всю мелочь типа разброса резисторов.
Итого на выходе ожидаем ток (3,8 mA x 130% / 2 / 1,5) = 1,6 mA в худшем случае. Выходное питание сейчас 3,3 V, и чтобы выход достигал насыщения, и выдавал нормальный логический сигнал, нагрузки 2 kΩ достаточно. Я поставил в последней схеме R3=R4=2,2 kΩ. И ...
![Ожидаемый результат для тех, кто в курсе, или прочитал статью Ожидаемый результат для тех, кто в курсе, или прочитал статью](https://habrastorage.org/getpro/habr/upload_files/722/d53/500/722d53500dd4fb0786a175d57aef5799.png)
Как и ожидалось, включается оптрон всё также быстро. А вот отключается с задержкой больше 20 mks. Выбирай любую из жёлтой и голубой кривой — UART быстрее 10 kbit/s в таком решении не пройдёт.
Большая часть задержки (помечена красным на осциллограмме) — то самое время рассасывания, бич импульсных BJT. А если CTR будет на верхней допустимой границе, ожидается ещё хуже.
И на этом минорном аккорде я, пожалуй, закончу повествование.
Ещё раз спасибо за дотошное внимание! Не ожидал, что статья окажется многим интересной. Напишу ещё, но не скоро — надо, чтоб созрело.