Designing RGB LED Shield – 3. Power and Temp sensor
Independent power for the shield
Maximum input voltage of the Arduino is 20V. Recommended maximum voltage is 12V. Since the shield is buck LED driver, you can drive only 3 LEDs per channel with 12V. Otherwise, you need to supply two different voltage inputs: one for Arduino and ICs on the shield, the other for LEDs. Because of nature of linear voltage regulator, you can not use high input voltage for 5V ouput. The shield consume about 100mA of 5V for powering LT3496, Attiny85, MCP4728, and optional temperature sensor. 100mA is not that much, but none of small linear voltage regulator like 7805 can output 5V from 40V at 100mA. Because there is a 35V difference between input and output voltage, voltage regulator will dissipate 3.5W of heat at 100mA.
To have just one power for both Arduino and the shield, only choice left was another switching voltage regulator which have high voltage input. I found National LM2841 is good enough and simple to use. LM2841 is 42V input, 300mA switching IC. It is a bit more expensive that I hoped. Cheaper yet old type of switching ICs require larger foot print which I don’t have.
With the LM2841, 100mA is used for powering the shield. Rest 200mA can be used to power up Arduino. It also allow the shield is operated independently from Arduino.
Temperature sensor for LED and the shield
This is the one that I didn’t put it in my initial design and is totally optional. Some people want to monitor LED temperature, since temperature of LED is the most important factor that affect life time, color, current, voltage drop and so on. Maintaining LED temperature within acceptable range is mostly done by current limit and heat sink. When you can not have big enough heat sink or operates LEDs at high ambient temperature, you can maintain temperature by dynamically lower the current to LEDs.
Monitoring LED temperature can be done by putting temperature sensor close to the led. If the sensor is cheap enough, you can just glue the sensor close to the LED using thermal epoxy wherever you want. However temperature sensors are not cheap. Cheapest one is still cost about $1. You can not glue it every LED panel you have. The real cheap temperature sensor turn out to be transistors. It is cheap enough you can just glue them anywhere you want, and monitor the temperature when you need by connecting to Arduino. The most commonly used transistor for temperature sensor is 2N3906 which is a basic and common transistor. You can find them anywhere and is very cheap. You can buy 100 of 2N3906 at $4.
A bad side of using transistor as a temperature sensor is that you can not connect it directly to Arduino. It requires circuit for it. Luckily companies make lots of temperature sensor that utilize 2N3906 as a remote sensor. You don’t need any complex circuit. So I decide to put Texas instrument TMP421 on the shield.
TI TMP421 is a I2C temperature sensor. Once again I don’t use more than 2 pins from Arduino, those two I2C pins are still available for any I2C devices. TMP421 has an internal temperature sensor and one remote sensor input. On the shield, TMP421 is located close to LT3496, so I can estimate the IC temperature. Remote sensor input is pinned out right next to the LED connector, so you can connect to 2N3906 on LED board.