Авторизация


...

Кто на сайте?

Сейчас 94 гостей и один зарегистрированный пользователь на сайте

  • oegerwilm

Статистика

-Посетители : 26505
-Материалы : 210

Пользователь сайта продает...

  Стенд для освоения программирования МК AVR

Пользователь сайта покупает...

Об особенностях работы по интерфейсу RS485

Автор: Бутывский Игорь Просмотров: 7936

 

 

 

Я зашёл в «ЧИП и ДИП», там сказали, что одна оптопара была в наличии 3 года назад, а другой, вообще никогда не было.

Поэтому пришёл к выводу, что надо придумать, что-то своё.

Немного теории, и информации о применяемых микросхемах.

рисунок MAX232 взят с сайта prog-leon.narod.ru,

описание интерфейса RS485 взято с сайта mayak-bit.narod.ru

 

Микросхема MAX232, представляет собой четырёх канальный преобразователь уровня RS232 TTЛ.

Два канала, преобразуют ТТЛ-уровни в RS232-уровни, и два канала, преобразуют RS232 в ТТЛ.  

 

alt

 

Сеть, построенная на интерфейсе RS-485, представляет собой приемопередатчики, соединенные при помощи витой пары - двух скрученных проводов.

В основе интерфейса RS-485 лежит принцип дифференциальной (балансной) передачи данных.

Суть его заключается в передаче одного сигнала по двум проводам.

Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) - его инверсная копия.

Другими словами, если на одном проводе "1", то на другом "0" и наоборот.

Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" - отрицательна.

alt

 

Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе.

Синфазной называют помеху, действующую на оба провода линии одинаково. К примеру, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал.

Если сигнал передается потенциалом в одном проводе относительно общего, как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающего наводки общего ("земли").

Кроме того, на сопротивлении длинного общего провода будет падать разность потенциалов земель - дополнительный источник искажений.

А при дифференциальной передаче искажения не происходит.

В самом деле, если два провода пролегают близко друг к другу, да еще перевиты, то наводка на оба провода одинакова.

Потенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информативная разность потенциалов остается без изменений.

RS-485 - полудуплексный интерфейс.

Прием и передача идут по одной паре проводов с разделением по времени.

В сети может быть много передатчиков, так как они, могут отключаться в режиме приема.

 

Микросхема MAX485

 

Номера и обозначения выводов

alt

(1) - RO (receiver output) - цифровой выход приемника;

(2) - RE (receiver enable) - разрешение работы приемника;

(3) - DE (driver enable) - разрешение работы передатчика;

(4) - DI (driver input) - цифровой вход передатчика;

(5) – GND

(6) - A - прямой дифференциальный вход/выход;

(7) - B - инверсный дифференциальный вход/выход;

(8) - + питания

D (driver) – передатчик,  R (receiver) – приемник.

 

Переключение микросхемы на приём и передачу, осуществляется подачей на выводы

RE и DE уровней 0 и 1, следующим образом:

RE = 1 – приём запрещён

RE = 0 – приём разрешён

 

DE = 1 – передача разрешена

DE = 0 – передача запрещена.

 

Если соединить выводы RE и DE между собой, то управление состоянием "приём/передача”, осуществляется следующим образом:

 

alt

               

Компьютер передаёт данные микроконтроллёру во много раз медленнее чем, микроконтроллёр компьютеру.

В моём случае, длительность передаваемых байтов данных и пауз между ними, при передаче КОМП -- > PIC ,была в четыре раза больше, чем при передаче PIC -- > КОМП.

 

Суть в следующем.

Компьютер, каждые две секунды, отсылает одному из нескольких PIC–ов (каждый имеет свой индификационный номер)  пачку из пяти байт.

В ответ, PIC должен выдать программе пять байт информации.

Смотрю осциллографом – PIC данные принимает и передаёт.

А программа на компьютере пишет – НЕТ СВЯЗИ.

Для отлаживания процедуры  приёма-передачи установил на компьютер  программу COM Port Toolkit.

С её помощью я передавал с компьютера PIC–у те же самые пять байт запроса. Но в ответ от PIC-a компьютеру приходило только три байта.

Два байта, где-то терялись.

Поэтому и НЕТ СВЯЗИ.

Переключение с приёма на передачу и обратно, со стороны PIC-a, производится отдельно выделенным для этого портом  RC4.

После передачи всех байтов информации PIC, на своей стороне меняет уровень на RC4, тем самым, переводя микросхему МАX485 на приём.

Оказалось, что два байта терялись из-за преждевременного переключения МАX485 на приём.

Дело в том, что модуль USART в микроконтроллере реализован аппаратно  и работает сам по себе независимо от выполнения основной программы. Программа лишь управляет работой этого модуля.

 Запись  данных в регистр TXREG не означает, что эти данные мгновенно будут переданы. По даташиту поднятие флага TXIF означает лишь то, что данные считались из регистра TXREG и записались в сдвиговый регистр TSR для передачи и TXREG пуст. Это значит, что программно (с помощью плавающей задержки опроса флага TXIF) отследить завершение передачи последнего байта не представляется возможным.

Если, сразу  после записи очередного байта в регистр TXREG, перевести MAX485 на приём то ни этот байт, ни предшествующий ему (находящийся в это время в сдвиговом регистре TSR  не будут переданы.  Модулем USART они естественно выпихнутся  на передачу, но приёмо-передатчик то ведь уже переключен на приём.

 

После ввода программной задержки, между записью  последнего байта в TXREG , и  сменой уровня на RC4, всё пришло в норму.

Со стороны компьютера, переключение с приёма на передачу и обратно, производится с помощью транзистора, включённого в цепь передачи данных преобразованных в ТТЛ-уровни.

Данные есть – сигнал на передачу. Данных нет – сигнал на приём.

Так как компьютер затягивает длительность посылок и пауз, то МАХ485 успевает, во время переключится.

Конденсатор С1, сглаживает импульсы на базе транзистора, тем  самым надёжно открывая его. Без него, связь неустойчивая.

Схема, работает и без рекомендуемого, третьего общего провода.

Но на большие расстояния, всё же нужно его использовать, и установить на концах витой пары защитные стабилитроны.

В случае, необходимости согласования сопротивления витой пары с входом/выходом МАХ485, предусмотрены перемычки.

С их помощью, можно подключить параллельно витой паре согласующие резисторы сопротивлением 120 Ом. 

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Случайные статьи....

Prev Next

Программирование c нуля в AVRStudio 5 (ч.3)

07-02-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.3)

    Пишем первую программу! Большинство начинают с мигания светодиодов, и мы не исключение. Если микроконтроллер, даже самый быстрый, не “общается” с внешним миром, ценность его сводится к нулю. Нам нужно чтобы микроконтроллер принял информацию, обработал по заданному алгоритму и выдал...

ПП перевода десятичного числа 0-9 в ASCII-код.

29-10-2012 Super User

 В регистр "Temp"  записывается число от 0 до 9, после выполнения ПП в W получаем  ASCII-код числа.  

Простое объяснение битовых логических операций

17-01-2012 Александр Милевский

Простое объяснение битовых логических операций

Несколько раз сталкивался с необходимостью объяснить стандартные логические битовые операции применительно к командам среднего семейства Microchip. Если человек хочет научиться основам программирования мк, но не сталкивался никогда с электроникой и цифровой техникой, это тяжелый случай.  Эта статья для такой категории...

CPFSLT

02-02-2012 Super User

CPFSLT Операция сравнения f с W, пропуск след. команды если f<.W Синтаксис: [label] CPFSLT f,a Операнды: 0<=f<=255 a Е [0,1] Операция: (f)-(W), пропуск след. команды если (f)<(W) Изменяет флаги: Нет Код: 0110 000a ffff ffff Описание: Сравниваются данные регистра f с содержимым регистра W. Если f<.W, вместо следующей по списку команды выполняется пустая...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru