As the name suggests, this is an RGB LED controller shield, capable of driving up to 3 LED channels, in constant current mode. At the heart of this shield we will find one XMC1202 MCU, an ARM® MCU device with embedded Brightness Color Control Unit which assures a flicker-free LED dimming and color control.
The MCU on my shield is an XMC1202-T028X0016, an ARM® Cortex M0 device, with 16KB Flash and 16KB of RAM, plus a plethora pf peripherals. Amongst those peripherals we find the Brightness Color Control Unit (BCCU), which enables us to implement low-cost, high quality LED lighting fixtures, all this with minimal user code.
The BBCU in its turn controls three DC-DC converters, in an inverted buck topology. Don’t be fooled by the small size of the buck converters: the XMC1202 is capable of producing high-frequency PWM signals, which allows us to obtain a flicker-free LED dimming. It also allows for a greater power density.
As for the electrical characteristics, the input voltage for the RGB shield is in the 12V-48V range. Obviously, as we are dealing with buck converters, the input voltage must be higher than the forward voltage of the light fixture.
The shield is shipped configured in “safe mode”, which puts a current limit of 360mA per channel. This limit can be changed in software, and the current limit can be raised up to 900mA. However, I would be very careful with this setting, and I think is better to keep the current at a much lower setting, such as keeping a 700mA average current on each string.
This shield is designed to work with an Arduino Uno R3, and the I2C lines are routed to pins D14 and D15. Some older Arduino boards that have the I2C lines on pins A4 and A5 will not work with this shield. Also keep in mind that the pull-up of the I2C lines is taken from the 5V pin – be very careful if you wish to use this shield with 3.3V Arduino boards.
As for DMX control, well, the hardware it’s missing. All you have is the place to solder the components. If you wish to add DMX support you will need to solder yourself an ADM2687E (500 kbps, 5 kV RMS Signal & Power Isolated RS-485 Transceiver with ±15 kV ESD Protection), plus some passives and the connector for DMX lines. It’s doable, even at maker level. If you wish to do this, be prepared to pay about $13 for the ADM2687E, plus some $5 for the passives and the connector.
Working with the Infineon LED shield
The shield looks (and is) quite complicated, but working with it is surprisingly simple. All you have to do is to configure the I2C communication, then send the right commands to the XMC1202. The commands and their syntax are well explained in the shield’s User Manual, so it’s no big deal. Some application notes are also provided, so you have a good starting point with the shield.
If you wish to go further, the source code for the XMC1202 software is provided. Some examples for standalone operation can also be found on the documentation page. Obviously, you will need a dedicated programmer/debugger for this.
The only things that are missing and I would wish to have are some test points to hook the oscilloscope probes. As the shield is designed, it’s quite difficult to find the right spot to place the tip of the probes, and things are even mode difficult when someone tries to see multiple traces at the same time.
As the switching frequency is very high, in the MHz range, there’s a good lighting quality – almost flicker-free. Just compare this with the 490Hz or 960Hz switching frequencies of Arduino boards. It definitely outperforms the TinkerKit DMX Receiver MOS in terms of lighting quality.
In conclusion, even without the DMX area populated, this is a nice shield. It can do much more than any other LED lighting shield that I have. I like the fact that the XMC1202 does all the heavy work, thus leaving the ATMEGA328P onboard Arduino UNO free to do wherever I want. I can easily see this shield being used in some advanced student projects – even a final year project if DMX is added. Or maybe it’s time to have some fun and start preparing for this year’s Halloween…