Arduino модуль ttl uart в rs485 авто

Модуль преобразователя интерфейсов UART TTL – RS-485

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Обзор интерфейса связи RS485

RS485 – это стандарт проводной связи, обычно переменяется для соединение в сеть различного промышленного оборудования. Для передачи и приёма данных используется одна витая пара проводов. Стандарт RS485 позволяет соединять устройства на расстоянии до 1,2км и подключать до 32 устройств к одной шине. При этом в системе одно устройство является ведущим (master), а остальные устройства ведомые (slave).

Существует большое количество различных типов приемопередатчиков (драйверов) RS-485. Приемопередатчики на основе микросхемы MAX485 (рисунок 1) преобразует сигналы TTL в стандарт RS485 и обратно и используются для подключения устройств на основе Arduino к шине RS485.

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Технические характеристики

Назначение контактов

Выводы модуля A и B, являются выводами линии передачи данных, при этом все модули на линии соединяются одноименными выводами.

Подключение модуля к плате Arduino

Схема подключения модуля к плате Arduino показана на рисунке 2.

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Если соединить вход DE со входом RE и подключить их к цифровому выводу Arduino, то подав на него сигнал HIGH модуль будет работать только на передачу, а подав сигнал LOW, только на приём. Для связи Arduino с модулем TTL – RS485 будем использовать программный Serial на контактах 3 и 2.

Подключение Arduino к компьютеру по RS485

Arduino будем использовать как slave-устройство. При получении команды от компьютера, если первый байт (адрес) равен символу «1», Arduino переходит в режим передачи и отправляет ответ – «OK». Затем Arduino переходит в режим приема.

Arduino-скетч получения данных с компьютера показан в листинге 1.

SoftwareSerial RS485Serial(3, 2);

// пин подключения выводов RE и DE

// конвертирующего модуля (выбор передача/получение)

Источник

Обзор конвертера TTL-RS485

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

В предыдущей статье рассказывал о протоколе связи I2C используемый в дисплеях LCD1602, OLED и во многих других устройств. Сегодня расскажу о другом протоколе RS485, который использует асинхронную передачу данных и преимуществом RS-485, является возможность передачи данных на большие расстояния. Данный протокол часто используется промышленности.
В этой статье приведу пример организации связи по протоколу RS485 и использовании недорогих модулей на базе микросхемы MAX485.

Технические параметры.

► Рабочее напряжение: 5 В
► Потребляемый ток: Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Принципиальная схема модуля показана на рисунке ниже.

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Назначение контактов:
VCC и GND — питание модуля
B — Вход/выход линии RS-485
A — Вход/выход линии RS-485
DI — Вход передатчика (TX)
DE — Разрешение работы передатчика
RE — Разрешение работы приёмника
RO — Выход приемника (RX)

Переключение модуля на прием и передачу осуществляется с помощью выводов DE и RE. Если их замкнуть между собой и подключить к любому цифровому выводу arduino, то подав на него «1» модуль будет работать только на передачу, а подав «0», только на приём.

Подключение Arduino к RS485

Необходимые детали:
Arduino UNO R3 x 2 шт.
► Конвертер TTL-RS485 на чипе MAX485 x 2 шт.
► Провода DuPont, 2,54 мм, 20 см x 1 шт.

Подключение.
В примере используем две Arduino UNO и два модуля RS485. Сначала подключаем Arduino (Master) к модулю RS485, вывод 10 (Arduino) к RO (RS485), вывод 11 (Arduino) к RI (RS485) и вывод 3 подключаем к контактам RE, DE (RS485). Затем подключаем питание VCC и GND и конечно два провода в шине RS485, «A» к «A», «B» к «B». Аналогично собираем и второю Arduino.

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Программа.
В примере, используем библиотеку «SoftwareSerial» которая входит в среду разработки Arduino IDE. Библиотеку используем только для удобства, так как если воспользоватся выводами 0 и 1, нам придется каждый раз отключать модуль MAX485 при загрузке скетча. Сама программа не сложная, мы одновременно подключим две Arduino на один компьютер и запустим две среды разработки Arduino IDE. Открыв мониторинг порта мы отправим команды с Master Arduino на Slave Arduino и обратно.

Источник

Урок 26.2 Соединяем две arduino по стандарту RS485

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

При создании некоторых проектов, требуется разделить выполняемые задачи между несколькими arduino.

В этом уроке мы научимся соединять две arduino по стандарту RS485 через аппаратную шину UART.

Преимущества:

Недостатки:

Нам понадобится:

Для реализации проекта нам необходимо установить библиотеки:

Видео:

Схема подключения:

Подключение LCD дисплея осуществляется к аппаратным выводам шины I2C.
Клавиатура подключается к любым цифровым выводам, в примере используются выводы 2-9.
Конвертирующий модуль подключается к шине UART:

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Все конвертирующие модули на линии соединяются одноименными выводами: «A» с «A», «B» с «B».

Код программы:

Настройка параметров линии связи:

Конвертирующий модуль только преобразует сигналы TTL в стандарт RS485 и обратно. Параметры линии: скорость передачи данных, количество бит в минимальной посылке, длина стопового бита, проверка на чётность/нечётность, зависят от настроек шины UART, см. раздел «Настройка параметров шины UART» в уроке 26.1.

Настройки шины UART всех arduino подключённых к линии должны быть идентичны!

Источник

Последовательная связь по протоколу Modbus RS-485 с Arduino (ведомой)

Протокол Modbus – самый распространенный промышленный протокол для межмашинного (M2M) взаимодействия. Является стандартом де-факто и поддерживается почти всеми производителями промышленного оборудования. В этой статье мы рассмотрим последовательную связь по протоколу Modbus RS-485 используя плату Arduino Uno в качестве ведомого устройства (Slave).

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Что такое Modbus

Какая разница между протоколами Modbus ASCII и Modbus RTU? По сути, это практически одинаковые протоколы. Только в протоколе Modbus RTU данные передаются последовательно в двоичном коде, а в Modbus ASCII – в ASCII кодах. В этом проекте мы будем использовать Modbus RTU. Структура пакета в проколе Modbus RTU выглядит следующим образом:

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Назначение элементов данного пакета рассмотрено далее в статье.

В данной статье мы будем использовать последовательную связь по протоколу Modbus RS-485 используя плату Arduino Uno в качестве ведомого устройства (Slave). Мы установим программное обеспечение Simply Modbus Master Software на компьютер и будем управлять двумя светодиодами и сервомотором, подключенными к ведомой плате Arduino. Управлять ими мы будем при помощи передачи специальных значений от Master Modbus Software.

Принципы работы интерфейса последовательной связи RS-485

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

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

В нашем случае дифференциальный сигнал образуется при помощи использования положительного и отрицательного напряжения 5V. Интерфейс RS-485 обеспечивает полудуплексную связь (Half-Duplex) при использовании 2-х линий (проводов) и полноценную дуплексную связь (Full-Duplex) при использовании 4-х линий (проводов).

Основные особенности данного интерфейса:

Использование интерфейса RS-485 в Arduino

Для использования интерфейса RS-485 в плате Arduino мы будем использовать модуль 5V MAX485 TTL to RS485, в основе которого лежит микросхема Maxim MAX485. Модуль является двунаправленным и обеспечивает последовательную связь на расстояние до 1200 метров. В полудуплексном режиме он обеспечивает скорость передачи данных 2,5 Мбит/с.

Модуль 5V MAX485 TTL to RS485 использует питающее напряжение 5V и логический уровень напряжения также 5V, что позволяет без проблем подключать его к платам Arduino.

Данный модуль имеет следующие особенности:

Внешний вид модуля RS-485 показан на следующем рисунке.

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

Назначение контактов (распиновка) модуля RS-485 приведена в следующей таблице.

Название контактаНазначение контакта
VCC5V
Aвход/выход линии RS-485
Bвход/выход линии RS-485
GNDGND (0V)
R0выход приемника (RX pin)
REразрешение работы приемника
DEразрешение работы передатчика
DIвход передатчика (TX pin)

Модуль преобразования USB в RS-485

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

На представленном рисунке показан внешний вид адаптера (модуля преобразования) USB в RS-485. Он способен работать в различных операционных системах и обеспечивает интерфейс RS-485 при помощи использования одного из COM портов компьютера. Этот модуль является устройством plug-and-play. Все, что передается через виртуальный COM порт, автоматически преобразуется данным модулем в RS-485, и наоборот. Модуль питается от порта USB – никакого дополнительного питания не требуется.

В компьютере он виден как последовательный/ COM порт и доступен для использования различными приложениями. Модуль обеспечивает полудуплексную связь с помощью интерфейса RS-485. Скорость передачи – от 75 до 115200 бод/с, максимальная – до 6 Мбит/с.

В сети интернет можно найти достаточно много программного обеспечения, способного работать с данным адаптером. Мы в этом проекте будем использовать программу Simply Modbus Master.

Программное обеспечение Modbus Master

Программу Modbus Master Software мы будем использовать для передачи данных ведомой плате Arduino с помощью интерфейса RS-485.

Вы можете скачать программу Simply Modbus Master по следующей ссылке. Документацию по этой программе (на английском языке) можно прочитать здесь.

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

Slave ID (идентификатор/адрес ведомого)

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

Регистры Modbus

Дискретные входы (Discrete Inputs) также являются однобитными регистрами, описывающими состояние входа устройства (например, подано напряжение — 1). Эти регистры поддерживают только чтение. Имеют номера от 10001 до 19999.

Регистры ввода (Input Registers) – 16-битные регистры, используемые для ввода информации. Эти регистры поддерживают только чтение. Имеют номера от 30001 до 39999.

Регистры хранения (Holding Registers) представлены двухбайтовым словом и могут хранить значения от 0 до 65535 (0x0000 — 0xFFFF). Регистры хранения поддерживают как чтение, так и запись (для хранения настроек). Имеют номера от 40001 до 49999.

Function code (код функции/функциональный код)

Второй байт, передаваемый ведущим, содержит функциональный код. Этот код определяет действие, которое необходимо выполнить (считать, записать и т.д.). Действия сгруппированы по таблицам. В протоколе Modbus существует четыре таблицы с данными:

ТаблицаТип элементаТип доступа
Дискретные входы (Discrete Inputs)один биттолько чтение
Регистры флагов (Coils)один битчтение и запись
Регистры ввода (Input Registers)16-битное словотолько чтение
Регистры хранения (Holding Registers)16-битное словочтение и запись

В реальной практике чаще всего встречаются устройства, в которых есть только таблица Holding Registers, иногда объединённая с таблицей Input Registers.

Для доступа к этим таблицам существует ряд стандартный функций ModBus:

Чтение:

Запись одного значения:

Запись нескольких значений:

15 (0x0F) — запись значений в несколько регистров флагов (Force Multiple Coils)
16 (0x10) — запись значений в несколько регистров хранения (Preset Multiple Registers)

Наиболее часто используемые на практике функции (функциональные коды) ModBus это 3, 6 и 16 («Read Holding Registers», «Preset Single Register» и «Preset Multiple Registers» — соответственно).

CRC расшифровывается как Cyclic Redundancy check и переводится как “циклический избыточный код”. Это два байта, которые добавляются к каждому передаваемому сообщению протокола Modbus для обнаружения ошибок.

Необходимые компоненты

Аппаратное обеспечение

Программное обеспечение

Схема проекта

Схема для последовательной связи по протоколу Modbus RS-485 с платой Arduino представлена на следующем рисунке.

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 автоВ следующей таблице представлены необходимые соединения между платой Arduino Uno (ведомой) и модулем MAX485 TTL to RS485.

Arduino UnoМодуль MAX485 TTL to RS485
0(RX)RO
1(TX)DI
4DE & RE
+5VVCC
GNDGND

В следующей таблице представлены необходимые соединения между модулями MAX485 TTL to RS485 и USB to RS-485.

MAX485 TTL to RS485USB to RS-485
AA
BB

В следующей таблице представлены необходимые соединения между платой Arduino Uno и ЖК дисплеем 16х2.

ЖК дисплей 16х2Плата Arduino Uno
VSSGND
VDD+5V
V0к потенциометру для управления яркостью/контрастностью дисплея
RS8
RWGND
E9
D410
D511
D612
D713
A+5V
KGND

В следующей таблице представлены необходимые соединения между платой Arduino Uno, светодиодами и сервомотором.

Arduino Uno1-й светодиод2-й светодиодсервомотор
2Anode через 1k resistor
5Anode через 1k resistor
6PWM pin (Orange)
+5V+5V (RED)
GNDCathode GNDCathode GNDGND (Brown)

Со схемой разобрались, можно переходить к написанию программы.

Объяснение программы Arduino для связи по протоколу Modbus RS-485

В нашем проекте плата Arduino Uno используется в качестве ведомого устройства (Slave) протокола Modbus. К плате Arduino Uno подключены два светодиода и сервомотор. Ведомая плата Arduino Uno управляется программным обеспечением Master Modbus. Связь между Master Modbus и платой Arduino Uno осуществляется с помощью модулей RS-485. Для подключения к компьютеру используется модуль преобразования USB в RS-485, а для подключения к плате Arduino Uno используется модуль преобразования MAX-485 TTL to RS-485. Собранная конструкция проекта выглядит следующим образом:

Arduino модуль ttl uart в rs485 авто. Смотреть фото Arduino модуль ttl uart в rs485 авто. Смотреть картинку Arduino модуль ttl uart в rs485 авто. Картинка про Arduino модуль ttl uart в rs485 авто. Фото Arduino модуль ttl uart в rs485 авто

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

Первым делом в программе мы подключим необходимые библиотеки: для работы с Modbus RS-485, а также библиотеки для работы с ЖК дисплеем и сервомотором.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *