Dmx своими руками схема

Реализация управления по 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 гальванические развязки. Особенно это актуально при работе в нелегких сценических условиях. Сжечь материнскую плату в середине концерта удовольствие неприятное.

Источник

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 по заказу РадиоЛоцман

Источник

DMX512 Контроллер на 40 каналов

Решил опубликовать интересное устройство, которое заинтересует довольно обширный круг людей. Речь пойдет о DMX-контроллере своими руками.

Данное устройство реализовано на микроконтроллере ATmega64A. Тактируется мк от кварцевого резонатора на 16 MHz , тактовая частота выбрана максимальной по документации , так как многоканальный программный ШИМ очень сильно загружает процессор , и реализовать высокочастотный ШИМ представляет трудность на низких тактовых частотах. В данной прошивке ШИМ работает на частоте 79Гц , потому как при более высокой частоте уже перестает работать usart интерфейс, и данные по dmx уже не принимаются .

Принцип работы программы очень прост :

Тут я не буду детально рассказывать о протоколе dmx512 и о физической шине rs485. Эту информацию можно найти в интернете.

В прерывании usart определяется ошибка приема данных , это сигнализирует мастер о начале пакета (команда BREAK 44us=>) . Следующий этап : в прерывании usart ловится MAB длительностью 4us и затем start bit с нулевым значением и только после этого программа принимает сами данные диммеров , и складывает в массив последовательно начиная с 0 ячейки. Затем в прерывании таймера этот массив сравнивается с программным таймером каждого канала и выполняется либо включение цифрового выхода , либо выключение. Также в этом прерывании выполняется адресация диммеров .

Читайте также:  Как сделать вентилятор своими руками с водой

Работает это следующим образом: Если например задан адрес 10 для диммера , то буфер сравнивается с таймерами начиная с 10 адреса . Таймер 1 с буфером 10 , таймер 2 с буфером 11 и т.д. Можно конечно было чуток оптимизировать расход озу микроконтроллера, но это не имеет смысла , ресурсов в МК предостаточно.

Программируется контроллер не переключателями как в стандартных приборах , а прямо через тот же кабель и dmx передатчик. Для этого в основном цикле программы проверяется флаг занятости шины dmx. Определяется программно . Если команды BREAK не было (флаг = 0) то значит dmx не занят пока что, и АТ команды можно принимать .
Сделано так по нескольким причинам : 1 устройство будет закрыто в щитке и доступа к нему не будет, а адрес возможно нужно будет периодически менять, без вскрытия щитка. Вторая причина , это наличие уже готовых заводских плат идеально подходящих для данного проекта .

Тестировалось данное устройство в программе Freestyler и на приемопередатчике USB <>rs485 с чипом FT232 . Для программирования данного устройства нужно использовать как раз такой преобразователь (с двухсторонней передачей данных) у обычных dmx «свистков» выпилено физически прием данных. Хотя , можно и стандартным dmx шнурком запрограммировать плату . Только пользователь не узнает ответ от платы с подтверждением.

Самая нижняя схема (на МК ATmega8A) представляет собой «конфигуратор» , который может задавать предустановленные значения уровней яркости . Всего их 10шт.
В следующей версии будет создана прошивка для конфигуратора.
Плату можно с легкостью прошить программатором со стандартным ISP 6pin коннектором , или 10 пиновым коннектором , но подключенным через переходник к плате.
Фьюзы следующие :

Аппаратная часть поддерживает установку приемопередатчика на 433МГц HC-12 или WiFi ESP-01 (ESP8266), программно не реализовано в текущей версии. При необходимости индивидуально можно этот функционал добавить. К примеру управление контроллером через WiFi с веб интерфейсом , или по MQTT протоколу.

Демонстрационная прошивка работы устройства имеет полноценный функционал и на ее основе можно собирать и развертывать последовательно огромное количество каналов «диммеров» , к примеру , можно свободно собрать 10шт. таких плат и получится 320 каналов диммеров и 80 1 битных каналов , для строба или вкл./выкл. нагрузки.
Есть также прошивка на 40 чистых каналов диммеров (тут не публикую) у нее чуть ниже частота ШИМ (около 59Гц ) и она тоже прекрасно работает.

Фото собранного устройства:

Для перепрограммирования DMX контроллера , необходимо закрыть программу управления (Freestyler к примеру если ее используете) а запустить предварительно установленную программу Терминал (например бесплатную Terminal 1.9b)

открыть ком порт который использует DMX переходник , например СОМ2 и настроить скорость обмена 250000 бод.

АТ команды для перепрограммирования адреса и прочих опций DMX контроллера следующие:

AT+REV? — версия программного обеспечения.
ответ платы такой:
REV 1.0
DEC 2018
autor: Artem Ugrimov

AT+TEST> — тестовая команда , включение всех выходов на 1 секунду. Для проверки исправности силовой части контроллера и т.д.
ответ платы такой: TEST_OK! если команда успешно принята и выполнена.

AT+PWM_SET> — тестовая команда , проверка регулятора ШИМ . После стрелки нужно дописать число от 0 до 255. Например: AT+PWM_SET>25 . Отправив эту команду на всех каналах установится значение ШИМ 25. На 8 1 битных каналах установится максимальное свечение так как лог.0 считается если значение регистра меньше 10 , а лог.1 если больше 10.
ответ такой: PWM_OK=25, или PWM_ERR если ошибка.

AT+CONFIG> — Команда для смены адреса контроллера. По умолчанию адрес = 0. Для смены адреса нужно отправить значение (от 1 до 511) адреса в таком формате: AT+CONFIG>48 .
ответ такой: AT+CONFIG>OK! — если успешно , и ADDR_SET_OK=Х если ошибка . Х возвращенное значение , которое было принято.

Список компонентов, схемы, герберы и прошивку можно скачать ниже

Источник

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