Go Down

Topic: Maximum number of shift registers cascading (TPIC6B595) (Read 1 time) previous topic - next topic

CrossRoads

#15
Nov 18, 2017, 10:03 pm Last Edit: Nov 18, 2017, 10:03 pm by CrossRoads
So you're wired up like this? With multiple chips where I show one shift register?
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Grumpy_Mike

Quote
But if they are required it is evil that they are not built in.
Because of the enormous expense that would involve.

Quote
I have ceramic capacitors now, but reading old messages made me realise i forgot they are not the ones required
Ceramic capacitors are EXACTLY the sort of capacitors you need. Nobody should say any other type.

houile

Ceramic capacitors are EXACTLY the sort of capacitors you need. Nobody should say any other type.
Yes i know, but as i said i used 0.01uF instead of 0.1uF so i guess i need to change all 43 capacitors  :'(

So you're wired up like this? With multiple chips where I show one shift register?
Exactly, but i have buffer chips on SER (data), RCK (latch) and SRCK (clock) every 12 TPIC6B595 chips, not between every chip.
Right now it stops working properly even whith 2 chips so my guess is there is an issue with the lenght of the wires.

Wawa

I don't see the logic in replacing 40mA capable Arduino output pins with ~4mA capable output ports.
Is OP using SPI or shiftout(). Can it be slowed down in code.
How long is the wiring, and is it low capacitance (CAT-5 or Cat-6).
Maybe reflections are a problem, and the wires needs to be terminated.
Or propagation time of the data needs to be compensated by slowing down the other signals as well.
No experience in that number of shift registers (yet).
Maybe someone that did proper experiments with a logic analyser could enlighten us.
Leo..


 

CrossRoads

#19
Nov 19, 2017, 06:34 am Last Edit: Nov 19, 2017, 06:34 am by CrossRoads
TPIC6B595 are 150ma output capable, not 7-8mA of 74HC595.

Yes, I understand not buffered between chips, but between banks of chips.

I've connected up 5 of these boards with short ribbon cable between boards and clocked in data at 8 MHz (fastest SPI rate) with no problems.

Arduino connects to the first one, then it's board to board after that. Each board had power/gnd from the 5V source.

Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

CrossRoads

mc74ac125 was selected as the buffer for its high drive capability and low propagation delay.
http://www.onsemi.com/pub/Collateral/MC74AC125-D.PDF
At 8 MHz, positive clock edges are 130nS apart, so having 5 buffers of delay means that the max delay introduced is ~ 50nS, so all transitions are done before the next positive edge occurs.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Grumpy_Mike

Quote
Yes i know, but as i said i used 0.01uF instead of 0.1uF so i guess i need to change all 43 capacitors
No, while 0.1uF is the preferred value 0.01uF will do. You might want to add a 0.1uF every four or five chips if you are getting problems plus a big one like a 47uF to the whole chain.

houile

#22
May 22, 2018, 11:03 pm Last Edit: May 22, 2018, 11:04 pm by houile Reason: File not sent
Hi! Little follow up here, now my device is finaly working !

I left it alone for a while, and i started again by segregating functions on separated Arduinos. Now my Arduino Uno only receive bytes via Serial port, telling it to light up some light bulbs (or launch a sequence). Much easier for debug. I made a cleaner installation to avoid power issues.
I also changed ALL the chips because due to my early issues, some had overheated and i didn't want to lose time because of one faulty chip.

The capacitors was a good advice - which is obvious because it is written in the datasheet.
The buffer chips, however, messed with the datas. Maybe i did not use the right ones, but it started working when i removed them. In my case they were not necessary.

Obviously i made a lot of changes, so i cannot say for sure what was my issue. There was probably many, and i might have created some more while trying to fix them. Thanks to all of you for you help and support :)

Attached is a picture of my shitty work, and a video of the final result. The sound you hear is an old keypad.

Go Up