Fireworks Automation
From Bob's Basement
Contents |
Project Introduction
It's almost November the 5th, and what kind of geek fireworks party doesn't have electronically fired fireworks?
We have a bunch of fireworks. We'd like to make them go boom, preferably in some kind of sequence, using the wonders of modern technology, in a flexible, automated and customisable way.
Bob's Basement to the rescue!
Participants: Naxxtor, BOfH, Katje, gL1TcH (guest engineer)
Hardware
Ignition
Here, we have two choices. We want to fire the rockets electronically, so we want to use something that can be ignited with current.
Both have one base requirement - a source of current and a switch (relay) to energise them. A reasonably thick wire between the relay and the igniter is required, to prevent the wire from getting too hot (they'll probably draw quite a bit of current!)
Fuse wire
Simple solution - big wire, with a section of small wire. Short with car battery. Heat, and hopefully ignition of the touchpaper ensues.
Disadvantage is that the firework will not immediately ignite, rather, the touchpaper will. The timings of the fuse would need to be taken into account when firing.
Model Rocket engine igniters
These things are much, much more volatile than a piece of wire and should have a much quicker effect. They will ignite when current is passed through them, rather than just getting hot. They could in fact replace the touchpaper on the fireworks entirely.
Advantage is, of course, that the firework will go ignite much more predictably than with a simple fusewire.
Commercial E-matches
These are designed for the job - they're basically exactly what we need (and what is used commercially in professional pyrotechnics for such things). Only thing is they're a bit pricey and kinda tricky to get hold of.
Computer Interface
The natural choice, for the sake of simplicity, is the Parallel port. It's almost like it's designed for such things. In later revisions we may make use of a serial connection, for reasons outlined later.
The Parallel port has 8 1-bit channels which you can play with (so, 8 fireworks). Simply hook each channel up to a relay, and arrange some resistors to get a larger current source to flip relays when the channel is high (+5V) or low (0V).
This is a fairly standard procedure, in fact, there are kits available to do exactly this.
There is a PDF with a full circuit diagram for such a device CK1601.pdf
Disadvantages: The only disadvantage of using the parallel port is you are limited by the number of channels you can use. In the basic case, you only have 8 channels. With a basic multiplexer, you could have 16. With a full 8-bit representation, you could theoretically have 255 outputs. If you were to use instead a serial data channel, you could theoretically have an unlimited number of outputs, given enough circuitry to do so. But to be honest, we've got a giant pyrotechnics company, so it doesn't matter that much.
Design Factors
- The parallel port won't source enough current to flip a relay, so an external supply and a small rig of transistors are required.
- Relays will require protection from back EMF (so, a diode).
- Smoothing capacitors *may* be desirable on the input.
- LEDs :D
- There will be 2 supplies (not including current from the parallel port)
- The "control" supply (12V DC, 1-5A)
- The "high power" supply (12V DC, a 10s of 1A peak)
Circuit Diagram
One of these circuits is required for each Data pin on the parallel port.
Bill of Materials
There is considerable flexibility, however here are the components used in the above diagram.
In brackets is the order code for Rapid Electronics
- 8x 2N3904 (81-0484)
- 8x R330 (64-0062)
- 8x 1N4002 (47-3422)
- 8x 5mm LED (55-0400)
- 8x 16A PCB FORM A POWER RELAY - 12Vs (60-5032)
- 1x D-25 Male connector + lead (19-1130)
- 1x Veriboard (34-0515) OR PCB Etching stuffs
From rapid, this costs about £15 in total.
Version 2.0
Parts
- 60W Transistor - TIP41A (81-0162)
- Optoisolator - CYN17-3 (58-0886)
- 10A fuse (26-1040) and holder (26-0196)
Software
Not wishing to show off too much, but PERL ONE LINER:
use Device::ParallelPort;$p=Device::ParallelPort->new();for($i=0;$i<8;$i++){$p->set_bit($i,0);$p->set_bit($i+1,1);}
Fires each firework in turn (assuming that it takes one second for the ignition to occur.)
Making programs to write to parallel ports is very, very easy. There are Perl Modules to do it, and to be fair doing it in C isn't that hard either.
It's very flexible indeed.
Check out the wiki page for Reference material on Parallel Port Programming
The first test run
Bonfire night was celebrated with the test launch of our fireworks system. We knocked together a simple firing rack out of some old wood and the launch tubes that came with the fireworks. The ignition cables were connected via a choc block to the control board and we wired resisters onto the end for the igntition system. It was found that placing the elctronics underneath the fireworks was a pretty bad idea as it gets rather messy! We also need to review the rig design, maybe next time using something disposable as it too gets in rather a mess. The ignition system also takes a long time to reload, so something new there. There also needs to be a redesign of the wiring as the choc block is very fiddly to wire up and Cat5 tends to break rather easilly.


