Главная » Промышленная электроника
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Контроллер температуры и влажности, счетчик импульсов с протоколом MODBUS

При разработке устройств промышленной электроники или систем "умный дом" приходится сталкиваться с необходимостью передачи данных на большие расстояния (более 100 метров) в условиях довольно сильных индустриальных помех. Стандарт RS-232 не позволяет в таких условиях обеспечить безошибочную передачу данных, поэтому в качестве физической среды передачи данных используют линии типа "витая пара" по стандарту RS-485. В качестве же протокола передачи данных часто используют протокол MODBUS. Как оказалось в интернете довольно мало информации в этой области. Этой статьей я попробую хоть немного восполнить этот пробел.

У многих интерфейс RS-485 ассоциируется сразу с чем-то промышленным, далеким от любительской электроники. А при слове MODBUS - почти все говорят что это и есть RS-485. На самом деле это совершенно разные области передачи данных. Протокол RS-485 описывает физическую среду передачи данных, то есть провода, их взаимное расположение, уровни сигналов и прочее, прочее, прочее. MODBUS описывает формат передачи данных, то есть логически законченный кадр (фрейм), содержащий в себе как сами данные в определенном порядке, так и информацию о отправителе/получателе, выполненной операции и контрольную сумму для контроля подлинности данных. Сама же среда передачи данных может быть любая (провода, радиоволны, интернет-пакеты и прочее). Если провести аналогию, к примеру, с доставкой посылки от отправителя к получателю, то RS-485 - это дороги (автомобильные, морские, воздушные), а MODBUS - это накладная к грузу, где указаны все содержимое посылки, данные о отправителе/получателе и контрольный вес посылки и печати для подтверждения подлинности посылки.

Реализовать физическую линию передачи данных RS-485 даже проще, чем RS-232. Для этого достаточно использовать микросхему MAX485 и два простых скрученных провода. И это обеспечивает дальность связи свыше 1 км. Для RS-232 необходим преобразователь уровня MAX232 с 4-мя конденсаторами и, желательно экранированная, линия связи с тремя проводами. При этом дальность связи редко превышает 20 метров и должны быть выполнены условия по заземлению и выравниванию потенциалов соединенных устройств.

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

Для отладки контроллера и работы с компьютером использовался переходник RS-232 <-> RS-485. В принципе эта схема аналогична многим другим, но мне она попалась первой. Переходник собран на односторонней печатной плате, питание осуществляется от блока зарядки для сотового телефона. Поскольку блок зарядки выдает 5,5 Вольт, то оказалось возможным отказаться от установки стабилизатора 78L05, хотя место для него на плате предусмотрено, и вместо него установлена перемычка.

Вид со стороны печатной платы.

Файл печатной платы в формате Sptint-Layout прилагается (файл RS232-485). При работе с данным переходником выяснилось, что переходник отлично работает с физическими COM-портами (грубо говоря - это те, которые встроены на материнской плате), но не работает с адаптером USB-COM на чипе ProLific PL-2003 (В очередной раз получил подтверждение, что для электронщика нужны старые компьютеры, которые приходится дома держать для этих целей).

Для работы с протоколом MODBUS на компьютере был установлен OPC-сервер. В комплекте к данному серверу идет утилита просмотра MODBUS-регистров, которой удобно пользоваться в процессе отладки. Ну и не забываем про терминал. Лично я использовал программу RH_Com - терминал. (Хотя терминал мне понадобился в расширенной версии данного контроллера).

На этом вводную часть заканчиваем и переходим к самому контроллеру и описанию его работы. Схема, как и большинство схема на микроконтроллерах, содержит минимум деталей. Поэтому, а также ввиду отсутствия в PROTEUS модели датчика DHT-11, отдельно принципиальную схему не рисовал. На печатной плате имеются указания на используемые элементы и номиналы резисторов, а конденсаторы ставятся максимально большей емкости из имеющихся. За основу взят микроконтроллер ATTiny2313. Датчик температуры и влажности типа DHT11 подсоединен непосредственно к микроконтроллеру. Для его нормальной работы необходимо только установить подтягивающий резистор (10 кОм) к питанию, поскольку внутреннего подтягивающего резистора микроконтроллера не хватит. Дисплей через разъем также напрямую подсоединен к выводам МК.

Микросхема MAX-485 подсоединена к выводам RX и TX микроконтроллера и дополнительно задействован еще один вывод 4 для переключения режима прием-передача. Можно было-бы и не использовать этот вывод и сделать автоматическое определение направления передачи, как это реализовано в адаптере RS-232 <-> RS-485, но выводов и памяти у МК хватает, так зачем добру пропадать.

Вся схема размещена на плате 40*50 мм. Питание схемы осуществляется от зарядки для сотового телефона через стабилизатор 7805, также размещенном на плате. Правда пришлось подыскать зарядку, выдающую напряжение порядка 7 Вольт.

А вот такую информацию мы видим на табло в работе:

Программа для микроконтроллера написана на BASCOM-AVR. Программа подробно комментирована и, думаю, при желании в ней легко можно разобраться.

При работе совместно с устройством MASTER, в качестве которого может выступать компьютер с установленным на нем OPC-сервером, контроллер при получении запроса со своим номером SLAVE обрабатывает полученную команду и, если в команде указан код выполняемой функции "3" и совпадает контрольная сумма посылки, в ответ контроллер посылает последовательность данных о температуре, влажности и количества импульсов. На компьютере в этом случае отображается следующее:

или

Также данный контроллер можно прописать и в другом сервере, например AggreGate. (Показания на рисунках немного отличаться, поскольку снимки с LCD и экрана монитора делались в разное время.)

Особо следует отметить, что поскольку используется включение микроконтроллера на работу с внутренним осциллятором, то не все экземпляры микроконтроллера обеспечивают бесперебойной работу при передаче данных по MODBUS (компьютер определяет ошибку контрольной суммы). У меня из 6 микроконтроллеров 3 работали стабильно в комнатных условиях, один начинал давать сбои (ошибка контрольной суммы) примерно через 10 минут работы, а два других сразу передавали данные с ошибкой. Возможно это связано с частотой и стабильностью внутреннего осциллятора. Поэтому желательно использование микроконтроллера либо с внешним кварцем, либо произвести подбор микроконтроллера.

В архиве DHT-11+Impuls.rar расположены: печатная плата в формате Sprint Layout 5, HEX файл для прошивки МК, исходный код в среде BASCOM-AVR. При программировании МК надо выставить fuse-биты следующим образом:

Т.е. на работу от внутреннего тактового генератора на 8 МГц.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 МК AVR 8-бит
ATtiny2313-20PU
1 Поиск в FivelВ блокнот
ИС RS-422/RS-485 интерфейсов
MAX485
1 Поиск в FivelВ блокнот
Линейный регулятор
L7805AB
1 Поиск в FivelВ блокнот
LCD1 LCD-дисплей20041 Поиск в FivelВ блокнот
Датчик температуры
DHT11
1 Поиск в FivelВ блокнот
Резистор
10 кОм
1 Поиск в FivelВ блокнот
Резистор
10 Ом
2 Поиск в FivelВ блокнот
Резистор-перемычка
0 Ом
2 Поиск в FivelВ блокнот
Конденсатор1 мкФ2 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (4) | Я собрал (0) | Подписаться

0
123ksn #
Не понял. О каких импульсах идет речь.
1) Зачем их считать?
2) Зачем передавать?
3) Что является источник этих импульсов?
Ответить
0

[Автор]
sergej_shaggy #
Считаются импульсы, поступающие на вход PORTB.6 (pin 18). Зачем их считать? А зачем вообще что-то измеряют? Все зависить от того, где будете применять. Изначально это устройство разрабатывалось для сушки леса, чтобы дистанционно контролировать процесс, не выходя из офиса. В другом случае, при обработке ткани, понадобилось знать обработанный метраж, была добавлена оптопара с оптического энкодера мышки и счетчик импульсов.
Ответить
0
123ksn #
Придется информацию тянуть клещами.
1) какая максимальная частота сигнала возможна? И другие ограничения.
2) каким образом измеряется: опрос или прерывание?
Ответить
0

[Автор]
sergej_shaggy #
1. Максимальную частоту не проверял. Сигнал должен соответствовать ТТЛ-логике. Честно говоря даже не задумывался над всем этим. Предугадываю следующий вопрос - насчет дребезга кнопок при их использовании как источника импульсов. Никак дребезг не анализируется. Проблем лично у меня не было, может потому, что использовал оптопару. Возникнет проблема - буду решать.
2. Обработка идет по прерыванию.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

ELM327 OBD II — адаптер с поддержкой CAN
ELM327 OBD II — адаптер с поддержкой CAN
Автомобильный GPS-трекер с GSM/GPRS и дистанционным управлением USB осциллограф DSO-2090
вверх