MOSFET (N&P)

So
I saw that sparkfun sells N-channel (60V 30A = http://www.sparkfun.com/products/10213) And P-channel (60V 27A = P-Channel MOSFET 60V 27A - COM-10349 - SparkFun Electronics) Mosfet.
I would like to trig fireworks igniters with them.
I will program the UNO to close the circuit only 10ms (far enough to burst the igniter)
I tried to draw the circuit here (based on the work of demss) =

Do you think this will work ?

I don't fully understand why i have to put a N-channel Mosfet before the P-channel. Can someone explain this to me ?
Any suggestion on what i draw ?
Do I have to add more protection for the Arduino Board ?

thank you :wink:

The N FET pulls down the gate of the P FET, which in turn pulls the ignitier high.

The P FET here is a "high side switch" and its operating off a different voltage rail that the digital part so you need something in between to translate from 5v to 12v.

Pyrotechnics its good to keep all the igniters and squibs grounded and looking for hot to fire them. Once we tried it the other way 'round and it worked fine many times. Once it didnt and now you can see us on "Destroyed in Seconds". Fortunately everyone was able to walk away.

You could save a FET by just putting the igniter in place of the second 10K resistor, but its not worth saving a FET to become a statistic yourself. Also your software is not certified to Level A of DO-178, so your overall system better have an independent fail-safe that meets integrity required for your hazard level.

Be Safe, Have Fun !

I gotta agree with the voice of reason (AltairLabs). I love MOSFETs and for most projects the difference between an unpowered and ungrounded/open circuit is semantics. This is not one of those projects.

Hi,
thank you for your reply. Unfortunatly i don't understand few things that you say (my poor english ...)

you need something in between to translate from 5v to 12v.

You mean, in the circuit i draw, i need something more so the P-channel mosfet can do its job ?

it worked fine many times. Once it didnt ...

What do you mean ? You connected the V+ and use a N channel Fet for the ground and the igniter didn't work ?

I want to build a circuit because the all-made board i use now looks a bit expensive if i want a lot of channel (http://www.emartee.com/product/41874/Arduino-4-Route-MOSFET-Button-IRF540) and the thing is that this mosfet deals with ground. Do you think it's a bad idea to use this board to trig fireworks ?

your overall system better have an independent fail-safe that meets integrity required for your hazard level.

... Are you talking about security, and lock the system so anyone can access to it, or something like that ? I use Xbee to commincate between the arduino who command, and the Arduino who really fire with mosfet and 12V. the network is as locked as possible with a 128bit key. I think it should be enough.
Do you think about something different to protect the system ?

And .. regarding the circuit i draw,

You could save a FET by just putting the igniter in place of the second 10K resistor,

I simply don't understand how the igniter could be fire at this place ...

Quote:
you need something in between to translate from 5v to 12v.
You mean, in the circuit i draw, i need something more so the P-channel mosfet can do its job ?

No your FET circuit works, the voltage translation is the reason that 2 FETs are needed to make the high-side switch, which was your original question.

Quote:
it worked fine many times. Once it didnt ...
What do you mean ?

Once it ignited before it was supposed to - YouTube

Quote:
your overall system better have an independent fail-safe that meets integrity required for your hazard level.
... Are you talking about security..... Do you think about something different to protect the system ?

No, talking about unintended function of software in safety critical systems. Read the story of Therac 25 Therac-25 - Wikipedia Do not depend on software alone, no matter what encryption.

Quote:
You could save a FET by just putting the igniter in place of the second 10K resistor,

I simply don't understand how the igniter could be fire at this place .

because when N FET turns on the drain goes to ground, the top end of resistor or igniter is at +12V.

We are worried that your diagram does not show any independent mechanical interlock as a safety backup for software.

Isn't 10K kinda weak for the pulldown resistor? It seems to me that some software glitch like accidentally turning on the pullup before the pin is configured as an output could trigger the MOSFET. Perhaps a 1K, instead? Maybe I'm being overcautious because I don't do a lot with FET drivers.

Another thing I would do is add an "arming" switch between the Arduino and the gate, with the pulldown always connected. That way, if something unexpected happens to reset the Arduino, there's no way it can glitch the FET while it's coming up.

And, finally, I would add code that flashes an LED distinctively so I'd know the sketch is running properly before I flipped the "arming" switch.

That's not completely foolproof, but it's a good start.

hi AltairLabs, hi Ran Talbott

We are worried that your diagram does not show any independent mechanical interlock as a safety backup for software.

actualy, i have a lot of other things plugged into the arduino.
I have 1 switch to open the circuit of the Battery (12V +), that means the battery don't feed any fet with its (+) until i switch it. I will switch it only when all my check routine is OK.
I have an other switch that goes in the ARduino, and act as a sofware switch, if it is off the code can not fire any igniter, and i did the condition in many place in the code.
I cannot put a switch just before the N-channel gate as Ran Talbott said because i have 20 channels of that circuit, i would need 20 switch right ? maybe you think about a way to do it ?

I would add code that flashes an LED distinctively so I'd know the sketch is running properly before I flipped the "arming" switch.

Yes, I did something like this. I have a LCD that show me some important information, and a little star is blinking in the corner when the code is running in the good place. that tells me "ALL is good, you can arm". i also have a led that blink to tell that the communication between the 2 Arduino is OK.

AltairLabs

because when N FET turns on the drain goes to ground, the top end of resistor or igniter is at +12V.

So You think it could damage the P_FET if i do it the way i draw that's right ? I replace this Resistor by the igniter between the Gate and the source ? I don't need this Resistor ?
by Dammage you mean in case of a short with an igniter that don't burst ?
the P FET is 60V 27A ..., I use a battery 12V 1800mAH, and i open the FET only 10ms, do you think the FET will handle a short in this conditions ?

I will draw a new circuit with the switchs and your way to place the igniter. It should be on the new Forum, ... migration is coming.

What is the Current Draw from your igniter? Is it a possibility to use a Medium power transistor that is already suited for a 5V Base signal? Like a TIP122 or TIP127. These have a 5V Emitter to Base voltage and can switch 60 Volts with a 5 Amp collector current.

I like MOSFETs too, but It seems like your trying to use a cannon to shoot down a paper airplane.

I dont know the specs on the igniter you are using so I may be wrong, maybe a MOSFET is required.

hi.
Igniters need around 2A to burst. I tought this FET would be good because my battery is 12V today, but can be larger maybe later.
Plus, if the igniter don't burst (because it happen sometimes), i will have a short during 10 or 20 ms, i really don't know the total current the battery will give in case of a short, maybe a lot. I use a 12V 1800 mAh battery. So this FET can handle 27A, i think this is a good way to "self" protect the FET am i wrong ?

If you use NPN like the TIP12x that introduces new safety hazard, due to igniters being wired hot, as discussed above with You-Tube video.

There is no harm in using a strong FET, it has lower drop than the NPN or smaller FETs. Igniters will burst more reliably, less chance of a dud, when you turn them on hard and fast.

because i have 20 channels of that circuit, i would need 20 switch right ? maybe you think about a way to do it ?

It always helps to bring up things like having 20 channels at the beginning, because they make a big difference in the answers people suggest.

There are switches out there with lots of poles, like the ones used in switchboxes for printers and video cables. But a simpler approach, if you wanted to gate 20 lines, would be to use a bunch of AND gates, and use a single switch to control 1 input to each of the 20 gates. But that might not be the best approach.

Controlling the common power to all the igniters, as you're talking about doing, is probably best. But you need to talk to a real EE about this, who has some experience with this kind of circuit. Almost all mechanical switches have some contact bounce when they're switched. You need some assurance that there won't be some sort of glitch when the power is "bouncing on" that could cause igniters to be accidentally triggered.

The LCD indicator is as good an idea as the LED I suggested. You just need to make sure that it's something that gives you a positive indication that the code is running, like flashing on and off (as you've done). A steady "on" is something that could be set before the program goes off into a bad loop somewhere, giving you a "false positive" (I think you've already figured this out, but it's worth making it explicit for other readers).

Rather than using individual N-channel FETs, I'd use ULN2003s or ULN2803s. They'll save space, save wiring, and maybe even reduce your component cost. Even if they wind up costing a few cents more, the final product cost will probably be lower because of the reductions in other areas.