Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

DMX RGB LED externo

Componentes e suprimentos

Arduino Nano R3
× 1
Adafruit PCA9685 16PWM canais I2C
× 1
próprios PCBs
× 1

Aplicativos e serviços online

Arduino IDE
freestyler controle DMX

Sobre este projeto


Oi pessoal, eu já tenho muitas luzes controladas por DMX dentro de casa, mas também queria ter algumas fora. Como estas luzes RGB DMX são bastante caras (cerca de 200 - 300 €), procurei alternativas.

O que eu encontrei foram essas inundações LED RGB realmente baratas com unidades de controle IR. São cerca de 8 € / 10W RGB.

Então, tudo que eu tive que fazer foi convertê-los para entender o DMX.

Para manter os custos e o espaço necessário de PCB baixos, todas as 5 inundações têm apenas um cérebro Arduino em uma caixa separada. Cada luz possui PCBs de fonte de corrente constante acionada por PWM de 3 canais e um cabo conector D-Sub 9. Este PCB se encaixa perfeitamente no pequeno compartimento na parte inferior da luz. Cada canal para o LED é definido para 350mA.



Todas as 5 luzes são conectadas a uma caixa central com o arduino e o receptor DMX sem fio



Dentro desta caixa estão:
  • Fonte de alimentação 12 V 3,5 A
  • 12V - carregador de celular 5V
  • Ardunino Nano no próprio PCB para conversor DMX (RS485)
  • Extrensão PWM do Ardufruit 16 canais sobre I2C
  • Receptor DMX sem fio
  • PCBs de distribuição para cabos de fita D-Sub
  • Muita cola quente para torná-lo impermeável

Ele sobreviveu até agora 3 semanas sob forte chuva, costura a caixa e a vedação é à prova d'água.

O PCB onde montei o Nano é universal para todos os meus projetos DMX, ele pode converter os sinais do barramento DMX para o Ardunio e também é um breakout para o barramento I2C e / ou todos os 6 canais PWM com MosFETs (BUZ11). Eu também usei com os MosFETs para atualizar as lâmpadas internas para DMX.

Portanto, todos juntos resultam em 5 lâmpadas individuais controladas (aqui, para meu gradeamento de vidro), que são controladas por DMX sem fio em um PC / telefone celular.





Nos downloads, você encontrará os arquivos de águia para os PCBs, meu esboço de copiar e colar do Arduino e o arquivo de definição para a lâmpada no software de controle de PC Freestyler.

Os endereços DMX são codificados para iniciar o endereço 200 e, em seguida, 5x 3 canais R, G e B sem qualquer canal dimmer.

No Arduino-Sketch eu tive que manipular os valores para os canais vermelhos, pois o LED vermelho é muito mais brilhante do que o verde e o azul e, portanto, não se misturaria ao branco puro.

Alternativamente, há um esboço para teste / correção de bugs onde você pode definir os valores RGB diretamente através do terminal IDE Ardunio

No total, o custo total de 5 lâmpadas é de cerca de 110 €, todas as peças (exceto luzes) fornecidas por Reichelt.de, todas as PCBs feitas por platinenbelichter.de (grande recomendação!)

Sinta-se à vontade para modificar ou otimizar tudo!

Tchau,

Sebastian

Código

  • Versão DMX
  • Versão de entrada USB
  • acessório para Freestyler
Versão DMX Arduino
Programa de controle para 5x 3channel RGB luzes
 // 15 PWM em 5 RGBs LEDs / DMX Start-Address 200 / 5x 3channel RGB # include  #include  #include  Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver (); # define DMX_SLAVE_CHANNELS 15DMX_Slave dmx_slave (DMX_SLAVE_CHANNELS); int canal [16]; int channelOut [16]; valor int [16]; int ch =0; int vermelho =0; verde =0; int azul =0; configuração vazia () {Wire.begin (); // junta-se ao barramento i2c (endereço opcional para mestre) pwm.begin (); pwm.setPWMFreq (120); // Esta é a frequência PWM máxima # ifdef TWBR // salvar a taxa de bits I2C uint8_t twbrbackup =TWBR; // deve ser alterado após chamar Wire.begin () (dentro de pwm.begin ()) TWBR =12; // atualize para 400KHz! #endif // DMX set up dmx_slave.enable (); dmx_slave.setStartAddress (200); // define todos os PWM para alto -> LEDs desligados pwm.setPWM (0, 4096, 0); pwm.setPWM (1, 4096, 0); pwm.setPWM (2, 4096, 0); pwm.setPWM (3, 4096, 0); pwm.setPWM (4, 4096, 0); pwm.setPWM (5, 4096, 0); pwm.setPWM (6, 4096, 0); pwm.setPWM (7, 4096, 0); pwm.setPWM (8, 4096, 0); pwm.setPWM (9, 4096, 0); pwm.setPWM (10, 4096, 0); pwm.setPWM (11, 4096, 0); pwm.setPWM (12, 4096, 0); pwm.setPWM (13, 4096, 0); pwm.setPWM (14, 4096, 0);} void loop () {// entrada DMX para (int j =0; j <=14; j ++) {canal [j] =dmx_slave.getChannelValue (j + 1); } // ajuste fino da cor channelOut [0] =map (channel [0], 0, 255, 0, 1400); // reduz o LED vermelho 1 channelOut [1] =map (canal [1], 0, 255, 0, 4095); channelOut [2] =mapa (canal [2], 0, 255, 0, 4095); channelOut [3] =mapa (canal [3], 0, 255, 0, 1400); // reduz o LED vermelho 2 channelOut [4] =map (canal [4], 0, 255, 0, 4095); channelOut [5] =mapa (canal [5], 0, 255, 0, 4095); channelOut [6] =mapa (canal [6], 0, 255, 0, 1400); // reduz o LED vermelho 3 channelOut [7] =map (canal [7], 0, 255, 0, 4095); channelOut [8] =mapa (canal [8], 0, 255, 0, 4095); channelOut [9] =mapa (canal [9], 0, 255, 0, 1400); // reduz o LED vermelho 4 channelOut [10] =map (canal [10], 0, 255, 0, 4095); channelOut [11] =mapa (canal [11], 0, 255, 0, 4095); channelOut [12] =mapa (canal [12], 0, 255, 0, 1400); // reduz o LED vermelho 5 channelOut [13] =map (canal [13], 0, 255, 0, 4095); channelOut [14] =mapa (canal [14], 0, 255, 0, 4095); // atribuir valores para (int i =0; i <=14; i ++) {if (channelOut [i] ==0) {pwm.setPWM (i, 4096, 0); } else {pwm.setPWM (i, 0, 4095 - channelOut [i]); }}} 
Versão de entrada USB Arduino
Versão de depuração com entrada direta para lâmpada Nr. e valores RGB
 // 15 PWM em 5 LEDs RGBs # include  #include  // chamado dessa forma, ele usa o endereço padrão 0x40Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver (); // você pode também chame-o com um endereço diferente que você deseja // Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver (0x41); canal interno [15]; saída canal interno [15]; valor interno [15]; ch =0; vermelho interno =0; verde interno =0; int azul =0; configuração vazia () {Wire.begin (); // junta-se ao barramento i2c (endereço opcional para mestre) Serial.begin (9600); Serial.println ("Aguardando entrada:LED, R, G, B, [cada 0-255]"); pwm.begin (); pwm.setPWMFreq (120); // Esta é a frequência PWM máxima // se você realmente quer acelerar as coisas, você pode ir para o modo 'fast 400khz I2C' // alguns dispositivos i2c não gostam muito disso, então se você estiver compartilhando o ônibus, observe / / out para isso! #ifdef TWBR // salvar taxa de bits I2C uint8_t twbrbackup =TWBR; // deve ser alterado após chamar Wire.begin () (dentro de pwm.begin ()) TWBR =12; // atualizar para 400KHz! #endif // definir todos os PWM para alto -> LEDs desligados pwm.setPWM (0, 4096, 0); pwm.setPWM (1, 4096, 0); pwm.setPWM (2, 4096, 0); pwm.setPWM (3, 4096, 0); pwm.setPWM (4, 4096, 0); pwm.setPWM (5, 4096, 0); pwm.setPWM (6, 4096, 0); pwm.setPWM (7, 4096, 0); pwm.setPWM (8, 4096, 0); pwm.setPWM (9, 4096, 0); pwm.setPWM (10, 4096, 0); pwm.setPWM (11, 4096, 0); pwm.setPWM (12, 4096, 0); pwm.setPWM (13, 4096, 0); pwm.setPWM (14, 4096, 0);} void loop () {// inserir cor enquanto (Serial.available ()> 0) {ch =Serial.parseInt (); vermelho =Serial.parseInt (); verde =Serial.parseInt (); azul =Serial.parseInt (); if (Serial.read () =='\ n') {} ch =constrain (ch, 0, 4); vermelho =restrição (vermelho, 0, 255); verde =restrição (verde, 0, 255); azul =restrição (azul, 0, 255); // imprime os três números:Serial.print ("novos valores:"); Serial.print ("LED ="); Serial.print (ch, DEC); Serial.print ("R ="); Serial.print (vermelho, DEC); Serial.print (", G ="); Serial.print (verde, DEC); Serial.print (", B ="); Serial.println (azul, DEC); } switch (ch) {case 0:channel [0] =red; canal [1] =verde; canal [2] =azul; pausa; caso 1:canal [3] =vermelho; canal [4] =verde; canal [5] =azul; pausa; caso 2:canal [6] =vermelho; canal [7] =verde; canal [8] =azul; pausa; caso 3:canal [9] =vermelho; canal [10] =verde; canal [11] =azul; pausa; caso 4:canal [12] =vermelho; canal [13] =verde; canal [14] =azul; pausa; } // ajuste fino da cor channelOut [0] =map (channel [0], 0, 255, 0, 1400); // reduz o LED vermelho 1 channelOut [1] =map (canal [1], 0, 255, 0, 4095); channelOut [2] =mapa (canal [2], 0, 255, 0, 4095); channelOut [3] =mapa (canal [3], 0, 255, 0, 1400); // reduz o LED vermelho 2 channelOut [4] =map (canal [4], 0, 255, 0, 4095); channelOut [5] =mapa (canal [5], 0, 255, 0, 4095); channelOut [6] =mapa (canal [6], 0, 255, 0, 1400); // reduz o LED vermelho 3 channelOut [7] =map (canal [7], 0, 255, 0, 4095); channelOut [8] =mapa (canal [8], 0, 255, 0, 4095); channelOut [9] =mapa (canal [9], 0, 255, 0, 1400); // reduz o LED vermelho 4 channelOut [10] =map (canal [10], 0, 255, 0, 4095); channelOut [11] =mapa (canal [11], 0, 255, 0, 4095); channelOut [12] =mapa (canal [12], 0, 255, 0, 1400); // reduz o LED vermelho 5 channelOut [13] =map (canal [13], 0, 255, 0, 4095); channelOut [14] =mapa (canal [14], 0, 255, 0, 4095); // atribuir valores para (int i =0; i <=14; i ++) {if (channelOut [i] ==0) {pwm.setPWM (i, 4096, 0); } else {pwm.setPWM (i, 0, 4095 - channelOut [i]); }}} 
fixação para Freestyler BatchFile
definição da descrição dos canais para o programa de controle DMX no PC
 BuzzComments:"" Outdoor LED3 0 0 RBG Outdoor.gif0000000 1 123RedGreenBlueMacros 2 0 0 0 1 0 0255000000255025502550255025502550255000-0-0-0-1Sliders 0 

Esquemas

base Nano universal com entrada DMX e saída PWM / I2C universaldmx_2ixt4yqoce.sch universaldmx_a0KdrmJqGU.brd5x 3 ch. (15x PWM) distribuição com 12 V (+/-) de entrada verteiler_dmx_a0M4khDOMv.sch verteiler_dmx_P6etUU6zsN.brd3x Fonte 350mA / 12V com entradas PWM 3xksq_rework_2VYUHjd5Xl.sch 3xksq_rework_4rpvCLaFrs.brd 3xksq_rework_qp87kzXQGy.txt universaldmx_GtNeOjMWZL.txt

Processo de manufatura

  1. DIY LUMAZOID Arduino Music Visualiser
  2. Controlador DMX operado pela web
  3. Luz da mesa interativa controlada por gestos
  4. Arduino com Bluetooth para controlar um LED!
  5. Arduino Quadruped
  6. Luta contra o Coronavirus:Temporizador de lavagem de mão simples
  7. Arduino RGB Color Mixer
  8. Controlando uma matriz de LED com Arduino Uno
  9. Faça você mesmo Arduino RADIONICS Tratamento MMachine
  10. Jogo de roleta LED