Wednesday, 11 March 2015

Fully 3D Printed Proton Pack Complete



Visit Tagbits to see the full range of tagger products described in this blog.

I finally finished my fully 3D printed proton pack the other week. I've spent the final days implementing the lighting system using a simple Microchip PIC and a charlieplexed array of LEDs.

The traditional circuit for lighting a pack consists of a 555 oscillator to produce a clock, which is then fed into a couple of shift registers, the output of which drive NPN transistors to drive the LEDs. This produces a column of lights that rises then resets.
A decade counter (with transistors) is used to illuminate the LEDs in the 'cyclotron', the 4 large circles at the bottom of the pack.



This seemed a bit over the top to me, as not only being complicated, with around 13 LEDs in the column, the wiring of some implementations is a bit challenging with a cable per LED.

So I designed some circuits to implement the same effects, but with far fewer wires. Not only does this simplify the wiring, fewer wires should also increase reliability.

I created a very simple circuit which brought out the I/O of a PIC (16F684) to a few connectors:



And a second circuit which gave me a charliepxed matrix:



I did this as two separate circuits as the pack has two LED columns, one on the pack and one on the thrower. A smaller PCB is used in the thrower with a second PIC board which means each LED column has a LED board and a PIC one. I chose a board pair solution as there is limited room in the thrower housing where the LEDs are mounted.

Charlieplexing works by utilising the tri-state ability of microprocessor I/O pins, in that only two pins are ever outputs at any one time. To implement this I used two look up tables: One to hold the port I/O register states (e.g. which pins were outputs, and which were not). One to hold the pin values (e.g. which pin high and which pin low).
I also included 16 levels of dimming per LED by implementing PWM in software. With the PIC running flat out at 2mips I can control each LED individually with dimming without flickering:



Here is the finished pack:




And here I am ready for Zuul with youngest as Mr.Stay Puft:


The proton pack parts can be downloaded from Thingiverse. And a few others worldwide have joined me in making this:

Iron Man of Maine.

and Jeffarazzi:

1 comment:

nophead said...

Hi Tone,
If you put a diode across each resistor you can drive a row of LEDs at a time like a conventional mux but with a diagonal missing. I.e. take one pin low and its diode conducts making a low side select. Then any of the other pins can be high for the high side drives. A bit more efficient than only driving one led at a time.