Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Гальваническая развязка RS 485
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
alex2k3
Здравствуйте.
Подскажите как можно гальванически развязать линию связи и трансивер RS 485 или развязкулучше делать через оптопару после трансивера? Нашел такую микросхему MAX3535EEWI (даташит). В рознице порядка 200 рублей, не считая обвязки. Можноли достичь того же результата за меньшие деньги?
Спасибо всем откликнувшимся.
man with no name
Можно использовать MAX1480 - не дешевле, но отпадает необходимость в трансформаторе.

Дешевле наверно может получиться лишь с простеньким DC-DC преобразователем и ADUM1301 (кажется, она с 2 tx, 1 rx?). Но это надо считать smile.gif
rezident
Ну MAX1480 это классическое и многократно проверенное временем решение. Но не самое дешевое. Если предполагается "обычный" коммуникационный RS-485 со скоростями до 115200 (а не какой-то монстроидально-специфический на десяток МГц) и с изоляцией до 500В, то у нас самый дешевый вариант получается с использованием нерегулируемого 1Вт DC/DC (типа RE-0505S, AM1S-0505S и подобных) + 3 шт. H11L1(S) для гальваноразвязки какого-нибудь драйвера типа ADM485. С применением ADUM1301 получается подороже, т.к. ADUM1301 дороже 3 шт. H11L1 да еще для него уже нужен DC/DC с нормальной стабилизацией выходного напряжения. Есть еще варианты гальваноразвязанного RS485 типа ADM2482E, требующий лишь внешнего трансформатора.
alex2k3
Правильно ли я понял, что у MAX1480 в корпусе микросхемы так же есть гальваническая развязка по питанию. Во всех остальных случаях и производится внешними элементами? И еще вопрос: какие есть решения для автоматического определения направления передачи данных без применения контроллера?
MrYuran
Цитата(alex2k3 @ Jul 25 2008, 09:10) *
какие есть решения для автоматического определения направления передачи данных без применения контроллера?

У макса в даташитах есть схемы с автоопределением направления. Там по-моему нога направления тупо садится на DO, но это наверно не все драйвера поддерживают.
Вот, например
jasper
Есть еще хорошие штуки у Texas Instruments iso3080, iso3082, iso3086, iso3088.
Стоят дешевле, чем алогичные изделия Analog Devices серии ADUM, только жрут поболее.

Цитата
И еще вопрос: какие есть решения для автоматического определения направления передачи данных без применения контроллера?

Ставится ждущий мультивибратор, который переключает направление при поступлении данных на передачу. Это решение подходит только для строго определенных скоростей передачи, естественно.
rezident
Цитата(alex2k3 @ Jul 25 2008, 11:10) *
Правильно ли я понял, что у MAX1480 в корпусе микросхемы так же есть гальваническая развязка по питанию. Во всех остальных случаях и производится внешними элементами?
Да, верно. MAX1480 это интегральная схема, содержащая внутри как (опто)изоляцию, так и питание изолированной части (драйвера).
Цитата(alex2k3 @ Jul 25 2008, 11:10) *
И еще вопрос: какие есть решения для автоматического определения направления передачи данных без применения контроллера?
Самый простой способ это перезапускаемый одновибратор, (пере)запускаемый по перепаду 1->0 сигнала передатчика. Длительность импульса одновибратора настраивается на время передачи одного символа. Но время передачи символа зависит от скорости передачи, в этом основной недостаток данного способа. Другие способы используют буферизацию с вычислением скорости передачи и/или "заточены" на конкретные протоколы связи.
Владимир
Цитата(man with no name @ Jul 25 2008, 01:58) *
Можно использовать MAX1480 - не дешевле, но отпадает необходимость в трансформаторе.

Дешевле наверно может получиться лишь с простеньким DC-DC преобразователем и ADUM1301 (кажется, она с 2 tx, 1 rx?). Но это надо считать smile.gif


A вот пример из схемы beer.gif
alex2k3
Спасибо всем ответившим!
Скорее всегу буду применять
"с использованием нерегулируемого 1Вт DC/DC (типа RE-0505S, AM1S-0505S и подобных) + 3 шт. H11L1(S) для гальваноразвязки какого-нибудь драйвера типа ADM485"
Это самый дешевый способ из всех предложеных.
Над направлением передачи еще подумаю
man with no name
Если завести сигнал ~drive enable (~DE) на data input (DI), притом сделать так на всех устройствах сети, то вы теряете в помехозащищённости (т.к. уровень логической единицы формируется подтягивающими резисторами) и скорости (изза ёмкостей входов), зато получаете защиту передатчиков от случайной встречной передачи (одновременной передачи разных сигналов несколькими передатчиками).
Если для увеличния скорости вы попытаетесь сильно задрать проводимость подтягивающих резисторов, наткнётесь на интересный глюк: так как фронты сигнала не вертикальные, то вы сдвинете сигнал в сторону логической единицы (сдвиг трапеции dataP-dataN вверх). И при этом у вас длительность единичного бита станет больше, чем длительность нулевого - новый источник помех.
А вобще, такая защита нафиг не нужна, т.к. можно просто ставить последовательно к выходу резисторы ом по 30-50.

UPD: да, но это всё касается только варианта с наличием RTS. Если его нет, то, пожалуй, варианта для управления передачей, прощё, чем завести ~DI на DE мне в голову не приходит.
Mike18
Цитата(rezident @ Jul 25 2008, 09:59) *
Самый простой способ это перезапускаемый одновибратор, (пере)запускаемый по перепаду 1->0 сигнала передатчика. Длительность импульса одновибратора настраивается на время передачи одного символа. Но время передачи символа зависит от скорости передачи, в этом основной недостаток данного способа. Другие способы используют буферизацию с вычислением скорости передачи и/или "заточены" на конкретные протоколы связи.
Попадался не совсем "честный" smile.gif , но вполне работоспособный способ с "автопереключением". Линия "DE" удерживается в состоянии "1" во время формирования "0" передатчиком, перепад "0->1" запускает одновибратор, который задерживает перевод драйвера в режим приёма на время, достаточное для формирования в кабельной части динамического перехода "0->1". Это время определяется "шириной" одного информационного бита на максимальной используемой скорости.

То есть, "0" передатчика переводит и удерживает драйвер в режиме передачи, переход "0->1" обеспечивает необходимую динамику перехода "0->1" в кабельной части, а следующие за этим переходом в передатчике "1" обеспечиваются в кабельной части подтягивающими резисторами.
Владимир
Цитата(Mike18 @ Jul 26 2008, 05:38) *
Попадался не совсем "честный" smile.gif , но вполне работоспособный способ с "автопереключением". Линия "DE" удерживается в состоянии "1" во время формирования "0" передатчиком, перепад "0->1" запускает одновибратор, который задерживает перевод драйвера в режим приёма на время, достаточное для формирования в кабельной части динамического перехода "0->1". Это время определяется "шириной" одного информационного бита на максимальной используемой скорости.

То есть, "0" передатчика переводит и удерживает драйвер в режиме передачи, переход "0->1" обеспечивает необходимую динамику перехода "0->1" в кабельной части, а следующие за этим переходом в передатчике "1" обеспечиваются в кабельной части подтягивающими резисторами.


Вот только задержка не на бит а на байт
_Pasha
Цитата(alex2k3 @ Jul 25 2008, 08:10) *
И еще вопрос: какие есть решения для автоматического определения направления передачи данных без применения контроллера?

Хочу заточить под это PIC10. С учетом стоим. платы может выйти не дороже мльтивибратора с обвязкой, а функциональность будет далеко не кривая.
rezident
Цитата(Mike18 @ Jul 26 2008, 08:38) *
Попадался не совсем "честный" smile.gif , но вполне работоспособный способ с "автопереключением". Линия "DE" удерживается в состоянии "1" во время формирования "0" передатчиком, перепад "0->1" запускает одновибратор, который задерживает перевод драйвера в режим приёма на время, достаточное для формирования в кабельной части динамического перехода "0->1". Это время определяется "шириной" одного информационного бита на максимальной используемой скорости.

То есть, "0" передатчика переводит и удерживает драйвер в режиме передачи, переход "0->1" обеспечивает необходимую динамику перехода "0->1" в кабельной части, а следующие за этим переходом в передатчике "1" обеспечиваются в кабельной части подтягивающими резисторами.

ИМХО это шаманство для настольного варианта. Я когда разрабатывал свой конвертор-репитер, то вводил еще и обязательную задержку битового потока во время переключения драйвера на передачу. Т.е. битовый поток с полезным сигналом на выход драйвера поступал к тому моменту, когда в линии уже все переходные процессы "устаканились". И выключался передатчик драйвера также с небольшой задержкой. Это нужно было для RTU-ных протоколов, где начало/конец пакета определяется "паузой тишины". Работает даже и без подтяжек.
Mike18
Цитата(Владимир @ Jul 26 2008, 09:20) *
Вот только задержка не на бит а на байт
В описанном варианте именно на бит, или даже на его часть в случае работы на меньших скоростях. То есть схема вполне пригодна для "настольного варианта" smile.gif работы с автопереключением на разных скоростях и минимальной (нулевой) задержкой готовности к приёму после передачи стопового бита.
Цитата(rezident @ Jul 26 2008, 14:57) *
ИМХО это шаманство для настольного варианта.
Согласен.
Цитата
Я когда разрабатывал свой конвертор-репитер, то вводил еще и обязательную задержку битового потока во время переключения драйвера на передачу. Т.е. битовый поток с полезным сигналом на выход драйвера поступал к тому моменту, когда в линии уже все переходные процессы "устаканились". И выключался передатчик драйвера также с небольшой задержкой. Это нужно было для RTU-ных протоколов, где начало/конец пакета определяется "паузой тишины". Работает даже и без подтяжек.
И это правильно! Вот только работа без подтяжек, IMHO, это тоже шаманство smile.gif , предполагающее, что к сети будут подключаться только такие драйверы, которые это отсутствие допускают.
rezident
Цитата(Mike18 @ Jul 26 2008, 18:10) *
будут подключаться только такие драйверы, которые это отсутствие допускают.
Что бы это значило? 07.gif Не понял cranky.gif В стандарте RS485 (EIA/TIA-485-A) никаких "растяжек" вообще не предусмотрено. Терминальные резисторы для симметричной линии - да, есть в стандарте. А растяжек - нету. Да если честно и без них работает, с разбором ошибок на уровне транспортного протокола.
sensor_ua
Цитата
В стандарте RS485 (EIA/TIA-485-A)

не поделитесь?
rezident
Цитата(sensor_ua @ Jul 26 2008, 19:45) *
не поделитесь?
К сожалению, нету sad.gif Эти стандарты за деньги распространяются. Я пользуюсь лишь разрозненными источниками с фрагментами и выдержками из этих стандартов. Типа такого вот Application Note http://www.national.com/an/AN/AN-216.pdf
sensor_ua
В аппликухах растяжки-то встречаются
http://www.national.com/an/AN/AN-903.pdf
http://www.national.com/an/AN/AN-1057.pdf
http://www.bb-europe.com/bb-euro/literature/485appnote.pdf (здесь B притянут на +, А на общий )
А вот стандарт хотелось бы повстречать
MrYuran
Цитата(sensor_ua @ Jul 26 2008, 20:02) *
В аппликухах растяжки-то встречаются

Зависит от драйвера.
Некоторые максы не работают нормально с СОМ-портом (или UART) без растяжки из-за того, что у них неправильный уровень во время паузы. При растяжке всё становится нормально.
У ADM вроде таких проблем нет.
sensor_ua
Цитата
Зависит от драйвера.

Зависит от гистерезиса, входных токов, емкости кабеля, остаточного уровня и уровня всяких наводок. А производителей море и драйверы у них тоже немножко разные. А
Цитата
не работают нормально с СОМ-портом (или UART)
это к пониманию, как же оно должно работать в реальных условиях. Вы найдите мабилу типа нокио 6310i (мощность 2.5 Вт) и поднесите в момент передачи к драйверу(в режиме приёма, естественно) с "типа хорошим" ADM и посмотрите на RO осциллом...
Mike18
Цитата(rezident @ Jul 26 2008, 16:28) *
Что бы это значило? 07.gif Не понял cranky.gif В стандарте RS485 (EIA/TIA-485-A) никаких "растяжек" вообще не предусмотрено. Терминальные резисторы для симметричной линии - да, есть в стандарте. А растяжек - нету. Да если честно и без них работает, с разбором ошибок на уровне транспортного протокола.
В последнее время, "нарушители конвенции" smile.gif от производителей, видимо, идя навстречу пожеланиям других "нарушителей", упорно устанавливающих "растягивающие" резисторы, стали выпускать микросхемы не с порогами переключения +/- 200 мВ, а с порогами -50/-200 мВ, заявляя при этом, что "растягивающие" резисторы из схемы теперь можно полностью исключить. Действительно, при напряжении между "А" и "В" большем, чем -50 мВ, например, при нулевом, на выходе включённого приёмника теперь должна наблюдаться устойчивая "1". К сожалению, другие пожелания неверующих и в это, связанные с изменением назначения выводов 6 и 7, c A-B на B-A, для микросхем, совместимых по выводам с ADM485, "нарушители конвенции" от производителей, упорно продолжают игнорировать. smile.gif

И ещё, я так понимаю, что про разбор ошибок на уровне транспортного протокола, в стандарте RS485 (EIA/TIA-485-A), тоже ничего не сказано, но ввиду отсутствия доступности самого стандарта утверждать это не буду. smile.gif

P.S. Пара старых, но полезных статей, IMHO.
http://www.cta.ru/cms/f/326702.pdf
http://www.gaw.ru/html.cgi/txt/interface/rs485/power.htm
rezident
Цитата(Mike18 @ Jul 27 2008, 09:37) *
И ещё, я так понимаю, что про разбор ошибок на уровне транспортного протокола, в стандарте RS485 (EIA/TIA-485-A), тоже ничего не сказано,
Естественно ничего не сказано. RS485 это физический интерфейс и напрямую не связан с протоколом(ами) передачи. В стандарте EIA/TIA-485-A говорится только про физический интерфейс и его электрические характеристики. Я потому и выделил фонтом италик в своем сообщении слово "протокол", чтобы обратить внимание на это. Имея в виду, что ошибки, возникающие в физическом интерфейсе (1-й уровень модели OSI), компенсируются на более высоком "протокольном" уровне (2-й уровень модели OSI).
rsmsr
Хочу вернуться к исходному вопросу темы и спросить по части мощности изолированного источника питания DC/DC. 1 Вт - этого достаточно? Существуют в таких же корпусах преобразователи мощностью 0,5 и 2 Вт по такой же примерно цене.
rezident
Цитата(rsmsr @ Jul 30 2008, 19:42) *
Хочу вернуться к исходному вопросу темы и спросить по части мощности изолированного источника питания DC/DC. 1 Вт - этого достаточно?
Достаточно. В рабочем режиме потребление самого драйвера RS485 1-3мА. Сопротивление линии, нагруженной на пару терминальных резисторов 120Ом плюс 32 входа стандартных драйверов с входным сопротивлением >=12кОм, около 50Ом. Итого потребляемая от DC/DC мощность в нормальном режиме при полной загруженности сети будет около 5В*0.003А+5В^2/50Ом=0,515Вт.
Теперь про "криминальный" режим - короткое замыкание в линии передачи. У драйверов RS485 ток короткого замыкания на выходе обычно нормируется на уровне не более 200-250мА. Можно дополнительно защитить драйвер RS485 от проблем в линии, поставив последовательно с каждой линией данных multifuse типа MF-R010 или резистор 10-12Ом.
lekon
Посмотрите :
http://electronix.ru/forum/index.php?act=A...st&id=17635
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.