Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/300: Рейтинг темы: голосов - 300, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 16.12.2016
1

RS-485 напрямую к портам контроллера

24.07.2012, 02:24. Показов 54940. Ответов 64
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Если кому интересно что такое 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2012, 02:24
Ответы с готовыми решениями:

Проверка подключения RS-485 через преобразователь USB/RS-485
Добрый вечер, форумчане! Я относительно навичек софт-программист, и уж тем более навичек в...

Как выполнить редирект с одного метода контроллера в другой, без пересоздания контроллера
Я делаю в одном из методов RedirectToAction() , в результате чего, перед перенаправлением...

Как передать из одного контроллера объект модели в строго типизированное представление другого контроллера
Есть строго типизированное представление в контроллере Main, в методе ListOrders. Как в него можно...

Передача значения в метод initialize() контроллера из другого контроллера
Есть контроллер ChooseLizController, реализующий окно с таблицей, в которой можно выбрать лицевой...

Вызвать метод контроллера из представления или другого контроллера
Мне нужно по кнопке вызвать метод LogOut в контроллере AccountController. Я пытаюсь сделать так:...

64
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 287
04.08.2012, 14:12 61
Author24 — интернет-сервис помощи студентам
Судя по твоему изобретению "RS-485" ты делаешь не только программные закладки :(
У настоящего Специалиста принцип простой:
- если согласился делать работу, то делай свою работу на совесть безо всяких закладок
- не заплатили за сделанную работу = больше не работай с этим заказчиком и другим не советуй
- ставить закладки = значит ты сам такое же говно как и выбранный тобой заказчик и нечего пенять на других раз сам такой же урод.
Есть аморальные уроды, которые готовы пойти на преступление/подставу при первом подвернувшемся поводе,
а есть Люди, которые даже в самых неблагоприятных условиях не пойдут на сделку со своей совестью (с религией не связано - воспитаны людьми).
0
1 / 1 / 0
Регистрация: 16.12.2016
04.08.2012, 18:50 62
Цитата Сообщение от ptsyst
Судя по твоему изобретению "RS-485" ты делаешь не только программные закладки :(
Судя по странной информации от вас, вы нашли какие-то проблемы в схеме, но не хотите о них говорить, как некрасиво :)

У настоящего Специалиста принцип простой:
- если согласился делать работу, то делай свою работу на совесть безо всяких закладок
- не заплатили за сделанную работу = больше не работай с этим заказчиком и другим не советуй
- ставить закладки = значит ты сам такое же говно как и выбранный тобой заказчик и нечего пенять на других раз сам такой же урод.
Есть аморальные уроды, которые готовы пойти на преступление/подставу при первом подвернувшемся поводе,
а есть Люди, которые даже в самых неблагоприятных условиях не пойдут на сделку со своей совестью (с религией не связано - воспитаны людьми).
Люди разные бывают, обвинять тех кто работает так же как им и платят я не могу, вполне логичное поведение. Даже мультик есть советский, про 9 микро шапок вместо одной из материалов заказчика, портной разве не специалист? Времена меняются, мораль всё таже :)
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
Цитата Сообщение от ptsyst
Судя по твоему изобретению "RS-485" ты делаешь не только программные закладки :(
Судя по странной информации от вас, вы нашли какие-то проблемы в схеме, но не хотите о них говорить, как некрасиво :)
Ну основная мысль уже была повторена многими - то, что ты "изобрёл" не есть RS-485.
И если ты будешь писать про своё изделие, что оно RS-485, то это будет обман и введение в заблуждение.

Цитата Сообщение от sym
Люди разные бывают, обвинять тех кто работает так же как им и платят я не могу, вполне логичное поведение.
Даже мультик есть советский, про ...
Даже фильм есть советский, про "Украл, выпил, сел..."
Я понимаю, что чтобы изменить мораль иногда нужно, чтобы для человека произошло значимое событие.
У меня сосед был мудаком - включал по пьяне музыку ночью на всю катушку и удивлялся, чего соседи выступают...
Однажды его бандиты ограбили, ударив железякой по голове.
12 лет тишина !!!
Оказывается после сотрясения мозга у него от громкого звука голова болит и поэтому же он пить перестал, ведёт нормальный образ жизни.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
04.08.2012, 20:37 65
Цитата Сообщение от sym
Люди разные бывают, обвинять тех кто работает так же как им и платят я не могу, вполне логичное поведение
А я скорее поддержу ptsyst-а. Не в обвинениях кого-либо, а именно в том, что работать нужно на совесть - или не работать вообще. Меня дурили - не часто, но и не раз. И я принимаю это, что было, то было. Но лично мне это не дает права ни говорить, что жисТь гавно, ни считать людей волками.

А про 12 лет тишины... Грустно. Мой друг (я только что от него, поздравлял с ДР) примерно столько же от травмы головы полу-инвалид. И наоборот, если раньше пил меньше всех в нашей компашке, то теперь ему, бедному, только и радости, что телевизор да бутылочка.
0
04.08.2012, 20:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2012, 20:37
Помогаю со студенческими работами здесь

Обратиться к элементу класса-контроллера из другого-класса контроллера и передать ему значение
Нужно передать элементу TAB 1 класса-контроллера значение setDisable(false) во 2...

Атака по портам
Вчера Nod32 орал что идет атака по открытым портам, сегодня орет про Dns атаку и &quot;Обнаружена атака...

Вопрос по портам
Всем привет, в сфере администрирования совсем недавно так что прошу не судить строго. Имеется сеть...

Вопрос по портам IO
Подключаю фототранзистор к контроллеру (картинка в файле). Какая разница закрыт транзистор или...

Подключение к несуществующим портам
Суть такая: через телнет пробую подключаться к айпишнику (айпи из другого города) на 2000 порт и...

Процедуры доступа к портам ?
Каким образом в VB6 можно обратиться к портам ? Или как выполнить в VB6 вот это: mov al,12h...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
65
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru