Daft Punk Table Replica driver board reverse reconstruction.
I'm actually making a wall hanging rather than a table because theres no room in my studio for another table.
The author of that instructable didn't include the microcontroller program or a circuit for the driver board. From the description (and looking at another site) we can tell that it uses a a couple I2C port expanders connected to a transistor array. I have both the PFC port expander and the ULN2803A in my parts box, but I think it can be made cheaper, faster, and expandable.
I want to ditch the I2C bus. Why?
1. Its slow (100 or 400 khz), not that more is needed, but what about bigger boards?
2. Its bit intensive: each chip update requires a)start signal, b) address byte, c)port setting byte, d)stop signal. That's more than 8 bytes of bits per table update.
3. Its expensive: the i2c bus needs 2 pullup resistors, and you have to route Vcc to them on the PCB. I2C peripherals are a bit pricey ($1+ for the PFC i2c port expander). You need a UC with hardware I2C, or write a I2C software routine, etc.
4. Its not expandable beyond the assigned number of I2C addresses. The PFC chips have a limited number of address selections (determined by the state of 3 pins). If all addresses have been used then a second I2C bus would have to be added.
These goals can all be accomplished with a handy chip I learned about in lady ada's bike POV instructable, the 74HC(T)595.
The 595 is a serial to parallel port expander with 8 output bits. The interface is a simple 3 line affair with serial data/clock lines and a latch that puts the data on the pins. Now the cool part: several can be connected end-to-end so that you can create a chain with hundreds of extra outputs. Bits can be clocked in at up to 20Mhz, so large or multiplexed grids are possible.
Why its good:
1. Its fast, up to 20 Mhz
2. Simple interface - clock in only the bits needed then set the latch. 26 bits, <4 bytes per refresh.
3. Its cheap: 0.33 per chip, easy 3 wire interface can be operated with microcontroller, PC parallel port, or even buttons.
4. Massively expansion potential, multiple chips can be chained for a disgusting number of outputs.
The circuit is pretty basic. It only includes those things needed for the graphics card : I/O expanders, transistor array, connection headers. Power supply and control unit are separate components. The 595 has a 'blank' pin, it seems to reset all the chips to a known state when pulled low. I wanted to make it available for a 'more complete' design, but I also included a jumper so that it can be manually disabled for use in simpler implementations.
The 3d is just for fun: the PCB is mostly unrouted.
Any comments or suggestions? Has anyone used the 595 before? I've ordered a few to play with, but have not yet used them.