Нюансы оптронной развязки, борьба с её недостатками и интересный на мой взгляд костыль: как разогнать скорость копеечной опторазвязки и наполучать других бонусов. Я не силён в рекламе, поэтому на месте КДПВ будет сразу тема статьи.
Я - инженер-электронщик. Или схемотехник. Или, как это только не называют на биржах труда - электроник, железячник, hardware engineer. В общем, кую железо, и не могу не куя). Интерес к этой профессии мне уже много лет подогревает возможность в каждом проекте сделать хоть маленькое, но открытие. Я думаю, что больше половины Хабра может сказать о себе то же самое, поэтому и я тоже тут застрял.
Скорее всего каждый инженер-схемотехник рано или поздно сталкивается с необходимостью гальванической развязки сигналов. Избавиться от помех по общему проводу или питанию, не сжечь интерфейс при выравнивании потенциалов, не взбодрить пользователя фазным напряжением. Логично, что и способов развязки электрических сигналов придумали достаточно много: реле, трансформаторы, ИК, радио, оптоволокно, ну и конечно разнообразные цифровые изоляторы, клоны или не клоны знаменитых ADUMов.
Обычный транзисторный оптрон, типа PC817 или его ещё большее количество клонов - наиболее дешёвое решение для развязки. Это довольно странно с технологической точки зрения. Ведь оптрон, в отличии от большинства других микроэлектронных изделий, содержит два кристалла, а не один. На подложках для светодиодов (GaAs, InP) транзисторы делать получается дорого. А самый ходовой материал микроэлектроники - кремний - как назло, не светится. Тем не менее за счёт массовости стоимость такого изделия оказывается в районе 2 ₽.
Не 200, как цифровой изолятор от заслуженных мэтров микроэлектроники. И не 20, как современные китайские изделия. А всего 2 (два прописью).
Дисклеймер: [ Я сейчас говорю не про разовые сборки DIY, а про серийное изготовление. Где с ростом партии идёт борьба за каждый занюханный резистор. Для разовых изделий, конечно, стоимость разработки начинает играть значительную роль, и лучше не опускаться до нюансов дискретной схемотехники, а взять то, что лежит на поверхности, сэкономив время. Но если вдруг эта статья поможет хотя-бы 3-4 разработчикам применить более оптимальное решение в своих 9-12 проектах, польза будет налицо. ]
Итак, не всё то - золото, что блестит. И не всё то - г.., что лежит в сторонке и не отсвечивает. Но за кажущуюся простоту приходится платить по крайней мере внимательным прочтением описаний. А вот тут, как говорил один известный персонаж, есть нюансы.
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, то этими цифрами из описания мы вообще можем подтереться не можем воспользоваться. На кой их вообще тут пишут? Ладно, посмотрим, что в других режимах. А там вот что:
Не лучше. Чтобы получить сигнал 3 V (помним про разброс CTR), придётся поставить нагрузку 3 V / 2 mA / 4 = 6 kΩ. И уже цифра даже типовой задержки вырастает до 90 μs. А это уже не позволит нормально "гонять" данные даже на 9600 bit/s. Да, мы ещё можем поднять ток светодиода, но ведь хочется его подключить к обычному цифровому выходу. И часто каналов опторазвязки, как в ПЛК, например, может быть сильно больше одного - нарвёмся на ограничение общего тока через GPIO. И тут уже оптрон за 2 ₽ действительно превращается в кусок оптрон за 2 ₽.
Но это тоже ещё цветочки. Взгляните на предыдущую картинку повнимательнее. На графике написано условие теста Vce=2V. Не VCC. То есть, в этом тесте выходной транзистор не насыщается! Тест искусственный, и в таком режиме оптрон без танцев с бубном не годится для передачи дискретного сигнала. Так что и с этими цифрами нам придётся сделать то же, что и с предыдущими.
А вот в условиях следующего теста выходной транзистор насыщается. И логические уровни уже будут действительно логическими с точки зрения КМОП.
Да даже по картинке видно, что всё становится на свои места. Тот, кто погружался в схемотехнику биполярных транзисторов, я думаю, вспомнит про насыщение, и его главный баг - время рассасывания носителей заряда. Время отключения значительно (на десятки микросекунд) больше времени включения даже у гигагерцовых транзисторов. Я не нашёл удачную прямую ссылку про этот термин, но вот более-менее похожее объяснение процесса, если интересно.
Чтобы победить этот баг, применяли и применяют разные костыли:
-
ТТЛШ - автоматически закрывает транзистор, когда он близок к насыщению. Сейчас редко используется, но когда-то это был большой прорыв в цифровой микроэлектронике
-
БТИЗ (IGBT) - принцип увеличения скорости похож на ТТЛШ. Маломощный полевой транзистор не даёт насытиться мощному биполярному. Жадина-говядина такая)
-
ЭСЛ (ECL, PECL) - биполярный транзистор не работает в режиме насыщения, только в отсечке. До сих пор самая скоростная технология цифровых микросхем, применяется не часто, но для полноценных 40-100 Gbit/s - одно из немногих решений.
-
Принудительное удаление лишнего заряда из базы подачей напряжения обратной полярности. Обычно делается с помощью конденсатора, как вот тут, например
Уменьшение сопротивления нагрузки, судя по описанию, тоже позволяет отключить насыщенный транзистор быстрее. Но это лишняя потребляемая мощность во включённом состоянии. Как быть? Одна такая цепь уже хочет кушать десяток миллиампер, а что будет, если она не одна? Да ну их, проще уже цифровой изолятор поставить и не грызть
Но воспользуемся принципами КМОП - поставим комплиментарную пару оптронов. И уберём прожорливую нагрузку. Что будет? Для удобства повторю картинку со схемой.
Параметры схемы:
R1 = R2 = 470 Ω для скорости до 50 kbit/s. 220 Ω, если хочется разогнать до 100.
VD1 - BAT54J
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 и высокоимпедансное состояние. Бывают случаи, когда это нужно
Если любителям или профессионалам схемотехники статья зайдёт, буду писать ещё. Читайте даташиты, и пребудет с вами сила! Всем - добра!
Автор: Александр Козлов