====== 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 сигнала.]]