MY firework ignition controller

Hello people, I've been strolling around the DIY scene for quite a while now and also did some small microcontroller stuffs. Some days ago friend of mine asked me if I could build a programmable firework ignition controller for him. I thought this is a very good project/reason to build something that is actually usefull :P.

Ofcouse the first thing I do is online research about similiar projects. There are a few but not quite what I had in mind how I would do it. Also I've found some solution and ideas here on the arduino forum. The following are my thoughts and ideas about how I would do it and hope you can point out mistakes and bad ideas as well as give me some of your ideas! ;D

Requirements:

  • A controller that sends digital signal to about 20-30 channels connected to a relais or igniter (My friend says those channels only needs to source/sink very low current each, no further specifications yet)
  • There should be a LCD and buttons to toggle through the channels and set a delay in half second steps
  • A "secure" main switch or a key switch would be nice.
  • the timing should be accurate enough to keep the fault tollerance under 1s when the last channel is ignited 15minutes after countdown starts (this should be no problem I guess)

Hardware:

  • As this is the first version of the controller, I would like to keep it as simple and use as many ready to use components and boards as possible. So I will probably use an phi-2-shield (Phi-2 shield | Liudr's Blog). It has:
  • 20x4 LCD, with backlight
  • buttons
  • RTC, EEPROM
  • buzzer
  • there is a library for easy menu creation and navigation, as far as I understand
  • I will put it on top of an arduino mega 2560, so I won't have to worry about pins and memory.
  • behind the 30 (or what ever number of channels) digital out put pins I will put the popular darlington arrays ULN2803A that we all love in projects with steppermotors. This will ensure that the digital pins of the mega 2560 doesn't have to sink/source much current AND also it keeps the pins save from possible backwards flowing currents, as I don't know yet what kind of relais or igniter he will hook up to the channel I provide. The ULN2803A are cheap and I don't see any reason not to use them, or using transistors instead.
  • In my opinion the ULN2803A darlington arrays will provide an exellent way to hookup the secure/key swtich: as the ULN2803A sinks all of it's outgoing pins to a common ground, I could just put this security switch between. So if this switch is not closed, the Arduino mega 2560 can still send out high (5V) signals to the darlington array, but nothing will happen on the outgoing side of it ---> no unwanted ignition.
  • I have little experience with circuit design, so I'm not sure if I should include debouncing capacitors at the output pins of the darlington array or at the digital output pins of the arduino to eliminate effects of floating pins at start or static discharge of some sorts when I turn the keylock to prevent accidental ignitions. The effects of such little things could be dessasterous...

Software
I'm looking for the simplest solution for the first version of the controller. My plan is to create a array with the length of the channelcount, it will store the second/milisecond of the ignition for that channel counting from the start time 't0', this t0 is set via millis() when the START button is pressed. There will be a function that checks if the next scheduled ignition time is reached, this function is beeing triggered by a timer that is set at every 100ms. That should do the job right? This scheduled time array can be stored on the EEPROM of the phi-2 shield, so a powerloss would be no problem.
Using the buzzer that is already on the board I can create a beep for each ignition (for demo purposes, when the keylog is not turned) and also some signals to alarm the user that the countdown has begun.
For the first firmware version, I think the RTC will not be used. As the start of the programm will be manually triggered with a button. Maybe I will just include a clock function for the fun of it.

Schematics
I will try to provide schematics as soon as I have confirmation that my thoughts above are not terribly wrong :D. And I will also try to update infos about my little project in this topic.

Thank you in advance for your help!

Sorry to report my lawyer advises that as soon as I offer help to you and you project, I am also responsible for any bad outcomes.

Once you find the current sink amounts, then perhaps TPIC6B595 high current sink output shift registers would do (50V, 150mA continuous). Simple matter of shifting in bytes of data from an array. Put your safety switch on OE/ output so no current sinking unless OE/ is brought low.
Here's a board I offer with up to 96 outputs.
Has couple of transistors for driving buzzers, and lots of spare IO for an LCD screen.

Or, a board with 32 N-channel MOSFETs as current sinks, shift data in 4 8-bit shift registers.
http://www.crossroadsfencing.com/BobuinoRev17/


I have little experience with circuit design...

:smiling_imp: And, your first design involves exposives! :smiling_imp:

There are probably certain safety requirements that would make it illegal to use anything home-built for commercial fireworks. Getting the thing certified by the appropriate regulatory agencies would probably cost more than the cost of a commercial controller.

Hopefully, your friend is an expert in this stuff... Maybe it's standard practice to use a multi-conductor connector so that none of the ignitors are connected to anything until everybody is out of the danger-area.

OK, with that out of the way....

Before you settle on the ULN2803, you really need to know the voltage & current requirements for the ignitor. Then, you probably need a resistor (or some other current-limiting mechanism) to prevent a shorted ignitor or mis-wire from frying the ULN2803 (which could shut-down the whole show).

In my opinion the ULN2803A darlington arrays will provide an exellent way to hookup the secure/key swtich: as the ULN2803A sinks all of it's outgoing pins to a common ground, I could just put this security switch between. So if this switch is not closed, the Arduino mega 2560 can still send out high (5V) signals to the darlington array, but nothing will happen on the outgoing side of it ---> no unwanted ignition.

You could use a SPDT (or DPDT) relay to switch the ULN2308's power between the supply voltage and ground... Ground it's power-pin in "safe" mode.

A "secure" main switch or a key switch would be nice.

You at-least need a switch where you can visually-mechanically see if it's off or on. Then, maybe a big blinking LED when it's armed.

the timing should be accurate enough to keep the fault tollerance under 1s when the last channel is ignited 15minutes after countdown starts (this should be no problem I guess)

I don't quite understand that, but if you want it to time-out and shut-down after 15 minutes, that could be done with a relay. It could be designed so that it can only be re-powered with a manual switch.

I'm looking for the simplest solution for the first version of the controller. My plan is to create a array with the length of the channelcount, it will store the second/milisecond of the ignition for that channel counting from the start time 't0', this t0 is set via millis() when the START button is pressed. There will be a function that checks if the next scheduled ignition time is reached, this function is beeing triggered by a timer that is set at every 100ms. That should do the job right?

The Arduino's clock (oscillator) has an accuracy somewhere in the PPM range. Timing & precision of less than 1mS are no problem, as long as the processor is not sitting a delay() or off running some function before it gets back-around to checking the time.

I'd say the most difficult part of this project is the user interface. Otherwise, you can test it with LEDs before connecting any ignitors. You can even test it before you wire-up the ULN2803's, and you'll probably want to leave the indicator LEDs permanently in-place anyway.

DVDdoug:
There are probably certain safety requirements that would make it illegal to use anything home-built for commercial fireworks.

No, just ce approval to sell, we know what that costs

DVDdoug:
Hopefully, your friend is an expert in this stuff...

Nah he's an idiot.

EDIT.

That's was unfair comment.

If you want a controller making usual practice is to find a professional engineer who is an enthusiast.

Some of this equipment is not ce tested.

I think its used under an exemption , but you have to be a professional engineer to make the argument.

You cannot blame equipment.
If something goes wrong its the sole responsibility of the firer.
No legal argument to get you out of that one.

DVDdoug:
I don't quite understand that, but if you want it to time-out and shut-down after 15 minutes, that could be done with a relay.

These are generally frowned upon.
A hard knock of a unit which is common in the field could easily cause the relay to contact.

DVDdoug:
OK, with that out of the way....

Before you settle on the ULN2803, you really need to know the voltage & current requirements for the ignitor.

The ignitor will have a no fire current rating you need to know that so you can do a circuit test without it firing.
Its essential as shorts in the field are common.

DVDdoug:
OK, with that out of the way....

. Then, you probably need a resistor (or some other current-limiting mechanism) to prevent a shorted ignitor or mis-wire from frying the ULN2803 (which could shut-down the whole show).

Shorts are common so short circuit protection is essential

I took a lamp cord and cut about 2 inches from it.
then sliced the section and pulled out one strand
then wrapped that around the fuse of a fire craccker
the wrap was like a barber pole. all separated so it does not cross itself.

we used a 12 volt lawnmower battery.

the trigger was a string stretched accross the yard. the uae was to scare the whitts out of the deer eating the garden.

do not try this at home

I use a blowlamp and run.
Much more fun.

I was at a display in Oban a couple of years back when the firing system developed a glitch.

That was an expensive professional controller too.

What was supposed to be a 20 minute display was over in 30 seconds.

Really spectacular while it lasted though.

Really embarrassing when it was over.