亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

户外DMX控制RGB投光灯:低成本高性能舞台灯光DIY方案

项目缘起与成本对比

商业DMX RGB投光灯单价通常200-300欧元,作者需要5盏户外灯,总成本超千欧。通过改装8欧元/10W的IR遥控RGB投光灯,配合Arduino Nano + PCA9685 PWM扩展板实现DMX解码,5盏灯总成本仅约110欧元(含PCB、电源、外壳等),性价比提升10倍以上。

系统架构设计

核心硬件清单

关键技术细节

DMX地址映射策略

起始地址硬编码为200,5盏灯各占3通道(R/G/B),无调光通道:

红色通道亮度补偿

红色LED亮度显著高于绿/蓝,直接混合会导致白平衡偏红。代码中通过map()将红色通道DMX值(0-255)映射为PWM范围(0-1400),而绿/蓝映射为(0-4095),实现硬件级白平衡校正:


channelOut[0] = map(channel[0], 0, 255, 0, 1400); // 红色通道1 衰减
channelOut[1] = map(channel[1], 0, 255, 0, 4095); // 绿色通道1 全程
channelOut[2] = map(channel[2], 0, 255, 0, 4095); // 蓝色通道1 全程
// 灯2-5同理...

防水与可靠性设计

软件架构与代码版本

版本1:DMX正式版 - 解码无线DMX信号,驱动5灯15通道,含红色补偿逻辑

版本2:USB调试版 - 串口直接输入灯号 R G B(0-255),便于单灯调试色彩、验证硬件

FreeStyler灯具定义文件 - 定义3通道RGB模式,支持预设宏、推子控制

核心代码片段(DMX版)


#include 
#include 
#include 

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define DMX_SLAVE_CHANNELS 15
DMX_Slave dmx_slave(DMX_SLAVE_CHANNELS);

void setup() {
  Wire.begin();
  pwm.begin();
  pwm.setPWMFreq(120);  // 最大PWM频率
  #ifdef TWBR
    uint8_t twbrbackup = TWBR;
    TWBR = 12;  // I2C升级到400kHz
  #endif
  dmx_slave.enable();
  dmx_slave.setStartAddress(200);
  // 所有PWM拉高关灯(共阴极恒流驱动逻辑)
  for(int i=0; i<15; i++) pwm.setPWM(i, 4096, 0);
}

void loop() {
  // 读取DMX通道值
  for(int j=0; j<15; j++) channel[j] = dmx_slave.getChannelValue(j+1);
  
  // 红色通道亮度补偿映射
  channelOut[0] = map(channel[0], 0, 255, 0, 1400); // R1
  channelOut[1] = map(channel[1], 0, 255, 0, 4095); // G1
  channelOut[2] = map(channel[2], 0, 255, 0, 4095); // B1
  // ... 灯2-5同理
  
  // 输出PWM(共阴极:高电平关,低电平开)
  for(int i=0; i<15; i++) {
    if(channelOut[i] == 0) pwm.setPWM(i, 4096, 0);
    else pwm.setPWM(i, 0, 4095 - channelOut[i]);
  }
}

设计资源下载

经验总结与避坑指南

  1. 电流驱动能力:PCA9685输出仅适合驱动MOSFET/恒流板,不可直驱大功率LED
  2. 共阴/共阳逻辑:代码中4095 - value针对共阴极恒流板,共阳极需改为直接输出value
  3. DMX信号隔离:长距离布线建议添加光耦隔离保护Arduino
  4. 散热设计:恒流驱动板需贴合灯体铝基板散热,大电流时注意MOSFET温升
  5. 供电稳定性:12V电源需足够余量,PCA9685和Arduino分路供电避免干扰

应用场景拓展

该方案可扩展至:建筑轮廓照明、园林景观灯光、舞台临时布光、节日装饰灯光、商业招牌照明等。通过FreeStyler等DMX软件可编程复杂灯光秀,支持Art-Net/sACN网络协议扩展。

制造工艺

  1. 自制LUMAZOID:基于Arduino的音乐可视化灯光控制器
  2. 基于 Web 控制的 DMX 灯光系统 – Arduino 主控制器
  3. 手势控制 RGB 台灯 —— 交互式免手操作照明
  4. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  5. 从零构建智能 Arduino 四足机器人:完整指南
  6. Arduino 洗手计时器:抗击 COVID-19 的简易 DIY 工具
  7. Arduino RGB LED调色器:三电位器混色入门项目
  8. Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
  9. DIY Arduino 电子波疗设备 - 基于拉德尼克疗法的 EMR 治疗仪
  10. DIY LED 轮盘赌游戏机 —— Arduino Nano 打造单人桌面街机
  11. Arduino 智能自动停车场系统:红外检测 + 舵机闸门 + LED 余位显示
  12. Arduino 超声波测距仪:HC-SR04 量程探测器

组件数量关键参数/说明
Arduino Nano R31主控,运行DMX解码固件
Adafruit PCA96851I2C 16路12位PWM,400kHz高速模式
自制PCB:通用DMX载板1集成RS485收发器(MAX485)、I2C扩展、6路MOSFET驱动
自制PCB:5灯PWM分配板1D-Sub 9针排线分配15路PWM+电源
自制PCB:3通道350mA恒流驱动板5每灯一块,PWM输入→恒流输出驱动RGB LED
无线DMX接收器1配合PC端FreeStyler软件
12V 3.5A电源 + 12V转5V模块各1为中心箱供电
RGB投光灯(IR版)5约8欧元/10W,拆除原IR接收板改装