Active engine coil ignition using arduino and transistor

Hello,

I am new using arduino.
I want to use arduino to control ignition system on my v8 engine.

I will use 8 ignition coil on arduino. Each coil uses 12v and 6amps.

Can I use transistor to turn on coil? Each coil will turn on many times per second.
Transistor will not get hot?

which transistor I need to use to this purpose?

thanks

Hello there!

I recommend going to Digikey and searching for transistors. Once you find the correct category, there are several boxes in which you can choose from several specifications, which help you narrow down the enormous list of components to what you are looking for. There are specifications for current handling, package type, and many others. Give it a look and let me know how it turns out!

I don't know exactly how an electronic ignition works...

Just about any transistor/MOSFET can handle 12V. And it won't be hard to find one that can handle 6A. The current rating is the most important spec., and the higher the better! It's common to "derate" components, and a good rule of thumb is to at least double the current (and voltage) rating... Look for a transistor or MOSFET that can handle 12A or more. And you may need further derating due to the temperature from the engine.

If you go with a MOSFET, make sure to get a "logic level" MOSFET that can be controlled by 5V from the Arduino. The "typical" MOSFET requires higher gate voltage to fully turn-on... That's not an issue with a regular transistor. A regular transistor turns-on with about 0.7V B-E voltage.

Any time you're driving an inductive load you need a flyback diode. [u]This MOSFET driver circuit[/u] has the diode.

...I wouldn't be surprised if electronic ignitions have some additional over-voltage protection circuitry in case the spark-voltage somehow gets back into the electronics.

And, any time you're playing around with high-current or high voltage I recommend buying extra components because you're probably going to fry some parts during development and debugging. (Actually, I almost always buy extra parts.)

Can I use transistor to turn on coil? Each coil will turn on many times per second.

Any transistor/MOSFET can switch at MHz.

Transistor will not get hot?

Yes. You'll need a heatsink, and you'll probably need an extra-large heatsink because of the heat from the engine. In general MOSFETs don't run as hot as regular bipolar transistors.

What's the Arduino doing? Although the Arduino runs at 16MHz, be careful with the timing. Depending on what your code is doing and how it's written you might get unexpected and inconsistent delays. The more "stuff" you're doing the slower it will run. (You might be able to use interrupts to react faster to the distributor.)

On a normal-modern car, the ignition timing might be controlled by a microcontroller, but the signal from the distributor might not go through the microcontroller... I dunno...

I think you do not understand the operation of ignition coils and spark plugs. The coils is a large inductance. As such it takes time to charge the magnetic field. So most ignition coil/plug systems create a spark by OPENING the circuit, not closing it. Is this the type of circuit you are designing?

Paul

Engine electronics controllers are fairly complex beasts anymore. There are several input sensors used to determine output control for varying conditions and speed.

You need to get a signal for TDC, along with a means to identify which cylinder. Newer cars use optical or hall effect sensors which do both, and also make it a digital 5V signal to boot. Next is timing, which is based on rpm and temp.

I'm sure a simple ignition system could be made using an arduino fairly easy using low-side switching mosfets as long as you can get a good crank angle signal and rpm. The hard part is probably the code for advancing/retarding the spark

Old fashioned Kettering ( contact breaker ) ignition systems had quite a high primary inductance in the spark coil, but modern ones don't. Hence they're fed with a short ( 100uS?) pulse from the ECU.

An arduino is NOT suitable for such applications, because background tasks such as millis() and the loop overhead will screw the timing - even if you use interrupts.

The processor is plenty quick enough, but you have to dump all the arduino convenience bits to use it.

eg a digitalWrite takes 7uS. Significant. On an 8-cylinder engine at 6000 rom that's about 3 degrees.

Never mind the other stuff.

Allan

DVDdoug:
I don't know exactly how an electronic ignition works...

I don't either.

DVDdoug:
That's not an issue with a regular transistor. A regular transistor turns-on with about 0.7V B-E voltage.

BUT, a "regular transistor" [Bipolar Transistor is the proper term] will always have a slight voltage drop, even when turned all the way on. That voltage drop will cause significant power dissipation [i.e. **heat**] at higher currents, and 6A is high enough for power dissipation to start being significant. Better to use a MOSFET.

DVDdoug:
Any transistor/MOSFET can switch at MHz.

BUT, there are special measures that might be needed. So, if you run into problems, ask.

DVDdoug:
Yes. You'll need a heatsink, and you'll probably need an extra-large heatsink because of the heat from the engine. In general MOSFETs don't run as hot as regular bipolar transistors.

Where do I begin...? First of all, there are MOSFETs that have such low "on resistance" [RDS(sat)] that heat from power dissipation will not be a problem. So, no heatsink necessary if you choose the right part. Also, if the engine is heating the thing up, a heatsink isn't going to help [because heatsinks don't send heat into another dimension :o ] -- well, I suppose if the heatsink is so large it extends several feet beyond the engine compartment, theeeeen it might do the trick -- but I'm being facetious.

Thanks for help me.

I will put arduino into a car, under dashboard, not into engine compartment.

I have all logic to control engine advance, rpm etc.

I didn't know that using loop in arduino for a long time I could have problem with time.

Paul_KD7HB:
I think you do not understand the operation of ignition coils and spark plugs. The coils is a large inductance. As such it takes time to charge the magnetic field. So most ignition coil/plug systems create a spark by OPENING the circuit, not closing it. Is this the type of circuit you are designing?

Yes, I want make something like this. Old cars that use distributor, the coil is always operating.
In my engine, I want use one coil per cylinder. Is there a way I can leave the coil turned on and only spark at the time of explosion?

And about delay using loop in Arduino, Is there a way to prevent this?

Thanks again

robsonrdasilva:
Thanks for help me.

I will put arduino into a car, under dashboard, not into engine compartment.

I have all logic to control engine advance, rpm etc.

I didn't know that using loop in arduino for a long time I could have problem with time.

Yes, I want make something like this. Old cars that use distributor, the coil is always operating.
In my engine, I want use one coil per cylinder. Is there a way I can leave the coil turned on and only spark at the time of explosion?

And about delay using loop in Arduino, Is there a way to prevent this?

Thanks again
[/quote

So which type coils are you using? The old fashioned type or the type allanhurst described?

Paul

If you turn a modern coil-per sparkplug coil on all the time except for a short 'off' period it'll burn out.

And with several , take a lot of power.

Don't.

Allan

Hi,
Have you googled... automotive arduino electronic ignition

Also googled... automotive electronic ignition kits

If your V8 eventually in its life evolved into an electronic ignition motor, many did, then you may be able to kit yours with a later model system.

The other solution is to get the ignition modules used on modern cars, one per plug with logic trigger input and use those.
This would mean you have avoided all the hassle of IGBTs or HIGH Voltage MOSFETs and component and environment protection of homebrew circuitry.

This may help;

Tom.. :slight_smile:
PS. In the 70's I had a Mini with kit made CDI ignition, biggest problem was mechanical stability.

Certainly don't use a MOSFET for this unless it has a heavy avalanche rating - if the plug lead fails all the spark
energy is dumped into the active device.

There are a whole set of IGBTs specially engineered for car ignition, much more robust than MOSFETs for
high voltage work, and designed to work from a 12V battery under starter-motor load (ie 8V or less). I
think this is the de-facto approach to this application.