1 / 1 / 0
Регистрация: 16.12.2016
|
|
1 | |
RS-485 напрямую к портам контроллера24.07.2012, 02:24. Показов 54940. Ответов 64
Метки нет (Все метки)
Если кому интересно что такое RS485 http://ru.wikipedia.org/wiki/RS485 очень лаконично описано
=================================================== Давайте обсудим вот что, можно ли на любом микроконтроллере без драйвера работать с RS485? Берем например at mega 8, подключаем к RS485 ноги и передаем данные, 40 мА разрешенной "мощности" должно хватить чтобы пробросить сигнал на километры. Типовая схема: <Изображение удалено> Что предлагаю я: (схема не идеальная, бета версия, дальше более надежный вариант есть, тут порты компаратора незащищены никак) <Изображение удалено> На передачу подключаем ноги обычные контроллера, на прием можно подключить компаратор. Сигналы RS485 и считаем и передадим поочередно. Для больших расстояний появляется проблема помех что могут пожечь порт, тут ставим защиту, диоды, резисторы, варисторы, они и аппаратному драйверу не помешают. Единственное что вся передача будет програмная, зато будет возможность на одной микросхеме сделать RS485 устройство, ключ или датчик какой-нибудь. И такое решение 4 пина займет, или пины компаратора динамически переназначать, на прием и передачу, можно сэкономить 2 пина.. ============================================== (перетянул со 2й страницы обсуждения, чтобы не искать схему в дебрях) В продолжение темы, исправленные схемы ============================================ Схема 1 без какой либо обвязки вообще <Изображение удалено> Можно использовать аппаратный UART или програмный, при аппаратном похоже придется выходы TXD и RXD выводить на отдельные пины, и програмно передавать их состояние на линию (с TXD), и с линии (на RXD), считывая состояние еще одним пином соединенным перемычкой. Может есть возможность програмно считывать состояние и обойтись без перемычек. Ограничения только из-за ограничений ног контроллера по току, 40 мА это не так мало, но и не так много как выдает драйвер (250 мА). 1. Ограничения по дальности можно расчитать как 50 000 пф кабеля на километр и резистор 150 ом, постоянная времени получается 15 микросекунд, или частота около 50 кбит/с, всё что меньше должно работать при длине линии 1 км, соответственно 500 кбит на 100 метров. На скорости 9600, только из-за ёмкоcти кабеля дальность будет ограничена на 5 км. 2. Ограничения по количеству RS485 устройств можно прикинуть из соображений того что каждое устройство в режиме приема подтягивает линию А(+) к +5В током около +6мА, линию В(-) током -6мА (сопротивления там обычно 2*750 ом). Так как у нас в тех же условиях ток ограничен сопротивлениями 2*150 ом, и ток сигнала менее 33 мА, получим не более 4 устройств RS485(c) на линии. Количество таких устройств как нас схеме, неограничено, линия тут не подтягивается, ток утечки сигнала наноамперный. Увеличить ток сигнала можно подключив парарлельно больше ног контроллера, целыми портами, 8-64 ног, что даст токи 100-400 мА на некоторых МК (STM32 в "квадратных" корпусах с хорошим охлаждением, всёравно там портов много), что сделает МК по мощности сигнала полностью аналогичным драйверу типа MAX, ADM485, SP485, что позволит уже подключать 32 устройства RS495(c) на шину, и отправлять данные до 5 Мбит. Еще отмечу, что рост мощности драйвера не даст пропорционального роста скорости, на высоких скоростях вылезут проблемы согласования кабеля, сопротивления терминаторов поглощающих сигнала, число устройств будет ограничено существенным сопротивлением кабеля, амплитуда скоростных сигналов уже будет затухать х ДБ/м и быстро уходить в микровольтовые амплитуды. А для малых скоростей данная схема вполне нормальная, там требования в разы ниже чем можно воспользоваться. ============================================ Схема 2 с обвязкой на 2х транзисторах (могут быть любые IRFL или биполярные, хоть КТ315 с резистором в базе, главное чтобы открывались при +5В и -5В). Похоже это идеальная схема, насколько можно что-то сделать на 2х транзисторах. Микроконтроллер можно применять любой, с портами хоть в 0.1 мА, какой-нибудь MSP480 <Изображение удалено> Линия А+ подтягивается как +5В через резистор, пассивно, как и на всех остальных устройствах RS485, логическая еденица передается по сути самотёком, силами всех устройств подключенных к линии. Если на линии 2 устройства ток подтяжки уже 2*5=10 мА (или сопротивления к +5В около 400 ом). При длине линии 1 км это даст фронт имульса около 25 мкС, и скорость менее 43 бит/с, при длине линии 100 метров до 430 кбит и т.п. При передаче логического 0, линии подтягиваются транзисторами, ограничений по току нет, кроме сопротивления витой пары, при длине линии 1 км 2 витые пары по 100 ом каждая окраничат ток всего до 25 мА, какой бы драйвер не применялся. Исходя из этих же соображений количество устройств RS485 на километовой линии окраничено 5ю, также с любым драйвером, только из-за сопротивления витой пары. Фронт логического 0 будет в 2,5 раза круче логической 1. Если не учитывать сопротивление витой пары, или для коротких линий, подключать можно около 30 устройств с подтяжкой линий А+ В- или неограниченное количество устройств без подтяжки (главное чтобы хоть 1 было с подтяжкой). Можно сделать входную цепь отключаемой, добавив еще один транзистор, что-то вроде энергосберегающего, спящего режима, рисовать не стал чтобы не усложнять всё. Входная цепь, даже без защитных диодов практически неубиваемая, до +-250В ничего не должно сгореть (кроме перехода база-эмитер верхнего транзистора, там нужен диод в базе для таких случаев) (исправлено). Можно и до 500В догнать более тщательно подбирая параметры, стандартный драйвер ничего подобного не обеспечивает. Появляется интересная возможность запитать устройство от линии сигнальной, на несколько миллисекунд подаем 12В, заряжаем конденсаторы и устройство можнт некоторое время работать от них, измерить параметр и передать вполне хватит. Устройства RS485(c) если будут на линии должны по стандарту держать +12..-7В, так что можно и не отступать от стандарта, ужиться в одной линии со стандартными устройствами, они и не заметят каких-то особенностей (если высоким напряжением подпитки не увлекаться, а то отпаяются SMD резисторы подтяжки). Вобщем такое решение, со своими плюсами и минусами, в каких-то случаях может пригодится. У стандартных драйверов тоже свои плюсы и минусы, параметры выбраны из ряда компромисов и цепи защиты им также важны (совсем без обвязки нежелательно).
0
|
24.07.2012, 02:24 | |
Ответы с готовыми решениями:
64
Проверка подключения RS-485 через преобразователь USB/RS-485 Как выполнить редирект с одного метода контроллера в другой, без пересоздания контроллера Как передать из одного контроллера объект модели в строго типизированное представление другого контроллера Передача значения в метод initialize() контроллера из другого контроллера Вызвать метод контроллера из представления или другого контроллера |
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
|
|
04.08.2012, 14:12 | 61 |
Судя по твоему изобретению "RS-485" ты делаешь не только программные закладки :(
У настоящего Специалиста принцип простой: - если согласился делать работу, то делай свою работу на совесть безо всяких закладок - не заплатили за сделанную работу = больше не работай с этим заказчиком и другим не советуй - ставить закладки = значит ты сам такое же говно как и выбранный тобой заказчик и нечего пенять на других раз сам такой же урод. Есть аморальные уроды, которые готовы пойти на преступление/подставу при первом подвернувшемся поводе, а есть Люди, которые даже в самых неблагоприятных условиях не пойдут на сделку со своей совестью (с религией не связано - воспитаны людьми).
0
|
1 / 1 / 0
Регистрация: 16.12.2016
|
|
04.08.2012, 18:50 | 62 |
Сообщение от ptsyst
0
|
1 / 1 / 0
Регистрация: 16.12.2016
|
|
04.08.2012, 18:52 | 63 |
Пока рисовал схему написал пару статей в википедию по редким протоколам, эдакий побочный эффект работы :)
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
|
|
04.08.2012, 20:18 | 64 |
Сообщение от sym
Сообщение от sym
Ну основная мысль уже была повторена многими - то, что ты "изобрёл" не есть RS-485. И если ты будешь писать про своё изделие, что оно RS-485, то это будет обман и введение в заблуждение.
Сообщение от sym
Я понимаю, что чтобы изменить мораль иногда нужно, чтобы для человека произошло значимое событие. У меня сосед был мудаком - включал по пьяне музыку ночью на всю катушку и удивлялся, чего соседи выступают... Однажды его бандиты ограбили, ударив железякой по голове. 12 лет тишина !!! Оказывается после сотрясения мозга у него от громкого звука голова болит и поэтому же он пить перестал, ведёт нормальный образ жизни.
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
04.08.2012, 20:37 | 65 |
Сообщение от sym
А про 12 лет тишины... Грустно. Мой друг (я только что от него, поздравлял с ДР) примерно столько же от травмы головы полу-инвалид. И наоборот, если раньше пил меньше всех в нашей компашке, то теперь ему, бедному, только и радости, что телевизор да бутылочка.
0
|
04.08.2012, 20:37 | |
04.08.2012, 20:37 | |
Помогаю со студенческими работами здесь
65
Обратиться к элементу класса-контроллера из другого-класса контроллера и передать ему значение Атака по портам Вопрос по портам Вопрос по портам IO Подключение к несуществующим портам Процедуры доступа к портам ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |