Я создал переключатель уровня, очень похожий на схему по адресу: http://picprojects.org.uk/projects/simpleSIO/ssio.htm , за исключением конденсатора, который я использую 47 нФ, потому что на странице указано:
при высоких скоростях передачи данных конденсатор емкостью 100 нФ может привести к искажению сигнала до такой степени, что он не сможет быть правильно принят, и в этом случае попробуйте заменить конденсатор емкостью 100 нФ на емкость 47 нФ или даже 22 нФ. Если связь строго полудуплексная, конденсатор может вообще не понадобиться.
Но нет упоминания о том, какое значение конденсатора лучше и почему.
Затем я вижу это:
Если хост передает много нулевых (пустых) данных в потоке, конденсатор разрядится, потому что в RS232 нулевые биты передаются как положительное напряжение, а единицы — как отрицательное. Поскольку цепи требуется отрицательное напряжение для зарядки конденсатора, это также вызовет проблемы при передаче данных обратно на хост.
Это говорит о том, что мне нужен конденсатор большего размера, чем во многих других схемах.
В идеале я хочу обмениваться данными в полудуплексном режиме со скоростью 115200 бит/с, потому что позже я буду использовать радиомодули, которые ограничивают мои данные полудуплексом.
Что я должен делать? Должен ли я удалить конденсатор? изменить его значение? или снизить скорость передачи данных? и нет, я не хочу выбрасывать всю свою схему в мусорное ведро только для того, чтобы переделать ее на микросхему max232. У меня таких нет и стоят они недешево.
Вероятно, проще понять вашу схему, если она нарисована немного по-другому:
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Теперь легко увидеть, что выполняются три различные функции.
Верхняя схема должна передавать на интерфейс DB9, используя значения напряжения RS-232. Для этого ему нужны как положительные, так и отрицательные шины напряжения. Но номинально вашему ПОС нужна только положительная шина. Поэтому для создания отрицательного рельса необходимо что-то дополнительное.
Нижняя цепь должна получать от интерфейса DB9 с использованием уровней напряжения RS-232. Но с этим намного проще справиться, и для этой подсхемы нет необходимости в отрицательной шине питания.
Отрицательная шина питания разработана в предположении , что ваш интерфейс DB9 подключен к настоящему устройству RS-232. Обычно значение "MARK" DB9 TxD представляет собой отрицательное напряжение -- где-то между и . (Надеюсь, с величиной не просто соскабливать.) Поскольку DB9 должен время от времени выдавать «MARK» (стоповый бит, по крайней мере, один раз на байт), всегда будет доступ к этому напряжению на мгновение в период каждого символа. Диод позволяет этому отрицательному напряжению проходить и заряжать к отрицательному напряжению. Затем это может быть использовано первой схемой (цепью PIC TxD) для получения допустимых значений отрицательного напряжения, не заставляя вас добавлять источник питания отрицательного напряжения к вашей PIC. Вместо этого он «крадет» отрицательное питание из соединения DB9.
Это серьезный «обман». И это не может всегда хорошо работать во всех обстоятельствах. Само содержание данных, которые вы получаете на PIC, влияет на то, насколько хорошо они работают, когда PIC передает. Вот почему здесь есть своего рода балансировка. Если конденсатор слишком велик, то для его зарядки потребуется время, а MARK стопового бита (и/или некоторых значений MARK данных) может быть недостаточно для достаточно быстрой зарядки. Если конденсатор слишком мал, то он слишком быстро разряжается, поскольку PIC передает MARKs на DB9.
Нет никакой гарантии, что эта схема всегда будет работать при любых обстоятельствах. Драйвер DB9 TxD ожидает увидеть загрузку между и , обслуживание памяти. А не нагрузку конденсатора через диод! Схема PIC RxD уже загружает все как есть. Таким образом, схема делает некоторые серьезные предположения о выходном импедансе управляющей схемы DB9 TxD.
Этот тип схемы безопаснее использовать в ситуациях, когда вы заранее знаете продолжительность и интервалы между задержками между передачами, идущими от DB9 к вам. Это связано с тем, что в течение времени между передачами линия DB9 TxD будет находиться в состоянии MARK и питать ваш конденсатор. Чем больше процент времени, в течение которого линия DB9 TxD остается в состоянии MARK, а также то, что задержки между ними не слишком велики, тем больше вы уверены, что конденсатор заряжен достаточно хорошо для передачи в другое направление. И это также может позволить вам использовать конденсаторы большего размера, которые затем позволят вам передавать данные в другом направлении в течение более длительных периодов (или с более нулевым содержимым битов).
Схема представляет собой хак, который я впервые увидел в 1970-х годах, когда микроконтроллеры впервые начали распространяться среди широкой публики, а RS-232 широко использовался. У нас было ровно два общих чипа для RS-232, MC1488 и MC1489 (Джим Томпсон виноват в этих горящих ГОРЯЧИХ мощниках — см.: Analog Innovations (сейчас на машине WayBack)) и для них требовались отдельные шины питания. Все это стоит денег, места, времени и так далее. Таким образом, такой взлом был почти «легким делом», поскольку скорость передачи в то время была гораздо чаще около 300 бит/с и почти никогда не превышала 9600 бит/с. (Связь на скорости 9600 бит/с была в значительной степени зарезервирована для очень дорогих телефонных аппаратов Bell, к которым мало кто из нас имел доступ.) Это потому, что мы обычно использовали RS-232 для связи между терминалом (ASR-33, Diablo 1600 и т. д.) и модем. Не между двумя соседними микро. Скорость RS-232 быстро росла по мере того, как использовались более новые и дешевые «стеклянные терминалы» (например, комплект ADM-3A, который я построил), где более высокие скорости были полезны. Но даже тогда,
Однако в начале-середине 1980-х скорости действительно быстро росли. И хак застрял. Но я думаю, что вы довольно сильно порете слабую лошадь, и ее кодовая дата уже давно просрочена. Есть слишком много других хороших вариантов, которых у нас НЕ было тогда. В то время тарифы были достаточно низкими (в основном), а вариантов было мало (без дешевых переключателей, без MAX232 и т. д.), а требуемая мощность и рассеиваемая мощность были настолько большими, что время от времени это можно было оправдать. Но сегодня скорости намного выше, а количество действительно хороших вариантов настолько больше, что я больше не могу придумать веской причины для использования этой древней техники.
Заключительные заметки. Еще один трюк во всем этом заключается в использовании, если у вас есть к нему доступ, линии вывода сигнала RS-232 на DB9, отличной от TxD. Например, есть четыре общих сигнала, называемых DTR, DSR, RTS и CTS. (Есть еще две, RI и DCD, но они больше требуются модему и менее вероятны.) Если вы можете определить, являются ли какие-либо из этих линий выходами на вашем интерфейсе RS-232, и можете убедиться, состояние MARK, тогда вы можете использовать один из них в качестве отрицательной шины (или использовать их для зарядки этого конденсатора). Так что это может быть еще одним вариантом для рассмотрения.
ПлазмаHH
Транзистор
пользователь152879
Янка