Pull to refresh

Фокусы с опторазвязкой

Level of difficultyMedium
Reading time9 min
Views24K

Нюансы оптронной развязки, борьба с её недостатками и интересный на мой взгляд костыль: как разогнать скорость копеечной опторазвязки и наполучать других бонусов. Я не силён в рекламе, поэтому на месте КДПВ будет сразу тема статьи.

Я — инженер-электронщик. Или схемотехник. Или, как это только не называют на биржах труда — электроник, железячник, hardware engineer. В общем, кую железо, и не могу не куя). Интерес к этой профессии мне уже много лет подогревает возможность в каждом проекте сделать хоть маленькое, но открытие. Я думаю, что больше половины Хабра может сказать о себе то же самое, поэтому и я тоже тут застрял.

Скорее всего каждый инженер-схемотехник рано или поздно сталкивается с необходимостью гальванической развязки сигналов. Избавиться от помех по общему проводу или питанию, не сжечь интерфейс при выравнивании потенциалов, не взбодрить пользователя фазным напряжением. Логично, что и способов развязки электрических сигналов придумали достаточно много: реле, трансформаторы, ИК, радио, оптоволокно, ну и конечно разнообразные цифровые изоляторы, клоны или не клоны знаменитых ADUMов.

Обычный транзисторный оптрон, типа PC817 или его ещё большее количество клонов — наиболее дешёвое решение для развязки. Это довольно странно с технологической точки зрения. Ведь оптрон, в отличии от большинства других микроэлектронных изделий, содержит два кристалла, а не один. На подложках для светодиодов (GaAs, InP) транзисторы делать получается дорого. А самый ходовой материал микроэлектроники — кремний — как назло, не светится. Тем не менее за счёт массовости стоимость такого изделия оказывается в районе 2 ₽.

Изображение взято с сайта https://electricalschool.info/electronica/2060-optopary-harakteristiki-ustroystvo-primenenie.html

Не 200, как цифровой изолятор от заслуженных мэтров микроэлектроники. И не 20, как современные китайские изделия. А всего 2 (два прописью).

Дисклеймер: [ Я сейчас говорю не про разовые сборки DIY, а про серийное изготовление. Где с ростом партии идёт борьба за каждый занюханный резистор. Для разовых изделий, конечно, стоимость разработки начинает играть значительную роль, и лучше не опускаться до нюансов дискретной схемотехники, а взять то, что лежит на поверхности, сэкономив время. Но если вдруг эта статья поможет хотя‑бы 3–4 разработчикам применить более оптимальное решение в своих 9–12 проектах, польза будет налицо. ]

Итак, не всё то — золото, что блестит. И не всё то — г.., что лежит в сторонке и не отсвечивает. Но за кажущуюся простоту приходится платить по крайней мере внимательным прочтением описаний. А вот тут, как говорил один известный персонаж, есть нюансы.

Это описание на оптрон PC817 от SHARP
Это описание на оптрон PC817 от SHARP

CTR — это коэффициент передачи тока. Отношение тока на транзисторном выходе оптрона к току через светодиод на входе. Разброс как минимум в 2 раза. И это не от того, что фирма SHARP их так хреново сделала, а это в принципе большой баг технологий микроэлектроники. Процессы диффузии, которые используются при изготовлении чипов, подчиняются тем же правилам, что и скорость химической реакции. Процесс ускоряется в 2–4 раза при увеличении температуры на 10°C. Диффузия идёт значительными темпами при температуре, приближающейся к плавлению кремния, а это больше 1000°C. Нагреть, точно удержать и потом охладить получается сложно. Отсюда и разброс.

На самом деле разброс параметров выходит раз так в 10, а не в 2. Просто после изготовления готовые изделия сортируются по CTR в процессе тестирования. Специально никто не делает CTR 80–160%, когда можно 300–600%. Также специально никто не делает CPU на 2 GHz, когда в соседнем цеху делают 4 GHz. Просто так получается. А что выходит за рамки — идёт обратно в переплавку. Почти чистый кремний тоже денег стоит.

Второй нюанс — уплывание параметров в зависимости от температуры. И тоже в 2 раза. Для устройств, которые работают в офисных условиях, это кажется не так актуально. Но даже они, бывает, разогреваются. А уж то, что работает, например, в автомобиле — и в Якутии, и в Дубаях должно работать без вопросов. Про самолёты и бороздящие просторы вселенной космические корабли вообще молчу — это отдельная тема.

Оттуда же. И это ещё типовая кривая, на счёт неё производитель гарантий никаких не даёт.
Оттуда же. И это ещё типовая кривая, на счёт неё производитель гарантий никаких не даёт.

К чему я это? Для надёжной передачи цифрового сигнала через оптрон необходимо получить надёжные полностью открытое и закрытое состояния выходного транзистора. Иначе вся вся прелесть цифрового сигнала пропадает — логические уровни сигнала перестанут быть логическими, перестанут попадать в отведённые для них рамки.

[ Я тут ещё не учёл уплывание прямого напряжения светодиода от температуры и экземпляра. При питании 5 V это не большая проблема — поставил резистор, и ограничил ток. При 3,3 V уже сказывается. А при 1,8 V — очень важно. Но это уже более глубокое погружение. ]

Итого: чтобы передать сигнал, нужен запас по CTR как минимум в 4 раза, а лучше побольше. То есть, когда светодиод светодиодит, транзистор должен быть глубоко в насыщении. Этот факт ещё пригодится в дальнейшем.

Теперь нюансы про скорость. Что нам говорит описание?

Вроде неплохо. Чтобы, например, раз в месяц снятьпоказания с электросчётчика - запас по скорости колоссальный
Вроде неплохо. Чтобы, например, раз в месяц снять
показания с электросчётчика - запас по скорости колоссальный

80 типовых kHz в аналоговом режиме — да, неплохо. Но этот режим мы не можем нормально использовать по причине разброса CTR. Ладно, смотрим, что в «цифровом» режиме. При таком разбросе задержек, наверное, длительность бита в 30 μs (33 kBit/s) скорее всего прокатит. Но тут опять появляется знакомый персонаж с нюансом...

Здрасьте! Что-то вы меня часто вспоминаете.
Здрасьте! Что-то вы меня часто вспоминаете.

Ic (ток коллектора)=2 mA. Нагрузка 100 Ω. Цифровые устройства у нас в основном сделаны по технологии КМОП, и логические уровни у них задаются напряжением, а не током. И господин Ом нам говорит, что на такой нагрузке сигнал будет 200 mV. А такой сигнал не увидят ни знаменитые фруктово-ягодные, ни овощные устройства. Разве что Ардуина включит свой АЦП и их всех оцифрует.

А если вспомнить про разброс CTR, то этими цифрами из описания мы вообще можем подтереться не можем воспользоваться. На кой их вообще тут пишут? Ладно, посмотрим, что в других режимах. А там вот что:

Это изделие фирмы LiteOn. Примерно то же самое
Это изделие фирмы LiteOn. Примерно то же самое

Не лучше. Чтобы получить сигнал 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

Да даже по картинке видно, что всё становится на свои места. Тот, кто погружался в схемотехнику биполярных транзисторов, я думаю, вспомнит про насыщение, и его главный баг — время рассасывания носителей заряда. Время отключения значительно (на десятки микросекунд) больше времени включения даже у гигагерцовых транзисторов. Я не нашёл удачную прямую ссылку про этот термин, но вот более-менее похожее объяснение процесса, если интересно.

Чтобы победить этот баг, применяли и применяют разные костыли:

  • ТТЛШ — автоматически закрывает транзистор, когда он близок к насыщению. Сейчас редко используется, но когда‑то это был большой прорыв в цифровой микроэлектронике

  • БТИЗ (IGBT) — принцип увеличения скорости похож на ТТЛШ. Маломощный полевой транзистор не даёт насытиться мощному биполярному. Жадина‑говядина такая)

  • ЭСЛ (ECL, PECL) — биполярный транзистор не работает в режиме насыщения, только в отсечке. До сих пор самая скоростная технология цифровых микросхем, применяется не часто, но для полноценных 40–100 Gbit/s — одно из немногих решений.

  • Принудительное удаление лишнего заряда из базы подачей напряжения обратной полярности. Обычно делается с помощью конденсатора, как вот тут, например

Через C5 и C6. Но и T2 тоже помогает
Через C5 и C6. Но и T2 тоже помогает

Уменьшение сопротивления нагрузки, судя по описанию, тоже позволяет отключить насыщенный транзистор быстрее. Но это лишняя потребляемая мощность во включённом состоянии. Как быть? Одна такая цепь уже хочет кушать десяток миллиампер, а что будет, если она не одна? Да ну их, проще уже цифровой изолятор поставить и не грызть мозг.

Но воспользуемся принципами КМОП — поставим комплиментарную пару оптронов. И уберём прожорливую нагрузку. Что будет? Для удобства повторю картинку со схемой.

Ещё раз
Ещё раз

Параметры схемы:

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. Почему без диода быстрее? Потому, что часть тока горящего светодиода утекает через паразитную схему, и фактически на выходе уменьшается ток.

Вот ведь паразит!
Вот ведь паразит!

Вот так выглядит эквивалентная схема входа при передаче логического нуля. Крестиком помечено, что один светодиод не светит. Ещё возможно, я перепутал R1 и R2, но суть не сильно меняет.

При входном питании VCC1 ≥ 5 V применение диода Шоттки не сильно мешает. Если питание ≤ 3,3 V, лучше ставить обычный маломощный быстродействующий диод типа LL4148 с бо́льшим падением напряжения. Если VCC ≈ 2,5 V  — то даже 2 диода последовательно, например BAV99. Я в итоге выбирал по принципу "не множь сущности, в перечне элементов этот уже есть".

Много - не мало, и при большем VCC1 рекомендации для меньших тоже не мешают. Светодиод не засветится, если на нём напряжение в вольтах меньше энергии кванта его света в электрон-вольтах.

Теперь о подопытных: в подробных тестах участвовали 2 пары, 4 штуки. Я модифицировал схему так, чтобы можно было измерить CTR каждого из оптронов  — добавил к ним индивидуальную нагрузку. По сравнению с КДПВ левая половина реальной схемы перевёрнута, чтобы не было инверсии сигнала.

Стрелками указал, куда подключён осциллограф.
Стрелками указал, куда подключён осциллограф.

Входной сигнал не менялся, и минимальная длительность импульса в следующих картинках одинаковая. Но масштаб времени разный  — будьте внимательны. Для начала тест с нагрузкой R3=R4=47 Ω. VD1 отсутствует.

Быстрее, выше, сильнее! (с) В.В Маяковский
Быстрее, выше, сильнее! (с) В.В Маяковский

Отличный результат, кстати - задержка всего 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Ω. И ...

Ожидаемый результат для тех, кто в курсе, или прочитал статью
Ожидаемый результат для тех, кто в курсе, или прочитал статью

Как и ожидалось, включается оптрон всё также быстро. А вот отключается с задержкой больше 20 mks. Выбирай любую из жёлтой и голубой кривой  — UART быстрее 10 kbit/s в таком решении не пройдёт.

Большая часть задержки (помечена красным на осциллограмме)  — то самое время рассасывания, бич импульсных BJT. А если CTR будет на верхней допустимой границе, ожидается ещё хуже.

И на этом минорном аккорде я, пожалуй, закончу повествование.

Ещё раз спасибо за дотошное внимание! Не ожидал, что статья окажется многим интересной. Напишу ещё, но не скоро — надо, чтоб созрело.

Tags:
Hubs:
Total votes 125: ↑124 and ↓1+160
Comments63

Articles