a generic LED controller that can be populated for either RGBW LED strip or addressable LED strip like WS2812.
It has the option for populating a pair of potentiometer, and a 5 way slider switch for controlling light modes.
An Arduino Nano is mounted using ordinary 2.54mm pitch pin headers. Optionally a ESP32 Pico Kit can be mounted instead of the Nano, this is much more expensive it is a more powerful MCU and have WiFi.
A RS485 receiver and a pair of XLR connectors can also transform the LED controller into a DMX driver.
The input voltage to LightBoxNano are called VIN and can range from 5 to 30V. Make sure to only feed LightBoxNano with a voltage that the LED strip can handle. The maximum voltage is limited by the maximum voltage of the IRLML6344 Mosfets and of what the LED strip can handle.
If using 5V on Vin you need to read "Logic rail" to populate it correctly.
The positive rail for the LED strip driver is directly fed from VIN, it's usually 12V.
The positive rail for the addressable LED strip driver is directly fed from VIN, it's usually 5V.
The logic rail should be 5V and feed the micro controller.
There is 2 options for the logic rail:
Note that the logic rail bypasses Vin_fused.
The buck converter using TI's guide: https://webench.ti.com/power-designer/switching-regulator/select
https://webench.ti.com/appinfo/webench/scripts/SDP.cgi?ID=572687AF787DDED1
There is 2 options for input protection:
A much cheaper option then the high side switch, but one time use only. Populate with a appropriate 1206 fast blow fuse. Example: Fuse Fast Blow 10A 1206 MCCFB1206TFF/10
No reverse polarity protection exist when using a classic fuse.
The Infineon BTS50055-1TMC is a highside high current power switch with buildt in reverse polarity and temperature protection.
It's also used to measure current consumption; Current_Feedback as analog output. To enable the high power switch Enable_Vin_fused must be driven low.
Both Current_Feedback and Enable_Vin_fused goes to the MCU so it can act on over current and act as a resettable fuse.
Vin_fused | Channel | Arduino Nano | ESP32 |
---|---|---|---|
Current_Feedback | A0 (PC0) | IO38 | |
Enable_Vin_fused | D13 (PB5) | IO37 |
This is made for LED strip that have red, green, blue and white channels that have a common positive rail like +12V. The LED driver can drive 4 output channels in constant voltage mode at 5A each. The channel can drive up to 10A current if an optional IRLML6344 is mounted. One color channel on a 5m LED strip consisting of 300 LED's will draw 6A (20mA x 300px) when fully lit. A full RGB strip 18A, and a RGBW strip 24A.
Channel | Arduino Nano | ESP32 |
---|---|---|
Red | D5 (PD5) | IO26 |
Green | D6 (PD6) | IO27 |
Blue | D9 (PB1) | IO13 |
White | D10 (PB2) | IO15 |
Addressable LED strip is hooked up directly to VIN and the data pin is going to micro controller via a 1k resistor.
Channel | Arduino Nano | ESP32 |
---|---|---|
Addressable | D3 (PD3) | IO25 |
Two potentiometers can optionally be mounted. They are pulled up to 3.3V, so you won't get the full range on the Nano. | Channel | Arduino Nano | ESP32 |
---|---|---|---|
POT_1 | A1 (PC1) | IO26 | |
POT_2 | A2 (PC2) | IO27 |
A 10 position rotary coded switch can optionally be mounted for selecting different modes. | Channel | Arduino Nano | ESP32 |
---|---|---|---|
SwCode1 | D7 (PD7) | IO14 | |
SwCode2 | D8 (PB0) | IO12 | |
SwCode4 | D11 (PB3) | IO2 | |
SwCode8 | D12 (PB4) | IO4 |
10 position switch is coded in binary. | Code | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | * | * | * | * | * | ||||||
2 | * | * | * | * | |||||||
4 | * | * | * | * | |||||||
8 | * | * |
Also a pin header of the Arduino Nano will be easily assessable for hooking up random stuff.
A RS-485 transceiver can optionally be mounted for sending and receiveing DMX512. It uses ADM2687E which isolates the RS-485 bus from the low voltage micro controller side. This is important as electrical errors down the bus can propagage along the bus. ADM2687E also isolates the power on the bus side by a buildt in DC to DC converter.
The tranceiver can be set to send DMX data if the jumper links "Link_DriverOutputA1" and "Link_DriverOutputB1" is soldered.
Jumper | Description |
---|---|
Link_DriverOutputA1 | Links the Z (Driver Inverting Output) to DMX+ |
Link_DriverOutputB1 | Links the Y (Driver Noninverting Output) to DMX- |
Receiver_Disable1 | Pulls RE (Receiver Enable) to High which disables receiver |
Receiver_Enable1 | Pulls RE (Receiver Enable) to Low which enables receiver |
Driver_Enable1 | Pulls DE (Driver Enable) to High which enables sender |
Driver_Disable1 | Pulls DE (Driver Enable) to Low which disables sender |
Link_TransceiverGnd_To_DMXgnd1 | Links DMX bus Gnd to ADM2687E Gnd2 |
Link_DMXgnd_To_DMXchassignd1 | Links DMX ground shield to ADM2687E Gnd2 |
DMX Send and Receive can be hooked up to UART channels on a MCU. Receiver Enable and Driver Enable can also be driven by the micro controller (only ESP32). | Channel | Arduino Nano | ESP32 |
---|---|---|---|
DMX_Send | D1 TX (PD0) | IO21 | |
DMX_Receive | D0 RX (PD1) | IO22 | |
DMX_ReceiveEnable | N.C | IO19 | |
DMX_DriveEnable | N.C | IO23 |
An Arduino Nano V3 (ATmega328) is selected because it's cheap, available and have enough power for most applications.
Another option is to mount a ESP32 Pico Kit instead which is much more powerful and have built in WiFi.