Logic Level Shifter burn-out in LED project

Hi! First things first I am a beginner building DIY electronic projects, and this is my first post on the forum. I don't really understand much about volts and amps, or pretty much anything at all. I'm running before walking here :confused: .

When I was building this circuit to control my LEDs I ran into this problem where it seems like my Logic Level Shifters are just burning out. The circuit is comprised of a 12V 5A power supply, a 12V to 5V step down, a Node MCU with arduino IDE and a LLS to shift it back up to 5V for the LED Strip.

I've attached my wiring diagram on the post.

It seems like it works for arround 10 to 60 minutes, before the LEDs just stop changing colors, and I mesure the output of the level shifter to be 0V. I've already bought 4 of them, and I didn't want to buy another one before consulting the forum (so that I don't waste my money).

The weird thing about it is that I already did this project before (in my desk), and a level shifter stopped working once, I installed another one and now it seems to be working completely fine. I re-did the wiring, checked it, did it on a breadboard, protoboard, soldered, pinned, and still the same thing happened, so I'm guessing it's not the wiring.

What should I do? Should I just keep buying LLS until it works? Did I just have really bad luck and got 4 defective LLS in a row? Should I just get someone else's LLS? (Not Adafruit's).

By the way, the LLS is the Quad Logic Level Shifter from Adafruit. Here's the link to their wiring diagram:
Adafruit's LLS Wiring Diagram

Other Useful Info:
After it Breaks:
Voltage Measured out of pin D1: 0.1V (Logic).
Voltage Measured into LLS: 5V.
All grounds show continuity.
Voltage Measured out of output of LLS: 0.01V.

Thank you so much for any of your help, to everyone! I'm so excited to get it working again!

OP's image

What LED strip are you using?
I would be surprised if the usual addressable LED strip would sink so much current on the data line to kill your buffer. If it is drawing more current than one buffer can handle then maybe double/triple/quad the buffers up to spread the load.

Each chip has 4x buffers in so are you using the other buffers when one dies or replacing the entire chip?

alfondehesa:
Other Useful Info:
After it Breaks:
Voltage Measured out of pin D1: 0.1V (Logic).
Voltage Measured into LLS: 5V.
All grounds show continuity.
Voltage Measured out of output of LLS: 0.01V.

LOW on input, LOW on output. What is wrong here?

Also CMOS inputs should not float. You should tie the unused inputs somewhere. I doubt it could damage the chip but who knows?

Thank you so much to both of you for answering!

What LED strip are you using?
I would be surprised if the usual addressable LED strip would sink so much current on the data line to kill your buffer. If it is drawing more current than one buffer can handle then maybe double/triple/quad the buffers up to spread the load.

That's what I thought. I'm using WS2811, and about 6 meters (2 paralel strips of 3-4 meters each).

I can definately try to spread it all among multiple buffers.

Before yesterday I didn't know hod the chip worked so I threw them away. So now I guess I have to order another one, and try to rewire (using multiple buffers for the same signal) and see if it works?

LOW on input, LOW on output. What is wrong here?

When I first hooked it all together, it used to work fine. When I mesure with the voltmeter, I get an ouptu of 0.1V out of the node MCU but I think it's just because I don't know how to use it (the Voltmeter). I just thought since it was a data pin it wouldn't show a continous DC and it would mess it up. What I'm certain though is that now the Level Shifter outputs nothing (at least on the pin I'm using). So what do you think happened between when it worked well and now?

Also, I'm kind of new and I don't really know what CMOS is :confused: . Are those the input pins you mean? Where should I tie them to? Ground?

Again, thank you so much for your help!

alfondehesa:
When I first hooked it all together, it used to work fine. When I mesure with the voltmeter, I get an ouptu of 0.1V out of the node MCU but I think it's just because I don't know how to use it (the Voltmeter). I just thought since it was a data pin it wouldn't show a continous DC and it would mess it up. What I'm certain though is that now the Level Shifter outputs nothing (at least on the pin I'm using). So what do you think happened between when it worked well and now?

A DMM will always show a "DC voltage" - the average value of the signal. When it shows a value close to zero something is wrong. But why do you think the level shifter is damaged? Maybe there is a bug in your code, the NodeMCU outputs wrong data (or no data at all) and the level shifter only copies the wrong input.

CMOS is name for the "modern" process to make ICs. Most of ICs for last 30 years or so are CMOS. For digital logic it is HC(T)xx, AHC(T), LVC(T)... families. Unless you have very good reason to use the old bipolar TTL (LS, S...) always use CMOS.
Unused inputs should be connected to GND or Vcc - since they are unused it does not matter. I usually don't do this when breadboarding and I have never noticed a problem with it (except for increased power consumption). But when in doubt make sure you have no floating inputs.

But why do you think the level shifter is damaged? Maybe there is a bug in your code.

I think it's damaged because it used to work fine, and the same code works fine on my desk LEDs but after a while the Level shifter just doesn't want to output anymore.

Then, once it has stopped working, I substitute the Level shifter that I think got damaged over to my desk, and my desk stops working. (I do this to test if the LLS is still working or not). When I plug the original one back on my desk LEDs, it works. I don't know if I wrote this part a little confusing :confused: .

That makes me think that the LLS are just getting damaged, or burned or something.

I reflashed the MCU over and over, and try to reset it, but the problem is apparently still there.

alfondehesa:
Before yesterday I didn't know hod the chip worked so I threw them away. So now I guess I have to order another one, and try to rewire (using multiple buffers for the same signal) and see if it works?

Maybe also put a small current limiting resistor on the buffer output to the LED data input. Something around 27 to 39 ohms.

And what about the step down converter? Maybe it does not regulate well and let some voltage spikes to pass. NodeMCU has an onboard regulator and decoupling caps but the bare chip would suffer.

Instead of the IC you may try build I2C like level shifter from a single transistor. If you have a BJT transistor you may try "my" circuit for this post:


I would use something like 1k for RH, 3K3 for RB and no RL. If you have a MOSFET with low enough threshold voltage you may use "standard" I2C level shifter. From Arduino playground:

You need only one line ofc and you don't need the pull-up on the 3V3 side.

There are other options for level shifting using discrete components but this one is probably the simplest one and it should be enough.

EDIT: did you try connect the NodeMCU to the LEDs directy? It may work without any level shifting. Or you may try to shift the whole output a bit using a diode. A simple dirty circuit that may work:

Level shifter.png

R1 should be quite large (10k or more) to be safe. The diode should be as small as possible to have large voltage drop even at the small current of R1. (By "small" I mean intended for small currents, not physical size.)

Level shifter.png

Those "bidirectional" level shifters are inappropriate for driving NeoPixels as they have only a resistor for pull-up (10k would be really "soft").

Best use a 74HCT14 - two gates in cascade per channel, or if that is not easy to get, a 74HC04.

Thank you all for all the replies!!

I'm gonna need about a day to order and rewire everything, but here's what I'll do:

EDIT: did you try connect the NodeMCU to the LEDs directy? It may work without any level shifting.

I doubt it'll work because the 2 LED strips connected to it are long, but I can try anyway!

Maybe also put a small current limiting resistor on the buffer output to the LED data input. Something around 27 to 39 ohms.

I'll rewire to use 4 buffers in parallel and distribute the current through them and put a resistor from the 4 outputs to the led strip.
Should I also add a resistor from the Node MCU to the LLS to limit the I going in? (Just in case).

Instead of the IC you may try build I2C like level shifter from a single transistor. If you have a BJT transistor you may try "my" circuit for this post:

If the component still fails, then I guess it's time to make my own LLS (or I guess yours!).

Best use a 74HC14 - two gates in cascade per channel, or if that is not easy to get, a 74HC04.

I thought those were just square wave generators to remove noise. Do they also shift logic? I'm sorry, I'm pretty new to electronics :confused: .

Paul__B:
Those "bidirectional" level shifters are inappropriate for driving NeoPixels as they have only a resistor for pull-up (10k would be really "soft").

What? Ofc the have only pull-up, the MCU is pulling low. Simple open drain configuration used so often. But you are right the 10k is probably weak for the speed need - for the BJT level shifter I suggest 1k which should be strong enough.

alfondehesa:
I doubt it'll work because the 2 LED strips connected to it are long, but I can try anyway!

You are driving only the first Neopixel in a strip. It drives the second, which drive the third... Google "daisy chain".

alfondehesa:
I thought those were just square wave generators to remove noise. Do they also shift logic? I'm sorry, I'm pretty new to electronics :confused: .

Oops!

There was a typo - the "T" in 74HCT14 was missing.

The "HCT" family is specifically designed to work with obsolete 74 and 74LS logic as level shifters, which means it is also perfect for interfacing 3.3 V to 5 V logic (so it is still an essential family!).

In general, a "HC" gate will respond correctly to 3.3 V logic and will work conveniently as a level shifting buffer - you need both functions as the ESP8266 is both 3.3 V logic and has limited drive capability - but a non-HCT Schottky such as the 74HC14 may be marginal, so the 74HC04 should be sufficient. As I tried to say, the 74HCT14 should be perfect for the job.

A specific level shifter IC is often suggested, but is way overkill for the job when a cheap 74HCT14 does it nicely.

For bi-direction level shifting, which is what you need for I2C you need two transistors:-

translator-1.pdf (21.4 KB)

@Grumpy_Mike: OP does not want I2C and does not need bidirectional. And even bidirectional translation does not need two transistors.

Okay, so it turns out 3.3V logic from the MCU is actually enough to control the LEDs! Unfortunately, while I wired the LEDs I shorted the whole thing and fried my MCU, but I just reordered one, and I'll flash it and solder it, and it should work!
Thank you so much everybody!

alfondehesa:
Okay, so it turns out 3.3V logic from the MCU is actually enough to control the LEDs! Unfortunately, while I wired the LEDs I shorted the whole thing and fried my MCU, but I just reordered one, and I'll flash it and solder it, and it should work!
Thank you so much everybody!

While you are at it, order a 74HCT14,

This is for when you find that under some circumstances, dependent on the power supply voltages, it decides not to work some of the time. :cold_sweat: