74HC595 at 3.3v .. red led reads 1.9v (updated)

I am using some 74HC595 shift registers. When i run from 3.3v on the arduino to the vcc of the chip .. it runs the green and blue leds at about at 3.1v or so. I then plugged it into the red which needs 2.2 .. expecting a funny smell and fizz .. but got a red LED pulling 1.9.

I have done this over and over now and yet to blow a red .. can someone explain why it only pulls 1.9 on the red and pulls 3.1 on the Blue and Green when running through the shift register?

the red which needs 2.2

No it only needs 1.9V as you have found.

I hope you are also including current limiting resistors.

Lets clarify so we don't confuse others.

If you are going to use words like PULL or DRAW... you should be talking about current, not voltage. What you are describing is not CURRENT (amps), it is called the "forward voltage" of the diode. The point at which it "conducts" and therefore "emits".

You have experimentally discovered that not all LED's are created equal. Yes, there is a reason. Each COLOR is generated by the characteristics of the GAP between the PN juntion of the DIODE in the device.

Example: RED Aluminium gallium arsenide (AlGaAs) GREEN Aluminium gallium indium phosphide (AlGaInP) BLUE Indium gallium nitride (InGaN)

Each of the materials also modify the Forward Voltage charateristic of the diode (The voltage needed before it conducts and emits light).

The RED diode "conducts" as a lower voltage so you you need to take that into account when figuring out how to get similar brightness by adjusting your "current" limiting resistor.


If not... keep in mind that it won't fail right away when driven from 3.3 volts with no resistor (like it would say if you used 12V or more and no resistor) but you are still asking it to live fast and die young. No matter HOW CLOSE the "supply voltage" is to the "forward voltage" you STILL need a resistor!

Best not to abuse the device and let the magic smoke out early. It will be the excess current that kills your LED, by the way.


Take (supply voltage) MINUS (led forward voltage) /.02 (.020 = 20 Milliamps)

3.3 - 1.2/0.02 = ~100 so use 100 ohm resistor.

20 milliamps? (data sheets are your friends)

Thanks for the detail but ... this was more a Shift Register question.

When I hook 3.3 volts to the red directly .. boom it blows (of course - that is NOT the question!). ONLY when I hook this up using a shift register at 3.3 volts does it stay at 1.9 volts. I was not asking .. "why when I hook 3.3 volts to a red led does it blow?" That seems to be the answer I got .. please read the question on the shift register as in the title .. no one even mentioned shift register in any answer.

I of course know I need a resistor when running 3.3 volts to a red .. and I did read the data sheet and didn't "experimentally discover.." it - hence my statement on what it needs.

If anyone knows why a shift register has a different result then running 3.3v directly (i.e. the SR contains or is acting as a resistor maybe?) - thanks in advance.

If no one knows .. that is cool .. just curious.


please read the question on the shift register as in the title

Sorry your question is still not clear. This is because the title talks about pulling 1.9V and as mentioned before pulling is not a term you use with reference to voltage it is with reference to current.

So you have a shift register that you are powering with 3V3, are you supplying 3V3 signals or are they 5V signals?

By the red LED pulling 1.9V do you mean that there is a 1.9V drop across the LED in these circumstances? Or is the 1.9V referring to the voltage high value from the shift register?

If you look at the data sheet you should see that the minimum voltage high is dependent of the Vcc voltage powering the shift register. It could be that it is this you are seeing.


Thanks for the reply and clarification on the confusion of my question.

I am hooking the 3.3v output from the Arduino into the VCC of the shift register then hooking a led of the shift register to the red led.

When I read the ground and hot of the LED itself … it reads 1.9 v.

When I hook the 5v to the vcc of the SR and add a 180ohm resistor … it reads exactly 1.9 as well.

I hook that same 180 ohm resistor to direct 5v - it pulls 1.95 … I expect the SR to eat some - that is not the question.

I see basically the same thing when I use a 180ohm R and when running through the SR … why … is the question … is the SR acting as a resistor?

Actual Results:

Standard - 5v power - 180 ohm R: (No Shift Register)
5v to 180 ohm resistor to red - reads 1.95
5v to 180 ohm resistor to blue - reads 2.99/3.00

SR - 5v vcc in - 180 ohm R:
5v to SR to 180 ohm resistor to red - reads 1.90
5v to SR to 180 ohm resistor to blue - reads 2.95

SR - 3.3v vcc in - no resistor:
3.3v to SR to to red - reads 1.95
3.3v to SR to to blue - reads 2.99/3.00

When using a resistor at 5v … the leg before the resistor naturally shows 4.96 … but after the R … shows the lower value. When not using a resistor with the SR leg … the leg shows the lower value … making me wonder if the SR is acting as a resistor in this case.

  • I updated the title to say … reads 1.9v … not pulls … to help un-muck the question some.

is the SR acting as a resistor

Not quite, it sounds like the the output of your shift register is current limiting. That is it is supplying as much as it can and so the voltage drops. I suspect the LED is not as bright under these conditions.

In a way this is due to the output impedance of the LED. Impedance is used rather than resistance for this thing as it is a non linear quantity where as resistance implies a linear quantity.

I would recommend you read my page:- http://www.thebox.myzen.co.uk/Tutorial/LEDs.html

Thanks - just read the very well written page.

So it seems that even though the voltage looks right and the same as when I use a 180ohm resistor. I would damage / degrade the shift register and/or the LED over time not using a resistor as it stresses the components themselves over limits. I wonder if the current would be higher in the SR with no resistor case because I would like to be able to measure / see / understand the difference better to help assure I don't turn into a fry cook. I'll keep playing / reading to understand better.

Thanks for taking the time for such a thoughtful reply.

I am hooking the 3.3v output from the Arduino into the VCC of the shift register then hooking a led of the shift register to the red led.

While your terminology may be confusing a little, the problem may be based on your use of the Arduino 3.3vdc pin. This voltage is from and internal voltage regulator on the USB FTDI chip and has a very small current rating, 40ma total I think. You may just be trying to draw (pull?) too much current from this regulator and it's dropping in voltage. Can you measure the 3.3v pin while you are trying to do what you are trying to do with your external circuitry. If is dropping below 3.3vdc then you are going to have to come up with another way of providing 3.3vdc for your application.


OK - I got some current readings and your article makes since ...

The part where you say people run directly from the 3.3 to the LED with no resistor is bad .. I see that in my readings.

I see 342 ma being pulled directly from 3.3 volts to pin to a green LED, so with no resistor .. that is bad.

However .. oddly enough when I look at actual current. I still see the same current draw when using a resistor and when I pull from the SR.

When I run direct from Arduino 5v through a 180ohm resistor - the current reads 29ma.

29ma from Shift Register with no resistor at 3.3v 29ma from 5v with 180ohm resistor

Not sure what other reading to take to see difference between Shift Reg direct at 3.3 and 5v .. but that is what I have found so far using actual readings. Any pointer to what reading I can see that shows me the damage being inflicted on the LED or IC?


Lefty - I was thinking the 3.3 was from a regulator .. thanks.

I think I posted in the wrong section.

I don't have an actual problem .. was able to run 16 RGBs this way with no difference in running 1 or 16 .. just noted the odd situation where the SR seemed to be acting like a resistor and this part of the forum seemed it would provide the best technical answer.

Thanks for clearing up the confusion. Please Note: I don't always try reply as if this is just a conversation between the OP and Myself. I also seem to babble on about "best practices" for some reason.

The 74hc595 is likely going to impact your output pin voltage. Not sure if you included that. Meaning... you feed in 3.3V at VCC then the output pin gates are going to steal at least 0.7v of that (if not more) so you won't get the full 3.3v at the output pin.

Now these are CMOS output gates and I'm personally more familiar with that ancient TTL stuff (since they used to actually show full chip schematics) It is quite possible that there is some form of current limit inside the chip. I would consider that a bonus... but since I have yet to find anything more than an abstract block diagram of the chip... I guess we don't know the answer.

If I were going to run some RGB LEDs on the output pins... I'd be looking for a driver array... like a ULN2803. The pins of 595 are rather wimpy.

I am obviously a total noob. Just playing with LED and sensors and stuff to get started. I noticed this oddity and wanted to see if someone could clear it up .. shed some light on it.

I got better than that .. I got great details on how not using a resistor with the voltage looks right may be doing a slow cook on the components.

Thanks again for all the great replies and for all your work on the forums. It is really nice to have something out here to help people get into the micro controller world - what great fun.