Плата разработки PIC для RS485 и DMX512: схема, печатная плата

DMX Shield – плата расширения Arduino для проектов управления световыми эффектами

DMX Shield – простая плата расширения, которая позволит использовать платформу Arduino для управления системами освещения или световыми эффектами по интерфейсу DMX (Рисунок 1). Фактически, плата реализует интерфейс RS485, электрические уровни сигналов которого необходимы для коммуникации по протоколу DMX.

Рисунок 1.Внешний вид платы расширения Arduino DMX Shield.

При проектировании схемы платы расширения была заложена определенная гибкость. Так, с помощью перемычек (джамперов), пользователь может выбирать какие сигнальные линии платы Arduino использовать в качестве цифрового входа и выхода интерфейса DMX. Дополнительно, на плате установлен слот для карт памяти microSD с соответствующей схемой согласования уровней и разъем для подключения ЖК индикатора с последовательным интерфейсом.

Такая конструкция позволит реализовать базовые функции DMX протокола посредством сообщений, предварительно запрограммированных в коде программы микроконтроллера или, при использовании соответствующих библиотек, может стать автономной системой с функциями воспроизведения последовательностей записанных на карте памяти microSD. При необходимости данное решение может служить удобным интерфейсом для передачи DMX команд от ПК через последовательный порт.

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

В случае применения DMX протокола и интерфейса каждое устройство имеет свой интегрированный или внешний контроллер. Система управления посылает определенное адресное сообщение в виде байта данных на каждый контроллер, который, в свою очередь, его интерпретирует с учетом адреса и возможностей. Источник питания в такой системе освещения становится «локальным», и связь обеспечивается экранированным двужильным кабелем, по которому передаются низковольтные сигналы.

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

Схема передачи была разработана с целью повышения эффективности управления устройствами, поэтому интерфейс DMX поддерживает одновременное управление 512 устройствами с 40 полными циклами передачи в секунду. Чтобы добиться такого при передаче 8-битных данных, 1 стоп-бита и 1 старт-бита, скорость должна быть 250 Кбит/с. Последовательная передача данных начинается с заголовка, а затем байты передаются последовательно, начиная с первого (Таблица 1, Рисунок 2).

Таблица 1. Базовые команды протокола DMX512 и их длительность
(Каждый бит, передаваемый по протоколу DMX512, имеет длительность 4 мкс)

Примечание: НО – означает «не определено», определяется разработчиком.

Рисунок 2.Диаграмма сигнала при передаче данных по протоколу DMX512.

Все это означает, что если мы хотим передать новые данные контроллеру с адресом 10, то необходимо также передать данные для контроллеров с адресами 1 – 9. Система адресации основана на номере передаваемого байта, поэтому каждый контроллер ведет подсчет входящих байтов. Контроллер игнорирует байты данных, поступающие до и псоле “своего”.

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

В первоначальной версии протокола DMX значения в диапазоне 0-255 интерпретировались как уровни яркости осветительного устройства (00 – выключен, 255 – максимальная яркость), но растущий список устройств с интерфейсом DMX вызвал изменения в интерпретации значений байта. Появилось много дополнительных команд и функций, например, установка позиции, выбор программы, применение специфических параметров, активация функции и пр. Каждый производитель определяет набор команд и карту соответствия значений и функций. Следует учитывать, что иногда одного байта недостаточно для управления всеми возможностями контроллера, поэтому для устройства на шине DMX выделяется диапазон адресов, и считывается более одного байта в последовательности.

Принципиальная схема платы расширения

Рисунок 3.Принципиальная схема платы расширения Arduino DMX Shield.

Основным элементом платы является микросхема MAX485 компании Maxim (Рисунок 3), которая преобразует уровни цифровых сигналов микроконтроллера в дифференциальные сигналы двухпроводного интерфейса RS485. Микросхема содержит приемник, передатчик и логику управления. Для управления направлением передачи данных микросхема MAX485 имеет инверсные входы /RE (вывод 2) и OE (вывод 3). В нашем случае эти входы можно объединить и для управления потребуется одна линия ввода/вывода микроконтроллера. Выводы 6 и 7 микросхемы – это дифференциальный выход, вывод 1 – выход приемника, вывод 4 – вход данных.

Все сигнальные выводы микросхемы подключаются к порту D платы Arduino через перемычки (джамперы). Вывод RO (вывод 1) может подключаться к порту D0 или D4, вывод DI может подключаться к порту D1 или D3, а соединенные вместе /RE+OE могут подключаться к порту D2 или D5.

Еще одна микросхема, использующаяся в схеме, предназначена для преобразования ТТЛ уровней интерфейса ICSP платы Arduino в уровни с напряжением 3.3 В, которые требуются для работы с картой памяти microSD. Микросхема 74HC4050D содержит шесть буферов для преобразования уровней сигналов ТТЛ, но в данной схеме используются лишь три, включенные на входных линиях интерфейса microSD. Выходные уровни интерфейса microSD с напряжением 3.3 В корректно определяются микроконтроллером на плате Arduino как «лог. 1».

Дополнительно на плате установлены два пользовательских светодиода (порт D8 и D7), пользовательская кнопка (порт A1), кнопка сброса и разъем для подключения ЖК индикатора с последовательным интерфейсом (порт A0 или A2, выбирается перемычкой).

Перед работой с платой необходимо корректно установить перемычки сигнальных линий (на плате они обозначены JRO, JDI, JRDE, Рисунок 4). Если совместно с Arduino не используются дополнительные платы расширения, то перемычки можно устанавливать в любую из двух позиций. При использовании дополнительных плат расширения перемычки необходимо устанавливать так, чтобы избежать конфликтов. Также учитывайте, что плата расширения Ethernet Shield использует интерфейс ICSP Arduino, и слот карты памяти microSD в таком случае может конфликтовать с Ethernet платой.

Рисунок 4.Расположение элементов на плате расширения DMX Shield.

Для работы с платой потребуется специальная программная библиотека функций DmxSimple.h, которая вместе с примерами доступна для скачивания в разделе загрузок.

Для управления платой DMX Shield с персонального компьютера и реализации световых эффектов синхронизированных с музыкой можно использовать программный комплект Vixen. Пользователи создают в программе последовательность данных, которые затем передаются через последовательный порт компьютера в Arduino. Пример исходного кода программы микроконтроллера для работы с Vixen находится папке DMX_LightSequencing.

Демонстрационное видео

Загрузки

Библиотека функций и исходные коды примеров – скачать

Перевод: Vadim по заказу РадиоЛоцман

Реализация управления по DMX своими руками

DMX или же DMX-512 является стандартом, применяемым для управления световым оборудованием. Он позволяет управлять по одной линии связи одновременно 512 каналами. По каждому из каналов передаётся только один параметр прибора. К таким параметрам обычно относят: цвет светового луча, яркость лампы, число вспышек в режиме стробирования, поворот зеркала (либо всего прибора) по горизонтали, поворот зеркала (либо всего прибора) по вертикали, номер гобо-трафарета. В сложных приборах так же контролируется фокус луча и рассеивание (фрост). Каждый прибор имеет определённое количество управляемых дистанционно параметров и занимает соответствующее количество каналов в пространстве DMX512.

В настоящее время большинство именитых фирм, занимающихся выпуском концертного света, выпускают адаптеры USB для управления оборудованием непосредственно с собственного программного обеспечения, в обход аппаратных пультов. Цена таких устройств естественно велика.
В своё время, интересуясь этим вопросом, я не смог найти в рунете статьи, раскрывающей возможность создания преобразователей USB-DMX «на коленке». Поэтому, в данном топике хочу привести несколько вариантов реализации преобразователя USB-DMX своими руками, для последующего использования с одним из Open-Source продуктов. Оговорюсь сразу, что данные устройства могут быть не совместимы с некоторым световым оборудованием.

Вариант первый — всеми любимая FTDI.

DMX-512 в своей основе имеет не что иное, как стандарт RS-485, поэтому возможна реализация по средствам микросхемы FT232 и буферов RS-485. Одно из таких устройств предлагает фирма Enttec.
Электрическая схема с официального сайта базируется на FT232BM, требующей отдельную микросхему EEROM. Думаю, что замена на FT232R не повлияет на качество. Тем более что в интернете проскакивают такие реализации.

Читайте также:  Твердотельное реле своими руками – схема, видео

Непосредственно в даташите на FT232 имеется схема преобразователя USB — RS-485, но как показала практика она не подходит, возможно дело в несогласованности линии.

Вариант второй — микроконтроллер.

Таких устройств в интернете встречается немало. Выделю лишь два, имеющие полный комплект документации:
— Самый известный из преобразователей (реализован на AVR) — MINI-DMX. Думаю, что желающие смогут с легкостью доработать его, добавив USB интерфейс.

— Реализация на микроконтроллере PIC с сайта dmx512-online. Непосредственные ссылки на электрическую схему и руководство по прошивке.

Вариант третий — копии существующих устройств.
Найти открытых схем и исходников прошивок мне так и не удалось. Логика подсказывает, что внутри такие устройства имеют так же микроконтроллер или как максимум DSP. Уже готовые реализации во всю продают наши умельцы, например на форуме Vegalab. Если кто-то из хабражителей располагает схематикой и прошивками и готов ими поделиться, буду очень признателен.
Для работы с приведенными выше преобразователями подходят программы:
— Free Styler;
— DMX Control.

К сожалению, данные программы не обладают такой хорошей 3D визуализацией как фирменные продукты, но имею большую базу оборудования, что упрощает настройку в части назначения DMX каналов.

В заключение добавлю, что для того чтобы обезопасить себя от повреждения компьютера лучше включить в схему преобразователей USB-DMX гальванические развязки. Особенно это актуально при работе в нелегких сценических условиях. Сжечь материнскую плату в середине концерта удовольствие неприятное.

P.S. В своих поисках натыкался на платы DMX для стыковки с платформой Arduino, но без файлов прошивки. Хотелось бы услышать мнение Arduino-юзеров.

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

Разделы

    Поделиться .
  • Google+
  • Twitter
  • LinkedIn
  • Facebook
  • Pinterest
  • Telegram

В этой статье будет описано как сделать приемник DMX 512 на микроконтроллере PIC а именно на PIC16F1823. Схема работы устройства практически ничем не отличается от других устройств на контроллерах приведенных на нашем сайте. Устройство работает на полевых транзисторах MOSFET 1) , открывает транзисторы ШИМ от контроллера, ничего сверхестественного как и в других схемах здесь нет. Устройство может работать на любом заданном адресе в диапазоне адресов 512, и использовать 4 канала управления. Транзисторы могут управлять нагрузкой светодиодных ламп или сервомоторов или чего пожелаете по шагу диммирования равному 255 или по цифровому включение/выключение канала.

Возможности

Выходы могут управлять LED модулями, LED лентами, лампами низкого напряжения до 35 Вт.

Схема

Схема наложения компонентов на плату

Готовая плата

Печатная плата для травления

Верхняя сторона

Нижняя сторона

Используемые компоненты

ЭлементСвойства
R1,R2,R3,R4120R 0.125 Ватт резистор
R5,R6,R7,R8,R10,R1110K 0.125 Ватт резистор
R12330R 0.125 Ватт резистор
R13120R ( 0.25В или на 0.5 Ватт) резистор
R141K0 0.125 Ватт резистор
R9не используется
0.125 (1/8) Ватт указанны для хорошего умещения на плате.
C1330nF конденсатор (5mm шаг) (или на 470nF)
C2,C3,C5100nF керамический конденсатор (2.5mm шаг)
C4не используется
D1-D111N4148 диод
IC1PIC16F1823-I/P (Контроллер программируемый DMX прошивкой)
IC278L05 регулятор напряжения
IC3MAX481 (микросхема на основе RS485 протокола)
IC4HCF4017B
Q1,Q2,Q3,Q4STP20NF06L логический N-MOSFET (STP36NF06L альтернатива)
LED15mm LED светодиод зеленый
SW110-ти канальный DIP переключатель 6)
CN15-pin 0.1» header (not used)
ICSP 5-pin 0.1« header (not used)
CN22-pin 0.1» header (not used)
JP12-pin 0.1« header
TERM2-pin 0.1» header
2,54mm jumper links for shorting JP1 / TERM header
DMXin 3-way, 5mm, screw-terminal
Power-in terminal block 4-way, 5mm, screw-terminal, 16 amp (2 x 2-way end stackable)
Channel output terminal block 8-way, 5mm, screw-terminal, 16 amp (4 x 2-way end stackable)
IC1 сокет14 пиновый DIP сокет
IC3 socket8 пиновый DIP сокет
IC4 socket

Альтернативная замена компонентов

Резистор R13 и все другие резисторы 0.125 (1/8) могут быть замещены своими, главное чтобы хватило места.

Выходные мосфеты Q1-Q4 STP36NF06L или STP20NF06L могут быть замещены на свои, но с последующим радактированием выходного логического уровня контроллера в прошивки под свои транзисторы.

Альтернатива RS-485 приемника, IC3.

Установка элементов на плату

1. При пайке полевых элементов(Q1,2,3,4) и других компонентов IC’s 1,3, 4 желательно использовать антистатик. Самый лучший вариант, это использовать паяльную станцию. Вы получите антистатическую защиту (полезно при пайке полевых элементов и других капризных бяк). Если же нет паяльной станции не растраивайтесь, можно самостоятельно доработать станцию / паяльник: заземление жала в большинстве случаев помогает. Это конечно не та антистатика, которая есть в навороченных станциях, но помогает не хуже.

2.Делаем перемычку, или спаиваем между собой два контакта RA4-RE как показано на картинке.

3. Припаиваем резисторы на нашу плату.

Резистор 0.125 довольно маленький, и цветные полосы на нем очень плохо читаемы.(Сопротивление резисторов, номинал можно проверить мультиметром.)

120R [коричневый – красный – коричневый – золотой] R1, R2, R3, R4

120R [коричневый – красный – коричневый – золотой] R13 (R13 является больше 0,25 Вт резистором)

330R [оранжевый – оранжевый – коричневый – золотой] R12

1K0 [коричневый – черный Красное – золото] R14

10K [коричневый – черный-оранжевый – золото] R5, R6, R7, R8, R10, R11

Резистор R9 не используется в этом проекте.

4. Припаяем наши диоды D1 по D11. Это все тот же тип диодов 1N4148

5. Установите три 100nF конденсатора на С2, С3 и С5.

6. Установить мосфеты Q1,Q2,Q3,Q4

Установка транзисторов

Повторить для каждого транзистора

Специально под транзисторами находится небольшое поле меди. Это будет служить как теплоотвод от транзистора, который будет проводить ток до 12 ампер.

7. Установите три гнезда IC на печатной плате. Убедитесь, что все штифты проходят через отверстия в печатной плате и убедитесь, что ни один из контактов не согнут под сокет перед пайкой.

8. Установите регулятор напряжения 78L05 на печатную плату.

9. Установить на место 330nF конденсатор С1. Отмечен как .33J63 (альтернативна 470nF)

10. Установить светодиод.

11. Припаять 2-х контактные разьемы JP1(DMX-Config) и TERM

12. Припаять 10-полосный DIP-переключатель. Убедитесь в том, чтобы установить его так, что переключатель «ON» положении находится ближе всего к краю печатной платы, как показано на фото.

13. Установить 5мм винт клеммные колодки к печатной плате.

14. На обратной стороне печатной платы имеется короткая перемычка открытой меди между концевыми блоками. Необходимо пропаять оловом эту перемычку.

Перед установкой трех IC элементов в гнезда, проверьте 5 вольт питания к плате. Подключите подходящий источник питания постоянного тока + VB и GND соединений клеммной колодки разъема питания. Выходное напряжение источника питания должно быть в диапазоне от 9 до 18 вольт. Измерьте напряжение в контрольной точке 5 вольт на печатной плате, как показано на фото.

Измеренное здесь напряжение должно находиться в диапазоне от 4,8 вольт и 5,2 вольт. Если оно не находится в пределах этого диапазона нужно устранить неисправность. После того, как питание 5 вольт было проверено и работает правильно, отключить питание, прежде чем продолжить.

15 Установите три микросхемы в гнезда на плате

IC1 представляет собой 14-контактный элемент, обозначенный PIC16F1823 IC3 является 8-контактный элемент, обозначенный SP485 IC4 представляет собой 16-контактный элемент, обозначенный HCF4017BE Установите каждый IC в свое гнездо. Поскольку каждая микросхема имеет различное количество контактов имеется только один разъем, который соответствует каждому устройству.

Управляющие клемы на плате требуется вход источника питания в диапазоне от 9 вольт до 18 вольт постоянного тока. Это клемы + VB и GND на клеммной 4-полосной колодке.

Если канал Выходы работают в 9 вольт до 18 вольт необходимо поставить перемычку LK1 она подключает вход питания на вход питания самой управляющей электроники с выхода + VF на клему + VB, убирая необходимость в двух источников питания или дополнительных проводов на выводах разъемов.

Напряжение на LK1 должно находится в диапазоне 9-18 вольт. Ниже 9 вольт плата не будет работать правильно. Больше 18 вольт могут сгореть компоненты на плате.

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

Подключение разьема

Параметры и режимы устройства

Плата DMX имеет конфигурируемые пользователем режимы работы, как? Будет кратко изложено ниже.

Режим вывода привода

Выходы могут быть сконфигурированы для работы в режиме ШИМ или цифровом режиме. Каждый канал может быть индивидуально настроен для работы в любом PWM или цифровом режиме. В режиме ШИМ выходной канал работает с 8 битным ШИМ – сигналом на частоте 200 Гц. DMX значения канала выглядит так 0 = 0% до 255 = 100% В цифровом режиме выходной канал либо включен , либо выключен.

В Цифровом режиме контролер ведет себя следующим способом:

Спареный режим При включенном режиме все четыре выхода управляются одним DMX каналом.

Нет сигнала DMX В этом режиме контролер не получив сигнал(или неверные данные) может сбрасывать шим(выключать выходы) или оставаться в их последнем рабочим состоянии до потери сигнала. Есть возможность задать цикл на ШИМ, для плавного затухания на выходах до 0%. Время до Когда водитель прекращает получать достоверные данные DMX выходы могут быть сконфигурированы либо оставаться в их нынешнем состоянии / поддержания цикла ШИМ – сигнала, или отключить / установить цикл ШИМ – сигнала до 0%. Время от последнего рабочего пакета до полной отстановки составляет 1,5 секунды(т.е не получив пакетов до 1,5 сек контроллер сбрасывает шим/оставляет выходы на последнем значении).

DMX адрес первого канала Может быть установлен от 1 до 509.

Методы настройки режимов работы контролера Драйвер может быть сконфигурирован с использованием следующих методов:

Индикаторы приема DMX и их расшифровка

В прошивке заложены статусы приема данных DMX сигнала.

Применение приёмопередатчиков RS-485 в оборудовании стандарта DMX512

Оборудование сценического освещения и создания спецэффектов, применяемое в современных драматических и оперных театрах, концертных залах и на спортивных аренах, использует сложные сети передачи данных. Эти сети, протяжённость которых нередко достигает 1200 м, обеспечивают обмен данными между сотнями сетевых узлов, управляющих светорегуляторами, подвижными прожекторами, генераторами дыма и другим оборудованием для создания спецэффектов. Первым стандартом, описывающим методы надёжного обмена данными между устройствами такого рода, стал стандарт DMX512, разработанный в 1986 году инженерным комитетом Института Театральных Технологий США (United States Institute for Theatre Technology — USITT). В 1998 году поддержку этого стандарта взяла на себя ассоциация поставщиков услуг и технического обеспечения для индустрии развлечений (Entertainment Services and Technology Association — ESTA). Обновлённая версия стандарта в 2004 году была одобрена Американским национальным институтом стандартов (American National Standards Institute — ANSI). Стандарт был повторно пересмотрен в 2008 году и в настоящее время является официальным стандартом ANSIE1.11 2008, который называется «Entertainment Technology — USITTDMX512A — Asynchronous Serial Digital Data Transmission Standard for Controlling Lighting Equipment and Accessories», или, кратко, DMX512-A.

Топология

Сеть DMX512 использует многоточечную топологию, аналогичную описанной в стандарте RS-422. Такая топология предусматривает наличие одного контроллера (ведущего узла), который периодически отсылает управляющие данные множеству приёмников (ведомым узлам). Все узлы сети соединены последовательно (цепочкой): каждый ведомый узел имеет вход (разъём IN) и выход (разъём OUT). Контроллер, имеющий только разъём OUT, подключается к разъёму IN первого ведомого узла. Разъём OUT первого ведомого соединяется с разъёмом IN следующего ведомого, и т.д.
К разъёму OUT последнего ведомого в цепочке подключается оконечная нагрузка — резистор сопротивлением 100 или 120Ом.
Чтобы избежать путаницы между входящими и исходящими информационными сигналами портов DMX512, в качестве разъёмов IN используются вилки XLR-5, а в качестве разъёмов OUT — розетки XLR-5:

Протокол

Контроллер DMX512 передаёт пакеты последовательных данных в асинхронном режиме со скоростью 250 Кбит/с. Пакет данных начинается с сигнала паузы (break), имеющего НИЗКИЙ уровень, после которого передаётся сигнал маркера (mark) ВЫСОКОГО уровня. Эта последовательность называется «маркер после паузы» (Mark-After-Break — MAB). После MAB формируются временные слоты, в каждом из которых передаётся одно слово, состоящие из одного старт-бита, восьми битов данных и двух стоп-битов. Пакет DMX512 может содержать до 513 временных слотов, из которых 512 будут слотами данных. Первый слот, называемый стартовым кодом, определяет тип данных, содержащихся в пакете.

Физический уровень

Физический уровень сети стандарта DMAX512-A реализован на основе промышленного интерфейса EIA-485, который позволяет подключать к одному сегменту шины до 32 устройств при длине сегмента до 1200 м. Для соединения устройств обычно используется витая пара с волновым сопротивлением 120 Ом (кабель RS-485) или 100 Ом (кабель CAT5). На дальнем конце шины устанавливается согласующий резистор с сопротивлением, равным волновому сопротивлению кабеля.
В дополнение к требованиям стандарта EIA-485, стандарт DMX512-A рекомендует заземлять порты передатчиков и изолировать порты приёмников, чтобы избежать возникновения паразитных контуров заземления.

Кроме того, стандарт DMX512-A предусматривает возможность использования топологий с расширенной функциональностью (Enhanced-Functionality — EF), в рамках которых разрешается применение устройств-ответчиков (responders). Ответчиками называются приёмные узлы, которые могут возвращать контроллеру информацию о своём состоянии. Наиболее часто применяются топологии EF1 и EF2. В топологии EF1 для связи между контроллером сети DMX512 и ответчиками используется полудуплексный канал связи, тогда как топология EF2 обеспечивает дуплексную связь между узлами
сети. Но в любом случае ответчики, относящиеся к категории приёмных устройств, должны иметь изолированные порты приёма и передачи.
В приложениях подобного рода лучше всего задействовать дуплексные приёмопередатчики RS-485, поскольку их можно приспособить не только для обычных систем DMX512 (с устройствами, обеспечивающими только приём данных), но и для полудуплексной и дуплексной конфигураций, используемых в системах EF1 и EF2 соответственно.
Ниже показан законченный вариант схемы устройства-ответчика, удовлетворяющий требованиям стандарта DMX512-A. Изолированный малопотребляющий приёмопередатчик ISO35T компании Texas Instruments с напряжением питания 3.3 В формирует сигналы, соответствующие спецификации шины RS-485, обеспечивая дифференциальное выходное напряжение
с номинальным значением 2 В (минимум — 1.5 В) при полной дифференциальной и синфазной нагрузке. Максимальная скорость передачи этой микросхемы составляет 1 Мбит/с, что с лихвой перекрывает требуемые стандартом DMX512-A 250 Кбит/с, а относительно большие длительности фронтов (200 нс) гарантируют низкий уровень электромагнитных помех.

В приведённой схеме управляющие данные, полученные по шине DMX512, преобразуются компаратором и передаются через изоляционный барьер на выход R приёмника. С этого выхода данные поступают на вход интерфейса UART микроконтроллера MSP430F2132 компании Texas Instruments. Микроконтроллер передаёт полученные данные по высокоскоростному синхронному
последовательному интерфейсу в 8-канальный цифро-аналоговый преобразователь (ЦАП). Применённая микросхема ЦАП DAC7718 компании Texas Instruments может формировать на своих выходах двухполярные сигналы напряжением до ±16.5 В и однополярные сигналы напряжением до 33 В.
Остальные элементы схемы сетевого узла, включая ЦАП, микроконтроллер и приёмопередатчик, питаются от однополярного источника напряжением 3.3 В. Для питания изолированной части интерфейса используется линейный стабилизатор с малым падением напряжения (TPS76333 от TI), обеспечивающий ток до 150 мА, а также защиту от перегрева и короткого замыкания.

Из «Журнала по применению аналоговых компонентов» Третий квартал, 2011 Thomas Kugelstadt

Проект DMX512. Микроконтроллер управляет профессиональным шоу. Ч.3

Я думаю, что прочитав теоретическую часть, в которой не всё сразу понятно, лучше сразу потихонечку приступим к практике.
Схему приемника и передатчика DMX, которую я предлагаю изучить, можно найти в просторах интернета, но она заброшена.
Мне кажется, что человек, который её придумал, пошел дальше и ему это устройство стало неинтересно. А нам, как начинающим, познавать этот микроконтроллерный мир, в самый раз .

Какой микроконтроллер лучше, а какой хуже, спор вечный, это также как на чём лучше писать программы на Ассемблере, VB, СИ или Delphi.
Да выбирайте, какой вам по душе, все они хороши, если знаешь что с ними делать.
Для меня, как начинающего, по душе сейчас простой PIC16F84, Proteus, Ассемблер и Delphi.
Ну и конечно набор программ, облегчающий жизнь программиста.

Содержание / Contents

↑ Начнем изучение схемы передатчика

Передатчик состоит из набора резисторов, пару конденсаторов, кварцевого резонатора, кнопочек и соответственно самого «мозга» микроконтроллера PIC16F84A.

↑ Список деталей:

1. Кнопки-переключатели (любые) – 12 шт.
2. R1-R12 10k
3. R13 4.7k
4. C1-C2 15p
5. D1 1N4148
6. U1 PIC16F84A

↑ Принципиальная схема

↑ Программа на ассемблере

Здравствуй, читатель! Меня зовут Игорь, мне 45, я сибиряк и заядлый электронщик-любитель. Я придумал, создал и содержу этот замечательный сайт с 2006 года.
Уже более 10 лет наш журнал существует только на мои средства.


Спасибо за внимание!
Игорь Котов, учредитель журнала «Датагор»

;Asm файл для pic16c84 или 16f84, работает с кварцем 1MHz
;12 входов, управление переключателями (резисторы на «землю», перекл. на +5v)
; DMX выход с 1 по 12 канал, включаются (FFh), все остальные коды отключают канал.
; port A0 – DMX выход, соединяют с микросхемой sn75176 dmx driver (в другой схеме ;будет)

list p=16F84;
#include
__config _CP_OFF & _HS_OSC & _WDT_OFF & _PWRTE_ON

Reg_1 equ 0x00
Reg_2 equ 0x00
ch1 equ 0x10
ch2 equ 0x11
ch3 equ 0x12
ch4 equ 0x13
ch5 equ 0x14
ch6 equ 0x15
ch7 equ 0x16
ch8 equ 0x17
ch9 equ 0x18
ch10 equ 0x19
ch11 equ 0x1A
ch12 equ 0x1B
org 0x00
goto start
org 0x05
start
CLRF PORTA ;NEW
CLRF PORTB ;NEW

bsf STATUS,RP0
movlw 0xFF ; port b input
movwf TRISB
movlw 0xFE ; portA0 output, other bits input
movwf TRISA
movlw b’11010000′
movwf OPTION_REG
movlw b’00100000′ ; don’t allow interrupt
movwf INTCON
bcf STATUS,RP0
begin movlw 0x00
movwf ch1
movwf ch2
movwf ch3
movwf ch4
movwf ch5
movwf ch6
movwf ch7
movwf ch8
movwf ch9
movwf ch10
movwf ch11
movwf ch12
movlw 0xff
btfsc PORTB,0
movwf ch1
btfsc PORTB,1
movwf ch2
btfsc PORTB,2
movwf ch3
btfsc PORTB,3
movwf ch4
btfsc PORTB,4
movwf ch5
btfsc PORTB,5
movwf ch6
btfsc PORTB,6
movwf ch7
btfsc PORTB,7
movwf ch8
btfsc PORTA,1
movwf ch9
btfsc PORTA,2
movwf ch10
btfsc PORTA,3
movwf ch11
btfsc PORTA,4
movwf ch12
;—————————————————
dmxout
;—————————————————
;delay 2 cycle = 8uS
;—————————————————
bsf PORTA,0 ; PORTA =0000 0001
bsf PORTA,0 ; PORTA =0000 0001
;—————————————————
;delay 22 cycle = 88uS BREAK
;—————————————————
bcf PORTA,0 ; PORTA =0000 0000
movlw 0x06 ; PORTA =0000 0000
movwf Reg_1 ; PORTA =0000 0000
wr decfsz Reg_1, F ; PORTA =0000 0000
goto wr ; PORTA =0000 0000
nop ; PORTA =0000 0000
nop ; PORTA =0000 0000 88uS BREAK
;—————————————————
;delay 2 cycle = 8uS
;———————————————–
bsf PORTA,0 ; PORTA =0000 0001
bsf PORTA,0 ; PORTA =0000 0001
;—————————————————
;delay 9 cycle = 36uS begin startcode
;———————————————–
bcf PORTA,0 ;startbit ; PORTA =0000 0000
;delay = 8 machine cycles
nop
nop
movlw .2
movwf Reg_2
wr1 decfsz Reg_2, F
goto wr1
nop
;———————————————–
bsf PORTA,0 ;stopbits
bsf PORTA,0
bsf PORTA,0
;———————————————–
movlw 0x10
movwf FSR
chanel
movf INDF,w
;—————————————————
;delay 8 cycle .
;———————————————–
bcf PORTA,0
movwf PORTA
nop
nop
nop
nop
nop
nop
nop
;———————————————–
bsf PORTA,0
bsf PORTA,0
bsf PORTA,0
;———————————————–
bcf STATUS,2
clrwdt
incf FSR
movf FSR,w
xorlw 0x1C
btfss STATUS,2
goto chanel
goto begin
end

Плата разработки PIC для RS485 и DMX512: схема, печатная плата

Цель разработки – создание прототипа для отладки функционала и начала работ программирования финального изделия.

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

Программный код генерации меандра на ассемблере в MPLAB X доступен по данной ссылке.

В отладочной плате реализован следующий функционал:

Преобразователи напряжений 9-36V на 3.3 и 5V

LED Дисплей WINSTAR 20*4 (PCF8574)

Матричная клавиатура 4*4 (PCF8574)

Управление восьмью внешними устройствами (PCF8574)

RS232 для связи с ПК и подключений GPS модуля

I2C преобразователь уровней 3.3V/5.0V для связи с линукс контроллером.

I2C часы реального времени.

I2C датчик клавиатуры.

Собрана и тестируется минимальная конфигурация. Контроллер PIC32MZ0512EFE064 и преобразователи напряжения на TPS5420-5V и MCP16301T-I/CH-3.3V.

10.2018 Ошибки в прототипе.

RS232 SP3232EUCN-L не подключен к выводам микроконтроллера, подаётся неверное питание 5V.

Сделать подтягивающие резисторы I2C для 3.3V через перемычки, так как внешний контроллер содержит подтягивающие резисторы 1.8ком.

Вывести ICSSP в центр, чтобы подключать PickIt 3 без переходников.

Убрать JTAG. Не заработал. Нет желания иразбираться почему.

Добавить в затвор 2N7002 резисторы 10-20 ом, добавить светодиоды.

Вывести линию EN дисплея на микроконтроллер.

Программный код примера записи в регистр pcf8574 MPLAB X доступен по данной ссылке.

Программный код примера записи в регистр pcf8574 MPLAB X доступен по данной ссылке.

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

Ошибка линии данных SDA определяется флагом I2C1STATbits.BCL и решается путем установки в ноль и затем поднятием шины SCL. В примере работы с шиной I2C выполняется повторная инициализация модуля I2C. При инициализации модуля шина SDA и SCL сбрасывается в ноль. После инициализации i2c I2C1CONbits.I2CEN = 1, работа продолжается корректно.

Подключение дисплея к порту pcf8574 позволяет работать с дисплеем с внешнего линукс/windows компьютера по i2c шине. Поскольку используется только один порт pcf8574, работа с дисплеем осуществляется в 4-х битном режиме. Фактическая запись данных в дисплей происходит по спаду фронта линии EN. Поскольку линия EN так же находится на выводе pcf8574, приходится повторно передавать байт данных, это избыточно. Возможно есть смысл подключать EN к порту микроконтроллера.

I2C1SendByte( lcdByte | LCD_EN );// Записать данные.
I2C1SendByte( lcdByte );// Сброить EN.

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

I2C1SendAddress( LCD_WA );// Адрес pcf8574.
// 0x33
I2C1SendByte( 0b00110100);// 0x3 | EN.
I2C1SendByte( 0b00110000);// Сброс EN.
I2C1SendByte( 0b00110100);// 0x3 | EN.
I2C1SendByte( 0b00110000);// Сброс EN.
// 0x32
I2C1SendByte( 0b00110100);// 0x3 | EN.
I2C1SendByte( 0b00110000);// Сброс EN.
I2C1SendByte( 0b00100100);// 0x2 | EN.
I2C1SendByte( 0b00100000);// Сброс EN.

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

Простейшая программа вывода текста на компьютер доступна по данной ссылке.

Передача данных в стандарте RS485 организована через аппаратный интерфейс UART микроконтроллера, к которому подключен передатчик ISO3088. Использование ISO3088 избыточно, поскольку гальваническая развязка не используется, используется преобразование уровня из 3.3V UART в 5 вольт RS485.

Для связи с компьютером используется преобразователь интерфейса RS485 в USB Uport 1150. В качестве терминала использована штатная программа, идущая с Moxa Uport 1150, работоспособен и PuTYY терминал.

ISO3088 требует переключения из режима передачи в режим приёма данных по шине. Это достигается изменением состояния четвертого и пятого выводов ISO3088. При смене направления передачи данных требуется задержка в програмном коде UART.

Читайте также:  Электронный ключ для дома
Ссылка на основную публикацию