Подключение нескольких MCU по USART

Блог им. Nemo
Мужно подключить несколько ATmega88А(слейвов) к STM32F407 (мастер) по USART как Тут.
Решил сделать оптическую развязку:

Даная схеме не инвертирует входной сигнал. Но не хочет работать быстрее 4800. Диоды для защиты выхода микроконтроллера от сигнала с активного мк.

Слейв после приёма (через аналогичную развязку) принимает сообщение(адрес девайса), и «отвечает» мастеру тем же адресом. к точке «MASTER_UASRT_RX» подключен логический анализатор. В каждый момент активен только 1 мк. Когда включён 1 модуль(по отдельности работает каждый) всё работает, когда 2, логический анализатор ничего не фиксирует на линии. Мне нужно подключить таким способом 5 модулей, а тут два не работает.
Не могу понять в чем проблема…

19 комментариев

avatar
А фиксируте ли лог.анализатор что-нибудь на затворе/стоке?
avatar
пока не пробовал. Есть подозрение что когда нет передачи на линии «лог1,» и другой слейв не может просадить линию. Также попробую отключать пин TX на слейвах, когда они не передают.
avatar
А почему полевой транзистор? По идее, если поставить обычный bjt — должно работать быстрее.
avatar
У меня под руками были MOSFET, и падение у них source — drain минимальное, а не как в биполярных.

Почему Вы думаете что bjt будет работать быстрее?
avatar
эм-мм… ну, а как же емкость gate-source?..

P.S. Да, у банального BC847 напряжение насыщения коллектор-эмиттер составляет 200 мВ (типичное значение) при токе коллектора 100 мА. Хотя, конечно, неизвестно, что за оптопара стоИт.
P.P.S. Кстати, я конечно, могу ошибаться, но включение транзистора оптопары как эмиттерного повторителя — не очень хорошее решение.
avatar
эм-мм… ну, а как же емкость gate-source?..
Да Вы правы.

Оптопара pc817.
P.P.S. Кстати, я конечно, могу ошибаться, но включение транзистора оптопары как эмиттерного повторителя — не очень хорошее решение.
Мне нужно получить обычний сигнал, а не инвертированый. Но дополнительный транзистор ставить не хотелось.
avatar
Мне нужно получить обычний сигнал, а не инвертированый
А кто мешает поставить на управление led-ом pnp транзистор?
avatar
Пока шел домой с работы домой так и подумал, заходжу на сайт, вижу Вы так и написали: ) Спасибо!)
avatar
Скорее-всего, просто слишком большой номинал R6. Попробуй убрать R7 и R6 уменьшить до 1к
Комментарий отредактирован 2014-12-30 09:00:13 пользователем bsvi
avatar
R7 для защиты порта, когда заряджаеться затвор. Спасибо, попробую.
avatar
Если используется транзистор с мелкой емкостью затвора, типа bss123, ему не нужна никакая защита. Тепло, которое при этом выделяется в мк посчитать довольно просто. P=2*заряд затвора*частоту*напряжение. К примеру, для bss123 при 38400: P=2*1.8e-9*38400*5 = 138мкВт, что принебрежительно мало.
avatar
По традиции, «Специально зарегистрировался для этой темы».
Схема из картинки не корректная.
Логический уровень UART в неактивном состоянии '1'. Следовательно при каскадировании двух и более устройств затвор транзистора всегда будет подтянут к Gnd через R6 (транзистор закрыт).
При работе всего одного устройства активный '0' с выхода МК будет разрывать цепь затвора (диод не даст затвору разрядится через вывод МК на землю". Затвор будет медленно разряжаться через R6. Этим и обусловлена низкая скорость передачи.
Предлагаю такой вариант.

Исправил оригинальную картинку в Paint в рабочем перерыве. Перепроверьте, мог где-то что-то не увидеть.
Изменил полярность диодов, добавил резистор в затворную цепь. R7 ИМХО лишний (не такой уже там и мощный транзистор). В коллектор оптрона можно поставить каскад с ОБ, как советовали ранее. Но, думаю, скорости до 115200 и так потянет без проблем.
PS давно хотел зарегиться, повода не было :D
avatar
Спасибо!!! Если я правильно понял, 1K — можно увеличить или уменьшить, в зависимости от длины линий мейжду МК.

Можно выкинуть со схеми R6?, так как при «0» на ТХ ток будет течь Vсс
— 1K — D5 — земля
Комментарий отредактирован 2015-01-30 16:05:58 пользователем Nemo
avatar
Номинал резистора 1к можно варьировать. Он с одной стороны ограничивает ток, втекающий через диод в МК при '0' на выводе, с другой стороны определяет скорость заряда затворной ёмкости транзистора.

Нижний резистор R6 можно (и нужно) выбросить. Он лишний.
avatar
Сегодня тестировал. Всё работает, только максимальная скорость 4800. Думаю нужна другая оптопара, и биполярный транзистор, но пока 4800 хватает.
avatar
Странно, конечно, всё это. А какой полевик стоит? Сдаётся мне, дело в нём. Либо затворная ёмкость велика (мощный и/или древний транзистор), либо напряжение на затворе ниже порогового и полевик работает в линейном режиме. Vcc типовое 3.3 В?
Если есть осциллограф было бы неплохо увидеть формы напряжений с затвора Q2, анода и эмиттера оптрона.
Я через не самые быстрые оптроны передавал сигнал до 38 кбит/с. 4.8 кбит — вообще не серьёзно.
avatar
оптопара PC817, не знаю какой полевик, выросил упаковку (он SMD). У меня два блока, ТХ и RX. на рисунке RX (мастер принимает ) — тут ISO 5V — VCC — 3V. На другом модуле с точностью до наоборот. Постараюсь добавить осцилограммы.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.