Burnout / overheat question

Hi all,

I've built an LED umbrella based on this rainboard design:

Pretty much exact same circuit, just less shift registers as there's less lights.

I've been running it on a Uno, and been powering the 8 x 0.5m sections of LED strips off the Vin pin. It gets a bit warm but not too bad and runs for hours no probs.

On the weekend I changed it from the Uno over to a Nano v3.0. Ran it for maybe half an hour. Lights weren't showing the right colours. I was troubleshooting if there was maybe too much resistance somewhere in the circuit, and looking forward to the toast I could smell the missus cooking. Then came the smoke from the Nano and I realised there wasn't any toast on the way. Not sure what caused the burn-out, could have been a short, a dodgy clone board (I only buy genuine these days), or bad circuit design?

About to have another crack with a 5V pro mini board I have, and plan to connect the 12V supply to the RAW pin, and piggy back that to supply the leds.

  1. Am I somehow putting too much current / voltage through the arduino? Should I be supplying power to the led's a different way?

  2. I've made a balsa wood box (~14cm x 6cm x3 cm internal) to contain the circuit / arduino. Is this likely to cause it to overheat, or should it be right?

So 45 LEDs, no current limit resistors, inefficient ULN2803 with 74HC595 vs TPIC6C595 (which combine the two), or a MAX7219 to drive all LEDs from. Surprised it lasted long at all.
Promini regulator will get pretty warm and it's only rated for 150mA.

hmmm... not sounding promising. Would it be possible to tweak my existing circuit, or should I start again from scratch? I'm new to all of this, obviously. I thought the whole point of the ULN2803 was to manage the high demand for the LED strips without stressing the arduino?

It wouldn't kill me to start over, but would love some more guidance on how to configure it better.

Thanks for your help

I thought the whole point of the ULN2803 was to manage the high demand for the LED strips without stressing the arduino?

The circuit will 'protect' the microcontroller against overload, not the board (Uno or Nano). Because you used the 5V output to drive the LEDs, you have been overloading the voltage regulator on the Nano and that is more than likely what has died. If you're handy with a solder iron, you can replace it. I also think that you might have been pretty lucky that the Uno survived if it was wired the same way.

Would it be possible to tweak my existing circuit, or should I start again from scratch? I'm new to all of this, obviously.

Add current limiting resistors in series with the LEDs (one per LED). Also, as explained above and as you already indicated, do not feed the LEDs from the 5V output.

Note that you also might have damaged the ULN2803 devices; maybe the damage is not 'visible' yet but overloads (because you did not have a series resistor) might have caused a minimal damage that can get worse over time.

Repeat after me
Instructables are crap, I will never use them again until I know enough to spot the errors in them.

ok... instructables are crap and I will never use them again.... but....

  • elcojacobs proposes similar, but with MOSFETs:
  • The ULN2803's are "Perfect for running relays and high-power devices up to 500mA and up to 50V!" (sparkfun.com)
  • I'm only pulling 0.3A per 0.5m led strip at full power draw... hang on a second... maybe I understand the problem now... that would make 0.1A per colour per strip... 8 colours being driven per ULN2803... 800mA load per ULN2803?
  • So that's where the resistors come into play to bring it down to 500mA max? Which I guess reduces the intensity which I can live with. But the resistor also reduces the voltage therefore possibly changing the colour as well?
  • So I need to incorporate a resistor to drop 300mA per strip colour?
  • I'm still confused as to whether I'm feeding the LEDs with 12V direct from the power source, or 5V from the arduino? Based on the original schematic I posted and everything I've been reading since, I'm still not convinced this is an issue?

Enjoying having my incompetence pointed out!

Enjoying having my incompetence pointed out!

Then your going to love this:-

But the resistor also reduces the voltage

No it doesn't, a resistor will limit current it will not alter voltage. Put a 1K resistor across a 5V supply, the current is 5mA but the voltage is still 5V. Make that a 10K resistor, the current is 0.5mA but you still have 5V across the supply. Put one end of the resistor to 5V and measure the voltage on the other end, it will always be 5V no matter what the resistor is.

possibly changing the colour as well

No, the colour of an LED is determined by the energy gap between the conductance band and the valance band of the semiconductor material. Electrons making this transition give of a photon that is the same energy as this band gap. No amount of changing voltage is going to change the colour.

he ULN2803's are "Perfect for running relays and high-power devices up to 500mA and up to 50V!" (sparkfun.com)

True but misleading. The chip can switch 500mA per channel, but there are 8 channels. The maximum current you can switch on at the same time is determined by how hot you want this chip to get and how hot it can get before it melts. In practice the total current of all channels on at the same time is about 650mA.

  • elcojacobs proposes similar, but with MOSFETs:

No he was switching LED strips. These have three LEDs in series along with their own current limiting resistor. Maybe that is what the instructable guy was doing but it is not what he drew. He is like most authors on that site an idiot with an over inflated sense of his own ability.
There is nothing wrong with elcojacobs' circuit.

  • So I need to incorporate a resistor to drop 300mA per strip colour?

You could, but just use a switch ( FET ) that is rated correctly.

I'm using LED Strips too. Intractable guy was also. Are you suggesting I ditch the ULN2803's in favour of FET's?

Darlington arrays like the ULN2803 drop ~1volt when "on".
The three LEDs in series on a LED stip drop ~10volt.
The current limiting resistors on the strip are calculated for the remaining 2volt.
But with the ULN in the circuit the resistors only drop ~1volt.
The LED strip gets half the current it was designed for.
The red LEDs in the strip have a lower forward voltage, so current drop for them is less.
Use a higher supply voltage (13volt) with a darlington array, or use mosfets.

So I substitute the ULN2803's with MOSFETs, so it basically ends up like for like with the elcojacobs schematic. No need for any extra resistors, the ones built into the led strip lights have that covered. Check. That fixes everything? The prior comments about me driving the LEDs with 5V from the arduino weren't valid?

I still have this niggling feeling I burnt out the last board with a short / wiring stuff up.

Thanks everyone for your help. I'm a fairly skilled engineer in other disciplines but starting to realise that the Arduino world isn't as straight forward as I'd anticipated.

How long are the LED strips? They typically have 3 LEDs in series with a 150 ohm resistor, when powered from 12V/Gnd the current can be (12V - (3 x 2.2V))/150 = 36m for Red, and less for other colors with higher Vf LEDs.
You can measure across an LED when the strip is powered to see what Vf is, and across the resistor when unpowered to see what it is.
Every 3 LEDs in the strip will draw the same 20-35mA when powered.
Using a shift register like TPIC6B595 with open drain MOSFET outputs, it combines the function of 75HC595 and ULN2803 together for sinking 150mA per output, so 7 groups of LEDs or so.
This board offers 96 channels of 150mA per channel current sinking, shown here with 6 chips for 48 outputs.

If you need more than 150mA, then TPIC6A595 and TPIC6A596 can sink 350mA per output.
Need even more?
A board like my 32 N-channel MOSFET board will sink at least 1A per channel with discrete MOSFETs. Daisy chain for more strips/.

Ok so I'll ditch the 75HC595 / ULN2803 combo and go with the TPIC6B595's instead, with 100nF capacitors between the VCC pins and ground. Run 12V direct from the power supply to the LED strips so its not passing through the arduino board.

A full 1m length of the RGB strip lights contains 30 leds (10 segments of 3), pulling 0.6A. I'm driving 15 single colour led's per channel. 0.6A /3 = 0.2A per string of 30 single colour leds.... 0.1A for the 15 single colour led's I'm driving per channel, so the TPIC6B595's are adequate.

I can't measure the onboard resistor values because the led strips are weatherproof and I don't want to compromise that. On the weekend I did check the voltage over the strips at full power and was getting a reading of about 10.6V.

I think being overzealous with the multimeter might be my problem... I've cooked something again.

Between what components / pins do I NOT want to be poking the multimeter????

You do not want to poke between any two components with the meter set to current. When it is set to current it is in effect a short circuit between the probes.

Sorry if that is an insult but we do get beginners who don't know how to measure current with a meter.

No insult taken, but valuable lesson learnt. If I'd taken 2 secs to think about it I already knew that would happen. Probably also haven't been careful enough with probe placement either when testing to avoid shorting from the one probe bridging 2 terminals. Hopefully the Uno is still intact, will start again from scratch in a day or two. I think I had a dose of too much confidence from early success that made me complacent. Hopefully my next post will be more on a winning note..

The more I research the more I see how often grumpy and crossroads have had to reply to similar numpty questions in the past. Appreciate your patience.

With thanks,
Another numpty

The more I research the more I see how often grumpy and crossroads have had to reply to similar numpty questions in the past.

In that way we learn what mistakes newcomers make and can be ready for them. A big problem is assuming that someone knows more than they do. You have to assume something but inevitably we are not always right.

Appreciate your patience.

You are quite welcome.

Have I got it right now? Haven’t shown the drains and 12V to the RGB Led strips, but otherwise I think I have everything right now?

My code starts with this:

//Data pin is MOSI (atmega168/328: pin 11. Mega: 51) 
//Clock pin is SCK (atmega168/328: pin 13. Mega: 52)
const int ShiftPWM_latchPin=8;
const bool ShiftPWM_invertOutputs = 1; // if invertOutputs is 1, outputs will be active low. Usefull for common anode RGB led's.

Another dumb question, the RGB LED strip connected to to D0/D1/D2 on the chip marked (1) is the first in the sequence right? I only ask because crossroad’s schematic numbers the chip connected to the data pin as the last in the sequence I think.

Nope, doesn't work. So either I've got something wrong still or I've fired the Uno.

Disconnected everything from the Uno, tried uploading the blink test, couldn't establish the serial connection.

Tried the Loop-back test... no response. Still feeling my way around but not looking good right now