산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DMX RGB LED 실외용

구성품 및 소모품

Arduino Nano R3
× 1
Adafruit PCA9685 16PWM 채널 I2C
× 1
자체 PCB
× 1

앱 및 온라인 서비스

Arduino IDE
프리스타일러 DMX 컨트롤

이 프로젝트 정보

안녕하세요 여러분, 저는 이미 집 안에 많은 DMX 제어 조명을 가지고 있지만 외부에도 몇 개를 갖고 싶었습니다. 이 RGB DMX 조명은 다소 비싸기 때문에(하나의 약 200 - 300€) 대안을 찾았습니다.

내가 찾은 것은 IR 제어 장치가 있는 이 정말 저렴한 RGB LED 홍수였습니다. 약 8€/10W RGB입니다.

따라서 DMX를 이해하도록 변환하기만 하면 됩니다.

비용과 필요한 PCB 공간을 줄이기 위해 5개의 모든 홍수에는 별도의 상자에 하나의 Arduino 브레인만 있습니다. 각 조명에는 3채널 PWM 트리거 정전류 소스 PCB와 D-Sub 9 커넥터 케이블이 있습니다. 이 PCB는 조명 바닥의 작은 구획에 완벽하게 맞습니다. LED의 각 채널은 350mA로 설정됩니다.

5개의 모든 조명은 arduino 및 무선 DMX 수신기가 있는 중앙 상자에 연결됩니다.

이 상자 안에는 다음이 있습니다:

<울>
  • 12V 3,5A 전원 공급 장치
  • <울>
  • 12V - 5V 휴대폰 충전기
  • <울>
  • DMX(RS485) 변환기용 자체 PCB의 Ardunino Nano
  • <울>
  • I2C를 통한 Ardufruit 16채널 PWM 확장
  • <울>
  • 무선 DMX 수신기
  • <울>
  • D-Sub 리본 케이블용 분배 PCB
  • <울>
  • 수밀화를 위한 많은 양의 뜨거운 접착제
  • 지금까지 폭우 속에서 3주를 버텼으며, 상자를 봉합하고 밀봉이 방수 처리되어 있습니다.

    Nano를 장착한 PCB는 모든 DMX 프로젝트에 보편적이며 DMX 버스 신호를 Arduio로 변환할 수 있으며 I2C 버스 및/또는 MosFET(BUZ11)가 있는 6개의 모든 PWM 채널을 위한 브레이크아웃이기도 합니다. 또한 내부 램프를 DMX로 업데이트하기 위해 MosFET와 함께 사용했습니다.

    따라서 모두 함께 PC/휴대폰을 통해 무선 DMX를 통해 제어되는 5개의 개별 제어 램프(여기서는 유리 난간용)가 생성됩니다.

    다운로드에서 PC 제어 소프트웨어 Freestyler의 PCB용 독수리 파일, Arduino 스케치 복사 및 붙여넣기 및 램프용 정의 파일을 찾을 수 있습니다.

    DMX-Adresses는 하드 코딩되어 주소 200을 시작한 다음 조광기 채널 없이 5x ​​3 채널 R, G 및 B입니다.

    Arduino-Sketch에서는 빨간색 LED가 녹색과 파란색보다 훨씬 밝아서 순수한 흰색으로 혼합되지 않기 때문에 빨간색 채널의 값을 조작해야 했습니다.

    또는 Arduio IDE 터미널을 통해 RGB 값을 직접 설정할 수 있는 테스트/버그 수정용 스케치가 하나 있습니다.

    총 5개의 램프에 대한 총 비용은 약 110€이며, 모든 부품(조명 제외)은 Reichelt.de를 통해 소싱되고 모든 PCB는 platinenbelichter.de에서 제작합니다(큰 추천!)

    자유롭게 수정하거나 모두 최적화하세요!

    안녕,

    세바스찬

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • DMX 버전
  • USB 입력 버전
  • Freestyler용 고정 장치
  • DMX 버전Arduino
    5x 3채널 RGB 조명용 제어 프로그램
    // 5 RGB LED의 15 PWM / DMX 시작 주소 200 / 5x 3채널 RGB#include #include #include Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver();#define DMX_SLAVE_CHANNELS 15DMX_Slave dmx_slave ( DMX_SLAVE_CHANNELS );int channel[16];int channelOut[16];int value[16];int ch =0;int red =00;int =0; 무효 설정() { Wire.begin(); // i2c 버스에 합류(마스터의 경우 주소 선택 사항) pwm.begin(); pwm.setPWMFreq(120); // 이것은 최대 PWM 주파수입니다.#ifdef TWBR // I2C 비트레이트 저장 uint8_t twbrbackup =TWBR; // Wire.begin() 호출 후 변경해야 함 (pwm.begin() 내부) TWBR =12; // 400KHz로 업그레이드!#endif // DMX 설정 dmx_slave.enable(); dmx_slave.setStartAddress(200); // 모든 PWM을 높음으로 설정 -> LED 끄기 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() { // DMX 입력 for (int j =0; j <=14; j++) { channel[j] =dmx_slave.getChannelValue (j+1); } // 색상 미세 조정 channelOut[0] =map(channel[0], 0, 255, 0, 1400); // 빨간색 LED 1 감소 channelOut[1] =map(channel[1], 0, 255, 0, 4095); 채널아웃[2] =맵(채널[2], 0, 255, 0, 4095); channelOut[3] =맵(채널[3], 0, 255, 0, 1400); // 적색 LED 2 감소 channelOut[4] =map(channel[4], 0, 255, 0, 4095); channelOut[5] =맵(채널[5], 0, 255, 0, 4095); channelOut[6] =맵(채널[6], 0, 255, 0, 1400); // 빨간색 LED를 줄임 3 channelOut[7] =map(channel[7], 0, 255, 0, 4095); channelOut[8] =맵(채널[8], 0, 255, 0, 4095); channelOut[9] =맵(채널[9], 0, 255, 0, 1400); // 빨간색 LED를 줄임 4 channelOut[10] =map(channel[10], 0, 255, 0, 4095); channelOut[11] =맵(채널[11], 0, 255, 0, 4095); channelOut[12] =맵(채널[12], 0, 255, 0, 1400); // 빨간색 LED 감소 5 channelOut[13] =map(channel[13], 0, 255, 0, 4095); channelOut[14] =맵(채널[14], 0, 255, 0, 4095); //(int i =0; i <=14; i++) { if (channelOut[i] ==0) { pwm.setPWM(i, 4096, 0 ); } else { pwm.setPWM(i, 0, 4095 - channelOut[i]); } }}
    USB 입력 버전Arduino
    램프 Nr에 대한 직접 입력이 있는 디버그 버전. 및 RGB 값
    // 5개의 RGB LED에 대한 15 PWM#include #include // 이런 식으로 호출되며 기본 주소 0x40Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver();//를 사용할 수 있습니다. 또한 원하는 다른 주소로 호출합니다.//Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(0x41);int channel[15];int channelOut[15];int value[15];int ch =0;int red =0;int green =0;int 파란색 =0; 무효 설정() { Wire.begin(); // i2c 버스에 참여(마스터의 경우 주소는 선택 사항) Serial.begin(9600); Serial.println("입력 대기 중:LED, R, G, B, [각 0-255]"); pwm.begin(); pwm.setPWMFreq(120); // 이것은 최대 PWM 주파수입니다. // 실제로 속도를 높이고 싶다면 '고속 400khz I2C' 모드로 들어갈 수 있습니다. // 일부 i2c 장치는 이것을 별로 좋아하지 않으므로 버스를 공유하는 경우 시청/ / out for this!#ifdef TWBR // I2C 비트 전송률 저장 uint8_t twbrbackup =TWBR; // Wire.begin() 호출 후 변경해야 함 (pwm.begin() 내부) TWBR =12; // 400KHz로 업그레이드!#endif // 모든 PWM을 높음으로 설정 -> LED 끄기 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() { //색상 입력 while (Serial.available()> 0) { ch =Serial.parseInt(); 빨간색 =Serial.parseInt(); 녹색 =Serial.parseInt(); 파란색 =Serial.parseInt(); if (Serial.read() =='\n') {} ch =제약(ch, 0, 4); 빨간색 =제약(빨간색, 0, 255); 녹색 =제약(녹색, 0, 255); 파란색 =제약(파란색, 0, 255); // 세 개의 숫자를 출력합니다. Serial.print("new values:"); Serial.print(" LED="); Serial.print(ch, DEC); Serial.print(" R="); Serial.print(빨간색, DEC); Serial.print(", G="); Serial.print(녹색, DEC); Serial.print(", B="); Serial.println(파란색, DEC); } 스위치 (ch) { 경우 0:채널[0] =빨간색; 채널[1] =녹색; 채널[2] =파란색; 부서지다; 사례 1:채널[3] =빨간색; 채널[4] =녹색; 채널[5] =파란색; 부서지다; 사례 2:채널[6] =빨간색; 채널[7] =녹색; 채널[8] =파란색; 부서지다; 사례 3:채널[9] =빨간색; 채널[10] =녹색; 채널[11] =파란색; 부서지다; 사례 4:채널[12] =빨간색; 채널[13] =녹색; 채널[14] =파란색; 부서지다; } // 색상 미세 조정 channelOut[0] =map(channel[0], 0, 255, 0, 1400); // 빨간색 LED 1 감소 channelOut[1] =map(channel[1], 0, 255, 0, 4095); 채널아웃[2] =맵(채널[2], 0, 255, 0, 4095); channelOut[3] =맵(채널[3], 0, 255, 0, 1400); // 적색 LED 2 감소 channelOut[4] =map(channel[4], 0, 255, 0, 4095); channelOut[5] =맵(채널[5], 0, 255, 0, 4095); channelOut[6] =맵(채널[6], 0, 255, 0, 1400); // 빨간색 LED를 줄임 3 channelOut[7] =map(channel[7], 0, 255, 0, 4095); channelOut[8] =맵(채널[8], 0, 255, 0, 4095); channelOut[9] =맵(채널[9], 0, 255, 0, 1400); // 빨간색 LED를 줄임 4 channelOut[10] =map(channel[10], 0, 255, 0, 4095); channelOut[11] =맵(채널[11], 0, 255, 0, 4095); channelOut[12] =맵(채널[12], 0, 255, 0, 1400); // 빨간색 LED 감소 5 channelOut[13] =map(channel[13], 0, 255, 0, 4095); channelOut[14] =맵(채널[14], 0, 255, 0, 4095); //(int i =0; i <=14; i++) { if (channelOut[i] ==0) { pwm.setPWM(i, 4096, 0 ); } else { pwm.setPWM(i, 0, 4095 - channelOut[i]); } }}
    FreestylerBatchFile용 고정 장치
    PC의 DMX 제어 프로그램에 대한 정의 설명

    회로도

    DMX 입력 및 PWM/I2C 출력이 있는 범용 나노 베이스 Universaldmx_2ixt4yqoce.sch Universaldmx_a0KdrmJqGU.brd5x 3ch. 12V(+/-) 입력이 있는 (15x PWM) 분배 verteiler_dmx_a0M4khDOMv.sch verteiler_dmx_P6etUU6zsN.brd3x 350mA / 12V 소스(PWM 입력 포함) 3xksq_rework_2VYUHjd5Xl.sch 3xksq_rework_4rpvCLaFrs.brd 3xksq_rework_qp87kzXQGy.txt Universaldmx_GtNeOjMWZL.txt

    제조공정

    1. DIY LUMAZOID Arduino 뮤직 비주얼라이저
    2. 웹 운영 DMX 컨트롤러
    3. 제스처 제어 대화형 테이블 조명
    4. Bluetooth가 탑재된 Arduino로 LED 제어!
    5. Arduino Quadruped
    6. 코로나바이러스 퇴치:간단한 손씻기 타이머
    7. Arduino RGB 컬러 믹서
    8. Arduino Uno로 LED 매트릭스 제어
    9. DIY Arduino RADIONICS 치료 기계
    10. LED 룰렛 게임