====== DMX512 приемник, на 4 канала ====== ===== Описание ===== В этой статье, я расскажу вам как сделать приемник сигнала DMX512 на 3 канала управления. Данный приемник [[:wiki:dmx_512|DMX]] способен управлять 3мя каналами RGB светодиодной ленты, или же любым другим неуправляемым оборудованием. Данная версия приемника может быть улучшена до 4-5-6 и до 8 каналов. Впринципе зависит от микросхемы контроллера, в зависимости от количества ее выходов. В данной версии 3 независимых выходных **ШИМ** канала основанных на **МОСФЕТ** транзисторах. Основная цель этого проекта заключается в создании недорогого **DMX512** приемника, собранного на простых элементах. ===== Элементы ===== ^ Элемент ^ Свойства ^ Описание ^ | 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| |[[:wiki:dmx_512|DMX]]|[[:wiki:xlr|XLR]]|Разьем [[:wiki:xlr|XLR]] или схожий с ним| |6N137|6N137|Оптрон для гальванической развязки линий.(//Установите правильно//)| |MAX481|MAX481(или MAX482)|Микросхема преобразователь дифференциального сигнала [[:wiki:dmx_512|DMX]] в логический сигнал| |DC1|0505|Чип питания отдельной линии, используется для гальванической развязки| ===== Схема контроллера и платы ===== ==== Схема ==== {{ :zheleznaja_chast:dmxrec.v3.schema.png?600 |}} ==== Плата ==== {{ :zheleznaja_chast:dmxrec.v03.front.jpg?400 |}} ===== Прошивка Микроконтроллера ===== Скачать прошивку МК{{:zheleznaja_chast:dmxspot.zip|}} Библиотека [[:wiki:dmx_512|DMX]] 512 для МК {{:zheleznaja_chast:dmxserial-master.zip|}} ===== Модернизация ===== Вы сможете собрать готовую схему на монтажной плате, и попробовать как работает эта схема. А также в зависимости от опыта работы с МК, вы сможете заменять разные узлы данной схемы, например вместо транзисторов использовать реле для большой нагрузки, или сервоприводы и.т.д ===== Прошивка ===== Необходимую библиотеку добавить в папку с компилятором. //Пример прошивки ниже// #include // Константы выходных пинов 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** - устанавливает [[:wiki:dmx_512|DMX]] адрес. ===== Готовый вид платы выглядит так ===== {{:zheleznaja_chast:dmxrec.v03.assembled.jpg?200 |}} {{:zheleznaja_chast:dmxspot.ledstripe.jpg?200 |}} {{:zheleznaja_chast:dmxrec.v03.back.jpg?200|}} ===== Готовое устройство ===== {{:zheleznaja_chast:dmxspotproto1.jpg?200 |}} {{:zheleznaja_chast:dmxspot09.jpg?200 |}} {{:zheleznaja_chast:dmxspot08.jpg?200|}} {{tag>DMX512 DMX приемник "своими руками" схема}} ---- [[zheleznaja_chast:priemnik_dmx_512_signala|Смотрите так-же второй вариант приемника DMX сигнала.]]