Главная » Микроконтроллеры
Призовой фонд
на декабрь 2019 г.
1. 1000 руб
Паяльник
2. 100 руб.
От пользователей

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=Х если ошибка . Х возвращенное значение , которое было принято.

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

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

Теги:

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

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

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

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

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

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
+1
Antares #
Сюда можно было бы воткнуть расширители ШИМ-каналов на PCA9685, и 328-й мегой без особого напряга рулить 512 каналами с настраиваемой частотой ШИМ от 25 до 1500 Гц. А так - зачётно, только с повышением частоты ключи не будут успевать закрываться.
Ответить
0

[Автор]
Artos5 #
Добрый день! Не буду сильно спорить , но скорее всего решение будет не сильно подходящим. В DMX512 скорость обмена 250000бод. На какой частоте может работать шина i2c в этого чипа ?
И второе : были готовые платы , которые подходят к данной задаче. Поэтому изготовление новых плат повлекли бы к сильным затратам.
Ответить
+1
Antares #
А я и не пытался. У меня был массив из 512 значений DMX, который я обновлял по мере поступления прерываний от уарт + массив с флагами изменения значений массива каналов + таймер для отслеживания начала нового цикла. А в I2C я закидывал только изменённые данные из вышеупомянутого массива по кругу по мере поступления прерываний от I2C. Таким образом I2C и UART живут отдельно друг от друга, каждый на своей скорости и общаются только через массив. Да, некоторые градации яркости при резких переходах терялись, но это было совершенно не заметно. И я не говорю, что моё решение единственно правильное, просто в Вашем случае невозможно обеспечить большую частоту ШИМ без джиттера. У 9685 I2C живёт на 1МГц.
Ответить
0

[Автор]
Artos5 #
А большая частота ШИМ и не надо по сути. Мерцания нету , глаза не устают. Я делал 40 каналов на 400Гц ШИМ на МК STM32F100 . Но , повторюсь , что сделал так потому как платы заводские подходящие были :)
Ответить
0
Zlodey #
79 Гц это крайне мало... Глаза устанут, при съёмке на телефон - изображение будет рябить, итд... Хорошо, если устройство управляет лампами накаливания... Если устройство напрямую управляет светодиодной лентой, то надо минимум 500-1000 Гц.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Макетная плата для пайки (10 шт) Металлоискатель MD3010II
вверх