Folks,
I'm controlling 8 LEDs each drawing 20mA through a 74HCT4094 shift register.
According to the data-sheet of the *4094 25mA per pin are fine, but the total load shouldn't exceed 70mA!!!!!
I'm drawing 160mA, the system runs for already 2 Months and the shift registers still work and don't even get hot nor warm!!!
The specs don't mean it's going to burn-up instantly if you go to 71mA. But if it does, you've exceeded the specs and you can't complain. I'd say twice the rated current is "pushing it", but who knows... It may last forever.
The manufacturer is confident the part will be reliable at 70mA or less. But, there are manufacturing variations. Some parts may fail just slightly over that, and some may handle more current "forever".
An analogy would be a bolt rated to hold 100Lbs. It should hold 100Lbs, and some may fail at 101Lbs and others may fail at 300Lbs. But if you're building a bridge, you'd want to leave some safety margin and maybe put no more than a 50Lb load on the bolt.
So the question is, How critical is the application? Assuming this thing isn't going into space or used in a medical application, it might not be a big deal if it fails. I also wouldn't recommend going into production and selling things that exceed design specs.
So i can omit using an ULN2803 or similar device?
You can continue to take a risk (I think it's a small risk, especially since the part is not getting hot), you can add a driver, or you can reduce the current.
Is the part in a socket or on a breadboard, so it's easy to change? You might want to just keep a couple extra on hand in case it fries...
The ULN2803 pin out is better though But why would anyone replace a shift register with a 8 channel
driver in the first place, they are different functions.
MarkT:
The ULN2803 pin out is better though But why would anyone replace a shift register with a 8 channel
driver in the first place, they are different functions.
i dont't want to replace, but add the driver to the shift register to enable controlling "high"-power loads
TPIC6B595 is what i was looking for!!! thank you !!! :))
the HCT4094 series requires additional parts to be operated, like:
So what happens if the Atmel places a '0' on an output? Worse case it outputs 1V. This is higher than the
maximum Vil and smaller than the Vih of the HCT4094 so 'it has no idea what it is'. Would you have used the HC4094 (if it exists), no special precautions would have been needed
"How do you stabilize the TPIC6B595 ?"
Only a 100nf/0.1uf Cap from VCC to Gnd is needed. MSCLR to VCC. OE/ to Gnd, or to a PWM output for brightness control. Nothing else.
This board I offer for instance has 12 TPIC6B595 daisychained and controlled by SPI.transfer from the 328P in the lower left (so board is like an Uno with offboard USB/Serial adapter). Nothing but 0.1uF caps on the VCC pins. http://www.crossroadsfencing.com/BobuinoRev17/
Decoupling is on the supply to keep it stable against change. Signals must be allowed to
change (rapidly) or you may get false triggering on the receiving end (unless schmitt-trigger inputs).
You can use the combination of an RC low pass filter and a schmitt-trigger input to protect a
low-bandwidth signal from noise pickup, but clock to a shift register is a fast signal and must be
prevented from multiple triggering. Standard logic inputs will undergo multiple transitions given
a slowly varying input voltage. Remember slow here means slow compared to a few nanoseconds
(ie a microsecond or more).
Putting 10nF load on a logic output will overload it. At high frequencies this will cook the pad
driver on the chip.
digitalWrite (latchPin, LOW); // connect to strobe (RCLK on 74HC595 for comparison)
shiftOut (dataPin, clockPin, MSBFIRST, dataByte); // dataPin to Serial In, clockPin to SRCLK
digitalWrite (latchPin, HIGH);
If using SPI.transfer :
digitalWrite (ssPin, LOW); // connect SS (D10) strobe (RCLK on 74HC595 for comparison)
SPI,transfer(dataByte); // MOSI (D11) to Serial In, SCK (D13) to SRCLK
digitalWrite (latchPin, HIGH);
I always use SPI.transfer. Default settings (no code change needed) are MSBFIRST, clock speed of 4 MHz. Mode 0 (SCK sits low when not active). I set SPI clock divisor to 2 for really fast transfers (8 MHz clock, fastest available).
MarkT:
Decoupling is on the supply to keep it stable against change. Signals must be allowed to
change (rapidly) or you may get false triggering on the receiving end (unless schmitt-trigger inputs).
You can use the combination of an RC low pass filter and a schmitt-trigger input to protect a
low-bandwidth signal from noise pickup, but clock to a shift register is a fast signal and must be
prevented from multiple triggering. Standard logic inputs will undergo multiple transitions given
a slowly varying input voltage. Remember slow here means slow compared to a few nanoseconds
(ie a microsecond or more).
Putting 10nF load on a logic output will overload it. At high frequencies this will cook the pad
driver on the chip.
okay, i think thats the reason why sometimes -when using 10 nF on each STROBE/DATA/CLOCK- some LEDs are switched on (always the same ones by the way) although they are not supposed to be on (?).
CrossRoads:
SRCLR to VCC directly.
If using shiftOut() :
digitalWrite (latchPin, LOW); // connect to strobe (RCLK on 74HC595 for comparison)
shiftOut (dataPin, clockPin, MSBFIRST, dataByte); // dataPin to Serial In, clockPin to SRCLK
digitalWrite (latchPin, HIGH);
If using SPI.transfer :
digitalWrite (ssPin, LOW); // connect SS (D10) strobe (RCLK on 74HC595 for comparison)
SPI,transfer(dataByte); // MOSI (D11) to Serial In, SCK (D13) to SRCLK
digitalWrite (latchPin, HIGH);
I always use SPI.transfer. Default settings (no code change needed) are MSBFIRST, clock speed of 4 MHz. Mode 0 (SCK sits low when not active). I set SPI clock divisor to 2 for really fast transfers (8 MHz clock, fastest available).