В этой статье, я расскажу вам как сделать приемник сигнала DMX512 на 3 канала управления. Данный приемник DMX способен управлять 3мя каналами RGB светодиодной ленты, или же любым другим неуправляемым оборудованием. Данная версия приемника может быть улучшена до 4-5-6 и до 8 каналов. Впринципе зависит от микросхемы контроллера, в зависимости от количества ее выходов. В данной версии 3 независимых выходных ШИМ канала основанных на МОСФЕТ транзисторах.
Элемент | Свойства | Описание |
---|---|---|
R1, R2, R3 | 120 Ω | Резистор коричневый, красный, черный, черный, коричневый или коричневый, красный, коричневый, серебряный |
R4, R6 | 470 Ω | Резистор желтый, фиолетовый, черный, черный, коричневый или (желтый, фиолетовый, коричневый, серебряный |
R5 | 10k Ω | Резистор коричневый, черный, черный, красный, коричневый или коричневый, черный, оранжевый, серебряный |
R7 | 510 Ω | Резистор зеленый, коричневый, черный, черный, коричневый или зеленый, коричневый, коричневый, серебряный |
D1 | 1N4004 | Диод выпрямитель для защиты. |
Q1 | 16 МГц | 16 МГц часы кристалл.(Желателен, но не обязателен в сборке) |
С2, С3 | 22 пФ | Конденсаторы на 22 пикрофарата |
С6, С7 | 100 мкФ | Электролитические конденсаторы на 100 микрофарат(Установите правильно) |
С4 | 33 мкФ | Электролитический конденсатор на 33 микрофарата |
С1, С5, С8 | 100 нФ | Конденсаторы для фильтрации шума силовых линий. |
LED1 | Светодиод | Светодиод для индикации |
S1 | Переключатель для выбора адреса | |
7805 | 7805 | Регулятор напряжения 5 вольт. |
POWER | PWD | Разьем питания |
ATmega168 | ATmega168 | Микроконтроллер для управления |
ICSP | ICSP | Разьем для программирования Atmega168 |
DMX | XLR | Разьем XLR или схожий с ним |
6N137 | 6N137 | Оптрон для гальванической развязки линий.(Установите правильно) |
MAX481 | MAX481(или MAX482) | Микросхема преобразователь дифференциального сигнала DMX в логический сигнал |
DC1 | 0505 | Чип питания отдельной линии, используется для гальванической развязки |
Скачать прошивку МКdmxspot.zip
Библиотека DMX 512 для МК dmxserial-master.zip
Вы сможете собрать готовую схему на монтажной плате, и попробовать как работает эта схема. А также в зависимости от опыта работы с МК, вы сможете заменять разные узлы данной схемы, например вместо транзисторов использовать реле для большой нагрузки, или сервоприводы и.т.д
Необходимую библиотеку добавить в папку с компилятором. Пример прошивки ниже
#include <DMXSerial.h> // Константы выходных пинов const int RedPin = 9; // Пин для красного const int GreenPin = 6; // Пин для зеленого const int BluePin = 5; // Пин для синего void setup(void) { DMXSerial.init(DMXController); pinMode(RedPin, OUTPUT); pinMode(GreenPin, OUTPUT); pinMode(BluePin, OUTPUT); analogWrite(RedPin, 80); analogWrite(GreenPin, 80); analogWrite(BluePin, 80); } //Установка значений для 3 каналов RGB с указанным оттенком (0...764) void setChannelRGB(int channel, int hue) { hue = hue % 765; if (hue < 256) { /// От синего к красному DMXSerial.write(channel , hue); DMXSerial.write(channel+1, 0); DMXSerial.write(channel+2, 255-hue); } else if (hue < 511) { /// От красного до зеленого DMXSerial.write(channel , 255 - (hue-255)); DMXSerial.write(channel+1, hue-255); DMXSerial.write(channel+2, 0); } else { /// От зеленого к синему DMXSerial.write(channel , 0); DMXSerial.write(channel+1, 255 - (hue-510)); DMXSerial.write(channel+2, hue-510); } // if } // setChannelRGB() void loop(void) { unsigned long now = millis(); int channeldmx= 1; int alpha = (now / 12) % 765; for (int n = 0; n < 20; n++) { setChannelRGB (n*3+1, alpha + n*64); } analogWrite(RedPin, DMXSerial.read(channeldmx+0)); analogWrite(GreenPin, DMXSerial.read(channeldmx+1)); analogWrite(BluePin, DMXSerial.read(channeldmx+2)); }
Переменная channeldmx - устанавливает DMX адрес.