Hack Notes CVA 090609

From Noisebridge
Jump to navigation Jump to search

Compass Vibro-Anklet Hacking Session 2009.06.09

Putting in working Shift Register

So the HEF shift register doesn't work - not enough juice to power the motors (works fine on LEDs though). So I figured out how to swap in our already-proven TPIC6B595 shift register. Here are the instructions for modding the board, etc:

First: install rotated by 180 degrees. This greatly reduces the number of jumper wires, but does make pin numbering confusing.

By convention I am using the pin number AS THEY ARE ON THE BOARD, i.e. in the orientation of the original HEF4894B. I've renumbered the pins of the TPIC6B595 (just rotated 180 from the stat sheet):

GND   1  20  GND
RCK   2  19  nG
SRCK  3  18  nSRCLK
D4    4  17  D3
D5    5  16  D2
D6    6  15  D1
D7    7  14  D0
SROUT 8  13  SERIN
GND   9  12  Vcc
NC   10  11  NC

There are 4 jumpers, and 4 cuts you must make:

  • Jumpers
Bridge pin 10 to pin 9, connecting GND
Wire Pin 18 to Arduino 13 (nSRCLK to D7)
Wire Pin 12 to Vcc (which you can get at Pin 20)
Wire Pin 13 to Arduino 12 (SERIN to D6)

The other 3 signal pins are all free because of the rotation. The remaining GND pins are internally connected in the TPIC.

  • Cuts
Cut leg where Pin 20 is[see NOTE]
Cut trace from Pin 18 (to motor - not strictly necessary)
Cut trace from Pin 1 (to Arduino - otherwise D6 will be GNDed)
Cut trace from Pin 13 (to motor - not strictly necessary)

NOTE: this means pin 10 of the TPIC shift register - this is VERY CONFUSING, make sure you cut the right leg! Cutting the leg is way easier than cutting like 4 traces and wiring the necessary bypasses.

  • Code
// define the pins used to run the shift registers
int enable_low = 5;
int serial_in  = 6;
int ser_clear_low = 7;
int RCK  = 11;
int SRCK = 4;

Also, remove the shiftOut12 / new TurnOnMotor code...

  • Motor Wiring

There are 14 wires in the 7x2 array. As before, Vcc is on pin 1. The motors are now powered from:

D0 = pin 13
D1 = pin 12
D2 = pin 11
D3 = pin 10
D4 = pin 3
D5 = pin 4
D6 = pin 5
D7 = pin 6

(so basically, don't put any motors on the middle pins 7, 8, & 9, or on 14. The strange shift is because of skew in the HEF part)

I have mine working now except for the motor order (need to change the code to match my new armature). So it does work, and other than the desoldering it's actually not too much work.

Specing New Shift Register

Our new part is: 296-2020-5-ND which is TPIC6C595N (C instead of B).

It's a 16-DIP version of the old shift register. It has slightly less power (100mA/pin, 250mA total versus 150mA/pin, 500mA total), and four less pins (it's missing the two extra GNDs and the two NC pins). The stat sheet doesn't give the cascading circuit, but I am sure we can simply wire the 4 clk/clr signals into both, and send serial out from the first into serial in from the second. So no extra pins from the Arduino. The hard part will be finding room for two 16-DIP parts where the current single 20-DIP part is. We'll also need to expand the motor array, perhaps into two separate 5x2 jacks?

Also, the other potential part is a "dual octal registered transceiver", 296-4031-5-ND, providing 16 64mA pins in a 24-DIP. It's non-stock at digikey, and furthermore I don't trust it. 64mA is barely enough. It would also require all new code to talk to it. If we have super duper trouble with the layout, we can order one of these, bread-board it up, and see if it actually works...