Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
"Мы любознательны, но не любопытны."
Недавно, при отладке одного устройства, внезапно выяснилось, что RS485 не хочет работать (вернее, работает через раз), если два устройства не связаны землей, от слова совсем. Вообще-то данный факт не является откровением и я в своих кабелях земли протаскиваю, но в данном конкретном случае имел место обрыв провода. Но после того, как дефект был обнаружен и устранен, внезапно возник вопрос - а как вообще устроен приемник сигналов, если в соответствии со стандартом он должен правильно обрабатывать сигналы, имеющие общее напряжение (Vcm) от -7В до 12В, питаясь при этом от 3.3В (ну или от 5В) относительно земли. Да, я знаю о существовании операционных усилителей (а компаратор - тот же ОУ), способных обрабатывать сигналы "rail-to-rail" (импорто-замещенное обозначение "от шины до шины" мне не нравится, можете пожаловаться кому следует), но в данном случае входные сигналы откровенно за шины (землю и питание) выходят.
Если Вам тоже интересно, Вам сюда.
Вариант с формированием внутренних значительных напряжений питания (в том числе отрицательного) оставим на крайний случай, это будет очень дорого. Сначала попробуем преобразовать входные сигналы в приемлемый диапазон (глубоко внутри значений от земли до питания) простыми средствами. Варианты с ограничением входного напряжения нам явно не подходят, поскольку мы будем сравнивать преобразованные сигналы между собой, значит проектируем делитель со сдвигом, рисунок 1.
Мы имеем схему с тремя изменяемыми параметрами (два номинала резисторов и напряжение смещения), а ограничений только два - на краях диапазона, причем мы должны их задать сами. Примем минимальное обрабатываемое напряжение за 0.2В, а максимальное за 2.0В. Можно составить 2 уравнения с 2 неизвестными (отношение резисторов и смещение) и честно решить эту систему, но можно пойти легким путем. Если входному диапазону изменения напряжения в 12В-(-7В)=19В соответствует выходной диапазон изменения напряжения в 2.0-0.2=1.8В, то коэффициент передачи (коэффициент деления на резистивной схеме) составит k=1.8/19~1/10. Отсюда соотношение резисторов получается автоматом r1=(k-1)*r2=9*r2. Тогда из левой точки диапазона со входным значением -7В и требуемым значением 0.2В легко найти
Us=(0.2+7/10)*10/9=(0.2*10+7)/9=9/9=1.0В.
Зададимся r1=10кОм и можем расставить на схеме 1 номиналы. Пнп: задаемся входным резистором, исходя из требований стандарта к входному сопротивлению приемника.
Вообще-то, эта схема не вполне рабочая, поскольку получение напряжения смещения осталось за скобками. Конечно, можно поставить ограничитель напряжения и сделать смещение из питания, тогда потребуется стабилитрон именно на нужное напряжение, но есть способ намного интереснее. Добавим к схеме на рисунке 1 еще один резистор и воспользуемся принципом суперпозиции (теорема Тевенина, если память мне не изменяет, проверять в Гугле принципиально не буду, пусть мне будет стыдно, если ошибусь), тогда
U=UiR2'/(r1+R2')+UpR3'/(r2+R3'), где r2'=r2||r3, r3'=r1||r3.
Пнп: я честно попытался переписать это в виде формулы, но совершенно дикие отступы сверху и снизу меня огорчили, так что формулы остались в текстовом виде.
Тогда при соответствующих значениях r2 и r3 получим требуемое значение напряжения смещения (второй член суммы) в 1В (хотя следует твердо понимать, что это не 1В, а питание напряжением 3.3В, деленное на 3.3). Считая, что r1>>r3, легко найти соотношение резисторов k2=r2/r3, а потом составить и решить уравнение
k*r1=r2||r3=k2*r3||r3=k2*r3*r3/(k2*r3+r3)=k2*r3/(k2+1),
откуда r3=(r1*k)(k2+1)/k2 и можно расставить номиналы.
Пнп: воспользуемся одним из правил Кирхгофа (равенством суммы токов нулю), что приводит к уравнению (U1-Ux)/r1+(U2-Ux)/r2+(U3-Ux0)/r3=0, которое после несложных преобразований, в предположении r2=r3 и U3=0, превратится в простое выражение
Ux=U1*r2/(r2+2*r1)+U2*r1/(r2+2*r1)
или, при r1>>r2 Ux=1/2*U1*r2/r1+1/2*U2.
Пнп: все-таки не удержался, посмотрел, теорема Тевенина немного о другом, но тоже где-то рядом, так что оставлю в тексте, как было.
На этом следовало бы закончить, но, как известно, "любопытство погубило кошку". Возникает желание проверить свое решения и посмотреть, а как входной каскад реализован в выпускаемых серийно микросхемах приемников RS485. После ряда безуспешных попыток (ну не желают определенные производители открывать свои секреты) я все-таки нашел схему входного каскада в описании микросхемы SN65LBC108A от Texas Instruments - смотри рисунок 3 (спасибо, коллеги, я всегда в Вас верил, хотя историю с Luminary "не забудем, не простим").
Смотрим на схему и видим, что законы электроники (вообще-то, электротехники) работают точно так же в штате Техас, как и вокруг меня, и схема вполне соответствует ожидаемой. Если не обращать внимание на защитные диоды на входе, растяжку линий для обеспечения гарантированного уровня при простое передатчика (100кОм) и еще один защитный диод вместе с загадочным кружочком (эмиттерным повторителем?) на выходе (все лишнее обведено красным), то в сухом остатке будут все те же три резистора, хотя и немного других номиналов. В общем, "здесь зрители начинают аплодировать ...аплодируют ... аплодируют .... аплодируют ... кончили аплодировать".
Обратим внимание на один немаловажный аспект - хотя абсолютные значение резисторов не столь важны и мы можем себе позволить значительные (единицы процентов) отклонения в коэффициенте передачи, расхождение этих параметров в двух каналах (у нас ведь два провода, Вы не забыли, воут?) совершенно недопустимо. Дело в том, что мы должны выделить разницу в 200 мВ между входами, в условиях присутствия общего напряжения от -7 до +12В. Соответственно, общее напряжение должно быть подавлено таким образом, чтобы не "перекосить" разницу. Чтобы изменение общего напряжения на 20В на входе не перекосило разницу в 200мВ, нам нужно подавление общего напряжения более, чем в 100 раз или на 40 дБ. А последнее требование означает, что резисторы в обоих делителях должны иметь точность в 0.5% минимум, лучше 0.1%. Я никоим образом не специалист в производстве микросхем, но, как мне кажется, задача весьма нетривиальная. Пнп: вообще то, задача о точности коэффициента передачи резистивного делителя интересна сама по себе, смотри опрос в конце поста.
Возвращаемся к рассматриваемому вопросу и выясняем, почему зрители внезапно перестали аплодировать - дело в том, что это была не первая схема входного каскада приемника RS485, которую я обнаружил, и даже не вторая. Второй была схема на рисунке 4 из микросхемы SN75179B, и вот она коренным образом отличается от моей и от первой - она содержит в себе 2 транзистора, 2 диода и 5 резисторов.
Вариант ответа, что разработчикам TI платят за количество транзисторов, отметаем с негодованием, как недостойный, и, тем не менее, видим то, что видим. Ладно, идем на любимый сайт falstad.com, рисуем схему и запускаем моделирование. Видим, в общем то, ожидаемую картину - входной сигнал ослабляется в 16 раз во всем диапазоне за исключением небольшой (0.9В) зоны вблизи напряжения смещения 2.5В, где ослабление падает до 4 - смотри рисунок 5.
Зачем сделано такое схемное решение, лично для меня остается загадкой и в документации фирмы нет ни малейшего намека на причину. Пнп: если подать на вход схемы треугольный сигнал, то осциллограмма выходного сигнала будет представлять собой переходную характеристику в соответствующем масштабе.
На самом деле все еще хуже, потому что первая схема, которую я увидел, представлена на рисунке 6 и она имеется в микросхеме AM26LV32.
Исследуем ее аналогичным способом и получаем следующую переходную характеристику, из которой видно, что схема работает, как делитель с коэффициентом 1.5/2/(1.5/2+15)~1/21 и смещением 0.6, но это до точки закрывания верхнего транзистора (входное напряжение около 9В), где она превращается в делитель с коэффициентом 1.5/(1.5+15)=1/11 и смещением практически 0. Очень странное решение, особенно если учесть, что рабочий диапазон входных напряжения установлен документацией на эту микросхему в -0.5В : 5.5В (что, на секундочку, не соответствует стандарту) и указанное превышение над 9 вольтами нас никак не должно волновать.
Но модели моделями, а давайте теоретически разберемся в работе данной схемы. Нижний транзистор в режиме насыщения (это гипотеза), верхний в активном режиме (еще одна), диоды смещены в прямом направлении. Тогда Ub2=0.6В, Ub1=ub2+2*Udf =1.8В, Ib1<<Ib2 => Ir2=0.6/7.2к~0.1мА, Ir1=(3.3-1.8)/7.2к~0/2мА, ib2=Ir1-Ir2=0.1мА, Ie1=Ik2=(Ue1-uK2)/(r3+r4)=1.2/3~0.4mA, Ik2<<b2*Ib2- гипотезы подтверждены. Тогда Uk2~0.1, Ue1=Ub1-0.6~1.2В и верхний транзистор закроется, когда напряжение на его эмитере превзойдет 1.2В, а это случится при входном напряжении 1.2(15+1.5/2)/(1.5/2)=1.2*(2*15+1.5)/1.5=1.2/1.5*31=1.2*31~23В. Как то не соответствует наблюдениям на модели, смотрим на нее внимательнее и обнаруживаем, что падения на диодах составляют не ожидаемые 0.6В, а всего лишь по 0.35В в силу очень малых токов, через них протекающих, отчего и получается расхождение с расчетом. Маловероятно, чтобы такой тонкий эффект лежал в основе схемы, скорее все таки прямое напряжение на диодах в реальном изделии составит 0.6 и в пределах диапазона допустимых входных напряжений излома передаточной характеристики не будет.
Тогда мы можем сделать предположения о назначение верхнего транзистора с диодами - сформировать опорное напряжение, слабо зависящее от питания, хотя необходимость такого решения от меня ускользает. Непонятным остается и наличие нижнего транзистора, которое приводит к аналогичному изменению коэффициента передачи для напряжений, меньших -9В, а это напряжение явно вне рабочего диапазона.
Но со схемой на рисунке 5 данный подход не проходит - напряжения на коллекторах верхнего и нижнего транзистора от питания явно зависят, так то наличие излома характеристики посредине нельзя объяснить вообще ничем, поэтому лично я остаюсь в тягостном недоумении. Если кто может его развеять, прошу в комментарии.
Единственное, что внушает оптимизм - это то, что "правильная" схема с тремя резисторами применена в последней по времени из трех представленных микросхем (документация датирована 1990, 1995 и 2000 годами соответственно) и просто разработчики TI нащупали методом проб и ошибок верное решение, которое автором поста было придумано сразу. На этой радостной ноте я, пожалуй, и закончу обзор темы.