Model Engine Ignitions

Home Model Engine Machinist Forum

Help Support Home Model Engine Machinist Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
What is sorely lacking here to fire once per 720 degrees is synchronization of the compression stroke. The ignition would need some way to know when an engine is on a compression stroke. One could use 3 Hall-effects, one for each rocker or push-rod and one on the crank. Then connect them to a 3 input 'AND' gate. This way when both rockers are at rest you know a compression stroke is about to happen and when the crank signal happens it fires the ignition. This setup however would mean adjusting the timing manually. One could also use the embedded magnet built into the flywheel for a crank signal. Or use the cam gear and crank flywheel. But in all reality wasted spark helps to keep the sparkplug clean and there are millions and millions of engines out there for years using it.

Side Note:
I have done a lot of testing of small engine ignitions and I can tell you right now that Walbro makes the worst. Ever hear of the Pulling-Poulan chainsaws and other Poulans? The reason they call them Pulling-Poulans which is now owned by Husqvarna and they now both use one type of Walbro ignition that is designed to reduce kick-back when starting. So you end up pulling and pulling to get the damn thing to start. What Walbro does is put everything into a single coil pack and it is considered a high voltage (@220Vac) CDI preprogrammed ignition. Now to be nice to the person trying to start one of these engines they retard the timing between 0 and 8 degrees ATDC. So it fires when the piston is going down already. I have 3 engines now that will either not start but make flames out the exhaust or they just slowly die. According to Walbro information it is very common on this type to retard timing 8 degrees ATDC and only start to increase timing once the engine reaches 450- 500 RPM which is nuts, it should be 200 RPM. Now I don't know the brand of ignition coil shown in the pictures but I suspect it's a Walbro. I've tried changing coil packs both OEM and even Chinese made ones with no luck. I've had some success increasing the gap between the coil and flywheel which increases timing but there was not enough adjustment. Increase the gap too much and I loose spark. The only thing I can think of is that when the flywheel is made there is core shift or something and the magnet is not positioned correctly, so need new flywheels.

Sorry I haven't been contributing much lately but business calls and prep for winter. I hope to get more done after Xmas.

Ray
 
"The OP would like to invent a hall-triggered system that only fires once per 2 revolutions of the flywheel. A hall sensor on the flywheel can give good resolution for spark timing, but opens (briefly) on every revolution, and OP would like to cancel one of those. "

I've been kind of watching this discussion and wondering if anyone has tried the approach that seems like the obvious answer to me. A circuit trick to divide a frequency by two requires just one component: a D-type flip flop. The "generic" part number in logic parts is a 7474. If you were running this on 12V, you could use a higher voltage logic family, like CMOS, making it a 74C74.

View attachment 131847

If the "every other" pulse is a problem, this will effectively make it go away. The only gotcha I see is that this assumes the first one is the one you want.

Several of you have played with electronic ignitions far more than I have, so I wonder if this is ever used.
Dear Bob, Yes that is the idea I am pondering to use. I got it on another forum called "All about circuits". With the D FF and the circuit from John I think I am all set! I just need to figure out how to solder things...LOL
I will let you know if I need some more help once I start putting it together.
Thanks for the help!
 
Dear Bob, Yes that is the idea I am pondering to use. I got it on another forum called "All about circuits". With the D FF and the circuit from John I think I am all set! I just need to figure out how to solder things...LOL
I will let you know if I need some more help once I start putting it together.
Thanks for the help!

After I posted that, I started to wonder if that would be useful in an ignition.

The difference is that we're dealing with short pulses and high voltages in electronic ignitions and every time I've used that circuit was for square waves that were on half the time (like in the figure I got offline). Designing for pulses is different than designing for 50% on, 50% off square waves, and designing for spark plug pulses is even more different.

Yeah, I can see how to turn that square wave into a pulse again, using it to trigger another part (74C123), but I have no idea if these things really work in ignition systems.

I'll be interested in seeing if it works for you, Juan.
 
I'll be interested in seeing if it works for you, Juan.

I'll be astounded if we see that it works (interested too, but astounded nonetheless!).

I don't believe that the square-wave/equal-time issue is any kind of a problem for the flip-flop solution, or at least whatever variety of problem it may be, is dwarfed by the facts that :

A) the thing cannot know which of the two sparks it needs to quench, and B) with spark voltages flying around, it will be exceptionally difficult to keep the TTL/CMOS/etc-level flip-flop logic from seeing spurious triggering events.

Anything that can deal with (A), by definition knows which spark needs to be quenched, and therefore can be used to directly quench that spark, rather than playing counting games.

Efforts to deal with (B) strike me as likely to be brittle. I would put folding money on the table that even if one can gets it running stably one day, if the humidity changes, it's back to square one. Someone who does not currently know how to solder, is likely to find that, shall we say, frustrating...
 
I don't believe that the square-wave/equal-time issue is any kind of a problem for the flip-flop solution, or at least whatever variety of problem it may be, is dwarfed by the facts that :

A) the thing cannot know which of the two sparks it needs to quench,

I think that can be set by the person installing it. We have the ability to see which state the engine is in, so we put the spark plug out where we can see it, and position the sensor such that it fires at the end of the proper stroke.

B) with spark voltages flying around, it will be exceptionally difficult to keep the TTL/CMOS/etc-level flip-flop logic from seeing spurious triggering events.

I was surprised when I bought my electronic ignition for my Webster that it was in a plastic box and not metal for that reason. Shielding is important in just about anything these days. Especially something like this.
 
I think that can be set by the person installing it. We have the ability to see which state the engine is in, so we put the spark plug out where we can see it, and position the sensor such that it fires at the end of the proper
Stroke.

That only works if you’re willing to pull the plug to reindex the spark, every time you pull the starter. Since the impulse for the spark is created every time the magnet passes the coil, and small engines have plenty of “bounce”, you’ll see many instances of the magnet passing the coil that do not correspond to rotations of the crankshaft. This blows any chance of “index it today, use it 10 minutes from now” actually working reliably.
 
Someone who does not currently know how to solder, is likely to find that, shall we say, frustrating...

I should also say, there is absolutely nothing wrong with not currently knowing how to solder, and I applaud anyone who has an interest in learning how to solder and usefully manipulate the pixies. My hat is off to the OP for having the gumption to tackle the project.

my comment is solely that this kind of project does not make for a pleasant learning experience. I’ve had a student spend 2+ years in the lab chasing apparent spurious triggering faults in a hall-sensor system, all as the result of a poorly regulated switching supply dumping just enough noise into a shift buffer to make it look like sensors that weren’t, were.

down this particular road, I expect hair pulling.
 
I agree with willray on this one. Without some electronic-mechanical way of knowing when on the compression stroke there is no way to sync the ignition to the compression stroke other than manually. That is the reason 4 stroke engines use a cam sensor for synching the ignition. Spurious noise can be filtered out but, there is a bigger problem with when the ignition fires and that is the huge negative going (below zero volts) part of the coil firing/ringing. Most TTL stuff does not like seeing -100 volts and tend to get punch-through blowing the TTL. CMOS is better and can survive more but if not protected they too can get punch-through, either shorting them for a short time or opening them up, been there, done that.

Since JuanC has 12 volts available the easiest thing to do would be to use the LS coil ignition I presented in post #124. It (the circuit) has a very hot spark and it has some immunity to noise including from the spark. It however has fixed timing, so timing would have to be manually adjusted when running and without synching it would be wasted spark. It is a very simple circuit to solder up. Without synching and using a 'D' flip-flop along with a switching Hall-effect one would have to bring the engine up on compression stroke each time when starting before turning the ignition on.

IMHO I think this would be a good learning example of what not to do but, got to start somewhere. I just can't see why someone would want to reinvent the wheel.

Ray
 
image-1.gif
image-29.png

I am working on my electronic ignition for my twin cylinder 4 stroke. Here I am using a DC motor with a magnet mounted on a collar triggering a hall sensor--this simulates the setup on the engine. I will use a magnet mounted to the crank and fire both spark plugs at the same time, ie wasted spark. I will use a little microcontroller to adjust the timing advance from 5 to 25 degrees before top dead center depending on the RPM. The circuit board has the analog circuitry that converts the hall sensor output to a nice 1 millisecond pulse, and then another transistor stage that will drive the coil over plug (COP)s from a signal generated by the microcontroller. The pulse to the COPs will be 4 millisecond in duration. This will diminish if the RPMs get high enough to not exceed a 50% duty cycle on the COP trigger signal.


Below is a scope trace of a couple of key signals in the analog circuitry. The green is the signal generated by the RC circuit triggered by the hall sensor, and the yellow is the pulse on the output of the NPN transistor, the RC time constant is set for a 1 millisecond pulse.

image-30.png

Below is the DC motor setup to simulate the hall sensor on the engine. I can control the motor speed by adjusting the voltage is sees.

image-31.png

Next up is wiring the COPs and the sparkplugs. We will see what EMI havoc is caused by the high voltage travelling through the sparkplug wires.
 
Well for starters those are Coil Near Plug (CNR) coils, no biggy.
I've been real busy lately and have not done much but work on business stuff and working on my patent that has nothing to do with ignitions. But 3 future ones will. I'm just getting back into my ignitions so I'll be doing some updates soon.

It seems that you are doing something similar to me, except I'm going to be using a Arduino Nano for the processor and build for a 1-8 cylinder ignition. Nice part of using a micro-processor to adjust the dwell is you can find out how fast the coil circuit charges and discharges which leads you to finding out how much dwell time the coils need, get max spark without over heating them or the transistor/s.

A few of things to watch for:
- The Hall-effect board you are using should have the actual Hall-effect glued to the board otherwise the Hall-effect will eventually break off from engine vibrations. Also if the Hall-effect vibrates it will throw off the timing, jittery.
- The distance between the Hall-effect and magnet will change the timing. As will the magnet strength and the parameters of the Hall-effect.
- All coils are wired for their expected parameters. Such as CDI coils are generally high-voltage/low current input, Kettering/points are wattage ie. lower voltage but higher current, and magneto coils are high resistance to convert some of the high current into driving voltage. This is all based on the input to the primary coil side.
- The Arduino U3 and the Nano are somewhat slow by todays standards but, that does not mean they can't be used below 10,000 RPM, just don't load them up with to much work to do like serial coms.
- For the Arduino use one of the interrupts to receive the Hall-pulse, so it calculates the timing unbothered.
- For better success use something like the BU941, it is designed for driving ignition coils. There are others that will work at lower voltage, just need to Google for ignition transistors or ignition drivers.
- Most coils I have used come in @ 2.5 msec for dwell.

I have 1 more project I need to finish before getting back on the ignitions but, after that I can share with you my code that I already have and will approve upon. I have the interrupt, RPM calculations, storing and reading the lookup tables for ignition timing, dwell pulse length, and serial coms to LCD display (just RPM & Timing), and temperature done. I also have the PC side of things started, I just need to put it all together.

Good luck
Ray
 
Ray,

I will be using a UNO for my microcontroller, actually I will just be using the ATmega328P chip on my own board. It sounds like your code is more advanced than my version. I use two interrupt routines, one triggered by the hall sensor which starts a timer for the pulse width and a second interrupt from the timer to create the pulse to the COP. I use two timers, one as mentioned to control the timing of the final output pulse and its width and thus the dwell and then another used to calculate the RPM. my main loop does the RPM and advance/retard calculation/lookup and outputs to the LCD display.

I would be happy to give your code a run when it is ready, and I'd be happy to share mine. Measuring temperature is an interesting idea.
 
Sounds like you and I are doing almost the same build. I'm using the Nano right now just for development and will be doing the same as you but I will be using the ATmega32U4, basically the same but more interrupts. I wrote a program in VB6 to work with the PIC12F1840 and need to convert it to C# for loading in the the stored values and timing values. I also did some programs to time how long the EEPROM read takes and some calculations (Excel) for pulse width to RPM. But because the magnet and Hall-effect I'll/we use, will have to calibrate the ignition timing. I have all this stuff but, I have to find it again LOL. My RPM, look up values, pulse width(dwell), and timing ignition delay are all in the interrupts, the RPM and temperature/LCD are in the main loop. Temperature sensor is the DS18B20. It's small enough to glue in the fins or water jacket and has it's own testing with a report of problems. Cold engines are a PITA until warmed up.

When I do the PC program C# conversion I'll be looking forward to your feedback on the program. I'm thinking tic marks of every 250 or 500 rpm, I could do 100 even, the EEPROM has enough room. Or I was thinking of maybe doing what we did with the 1840 RC-ignition and use 2 lookup tables for timing that can be changed on the fly.

I'm also making a lot more advanced ignition for my race car that is distributorless, with MAP sensor (boost 1 to 3 bar), temperature, and sequential ignition 4-30 cylinder. But for this I'll be using a STm32. Well that's about it until I find more time.

Cheers
Ray
 
Sounds like you and I are doing almost the same build. I'm using the Nano right now just for development and will be doing the same as you but I will be using the ATmega32U4, basically the same but more interrupts. I wrote a program in VB6 to work with the PIC12F1840 and need to convert it to C# for loading in the the stored values and timing values. I also did some programs to time how long the EEPROM read takes and some calculations (Excel) for pulse width to RPM. But because the magnet and Hall-effect I'll/we use, will have to calibrate the ignition timing. I have all this stuff but, I have to find it again LOL. My RPM, look up values, pulse width(dwell), and timing ignition delay are all in the interrupts, the RPM and temperature/LCD are in the main loop. Temperature sensor is the DS18B20. It's small enough to glue in the fins or water jacket and has it's own testing with a report of problems. Cold engines are a PITA until warmed up.

When I do the PC program C# conversion I'll be looking forward to your feedback on the program. I'm thinking tic marks of every 250 or 500 rpm, I could do 100 even, the EEPROM has enough room. Or I was thinking of maybe doing what we did with the 1840 RC-ignition and use 2 lookup tables for timing that can be changed on the fly.

I'm also making a lot more advanced ignition for my race car that is distributorless, with MAP sensor (boost 1 to 3 bar), temperature, and sequential ignition 4-30 cylinder. But for this I'll be using a STm32. Well that's about it until I find more time.

Cheers
Raycustom model ignitions have always been a challenge . I’ve had at least half a dozen after market ones , some worked some did not . Some engines had magneto ignitions these were the least troublesome the key was to turn the engine fast enough to get the first spark . I flew my big Corsair in a rain squall I was worried the engine might stall from the moisture. I YHINK it ran hot enough for the water to boil off.
 
Well I finally found some time to do more work on my programmable ignition and made a little movie showing the Hall-Effect frontend. Hall-Effect Frontend Movie I still don't have my 3D printer setup so I just used some wood blocks to mount the Hall-Effect. I also placed the DC motor in the the bottom wood block and it spins a CD disc that has a 360 degree CD label on it.
TN-2022-05-02.png


As you can see I hot glued the disc to they motor drive. The drive came from an old CD drive that was B/O. The drive wheel has a machined surface already that centers the disc. I epoxied 2 magnets on the bottom to keep it in balance. I guess I could have used something else to balance it out with just 1 magnet but, this should work. I did spin this up to 413Hz. but because of the 2 magnets I have to divide that by 2 to get RPM. So 206Hz is about 12,000 RPM, 206x60 = 12,360 RPM. I lost my nerve to take it any higher with this setup. :) The magnets are placed at 60 and 240 degrees, the 60 degrees of rotation should give the Nano enough time to do the calculations for 36 degrees of timing advance. Of course all of this depends on the strength of the magnet, Hall-Effect used, and the distance between them. As I show in the movie this setup of mine shows the on/off points have a 10 degree field of sweep, 55-65 & 235-245. This can be compensated for in the firmware code. And yes I know that the magnets are on the face of the flywheel instead of on the edge but, the motor is sitting vertical so the armature movement is very stable.

If you look at the "Hall-Effect Frontend.pdf" you'll see that the circuit is quite simple. If you use the same Allegro Hall-Effect that I used (A1102) then they say that C1 & C2 are not required but, I like lots of filtering. If you run a lot of sustained high RPM then the 2N4403 may get a bit hot, so just increase the value of R1 (2.5k-10K). The way the frontend circuit is setup right now it will work with a LS1 or LS2 coil but, high RPM maybe limited because of the lack of dwell timing. The frontend circuit can operate on 12 volts, the same as the coil. When the Hall-Effect senses a South Pole it turns on and it's output goes to ground(-) so it puts out a negative pulse. The 2N4403 PNP converts this to a positive pulse. The inline LED between the Hall-Effect's output and the base of the 2N4403 supplies biasing. I should mention that transistors are current devices and FETs and MCUs are voltage devices. What I mean by this, is that transistors with proper voltage biasing have a current (amperage) gain, where as FETs and MCUs are voltage controlled or sensing. One problem with FETs is the gate voltage, to turn it off the voltage has to go to ground or negative level to turn off. This is where gate drivers come into play. Yes I know FETs are great at conducting a lot of current but, it's the gate voltage and not the current that controls it. Transistors need current flow through the base a lot more than FETs need gate current. When I get the MCU programed and hooked up I'll add a timing light (LED) on the frontend to show the firing signal and it's timing on the degree wheel. I believe that this frontend represents about 10% of the work required for my programmable ignition.

Cheers
Ray
 

Attachments

  • Hall-Effect Frontend.pdf
    80.2 KB
Looking good Ray, I will take a look at your circuit. I agree with your statement about lots of filtering on power as close to the part as you can get it. I think 12,000 RPM is plenty fast enough ;) . I have about 9 degrees of sweep given the radius of the magnet on the flywheel, close to your value.

Are you going to use a timing light? I used to have one years ago, but no longer. I really don't want to buy another one, but it sure would be handy to see what is acually going on when running at speed.

I have been working on mounting the hall sensor to the engine. In the picture below you can see the magnet embedded in the flywheel, highlighted by the red circle. I have my Arduino Uno code running to a certain extent, I have the interrupts working and I have two 2048 lookup tables in program memory, one for the time to fire the spark and the other for the RPM value. I take the number of ticks it for a full revolution shifted right by two for the index into the lookup tables.

1651593652910.png
 
Well I finally found some time to do more work on my programmable ignition and made a little movie showing the Hall-Effect frontend. Hall-Effect Frontend Movie I still don't have my 3D printer setup so I just used some wood blocks to mount the Hall-Effect. I also placed the DC motor in the the bottom wood block and it spins a CD disc that has a 360 degree CD label on it.
View attachment 136040

As you can see I hot glued the disc to they motor drive. The drive came from an old CD drive that was B/O. The drive wheel has a machined surface already that centers the disc. I epoxied 2 magnets on the bottom to keep it in balance. I guess I could have used something else to balance it out with just 1 magnet but, this should work. I did spin this up to 413Hz. but because of the 2 magnets I have to divide that by 2 to get RPM. So 206Hz is about 12,000 RPM, 206x60 = 12,360 RPM. I lost my nerve to take it any higher with this setup. :) The magnets are placed at 60 and 240 degrees, the 60 degrees of rotation should give the Nano enough time to do the calculations for 36 degrees of timing advance. Of course all of this depends on the strength of the magnet, Hall-Effect used, and the distance between them. As I show in the movie this setup of mine shows the on/off points have a 10 degree field of sweep, 55-65 & 235-245. This can be compensated for in the firmware code. And yes I know that the magnets are on the face of the flywheel instead of on the edge but, the motor is sitting vertical so the armature movement is very stable.

If you look at the "Hall-Effect Frontend.pdf" you'll see that the circuit is quite simple. If you use the same Allegro Hall-Effect that I used (A1102) then they say that C1 & C2 are not required but, I like lots of filtering. If you run a lot of sustained high RPM then the 2N4403 may get a bit hot, so just increase the value of R1 (2.5k-10K). The way the frontend circuit is setup right now it will work with a LS1 or LS2 coil but, high RPM maybe limited because of the lack of dwell timing. The frontend circuit can operate on 12 volts, the same as the coil. When the Hall-Effect senses a South Pole it turns on and it's output goes to ground(-) so it puts out a negative pulse. The 2N4403 PNP converts this to a positive pulse. The inline LED between the Hall-Effect's output and the base of the 2N4403 supplies biasing. I should mention that transistors are current devices and FETs and MCUs are voltage devices. What I mean by this, is that transistors with proper voltage biasing have a current (amperage) gain, where as FETs and MCUs are voltage controlled or sensing. One problem with FETs is the gate voltage, to turn it off the voltage has to go to ground or negative level to turn off. This is where gate drivers come into play. Yes I know FETs are great at conducting a lot of current but, it's the gate voltage and not the current that controls it. Transistors need current flow through the base a lot more than FETs need gate current. When I get the MCU programed and hooked up I'll add a timing light (LED) on the frontend to show the firing signal and it's timing on the degree wheel. I believe that this frontend represents about 10% of the work required for my programmable ignition.

Cheers
Ray or work now use your self powered timing light or use battery for batter power on and record timing go from idle to full throttle . I did a similar thing by using a plat that held he magnet. The plate was slotted so I could adjust initial timing then check to see if there was built in timing . I plotted on grah paper at first then graduated to excell graph . The electronic units I had did not change from initial setting from as low idle speed I could get to full speed so it was easy to change timing over several different engines go small boers 28 deg total seemed the best for overall performance my original mech advance on one engine fit not work very well . I replaced several magneto ignitions and just used 28 total . It made starting much easier as magneto engines needed a very sharp flip of the prop to generate enough spark . The electronics were just a quick flip as you were going . Assuming the carbs are adjusted reasonably close . Large bore automotive engine seem to like a little more or less dvance depending on load and speed . It also has to do with compression ratio super charging affects it too .
Byron
 
Looking good Ray, I will take a look at your circuit. I agree with your statement about lots of filtering on power as close to the part as you can get it. I think 12,000 RPM is plenty fast enough ;) . I have about 9 degrees of sweep given the radius of the magnet on the flywheel, close to your value.

Are you going to use a timing light? I used to have one years ago, but no longer. I really don't want to buy another one, but it sure would be handy to see what is acually going on when running at speed.

I have been working on mounting the hall sensor to the engine. In the picture below you can see the magnet embedded in the flywheel, highlighted by the red circle. I have my Arduino Uno code running to a certain extent, I have the interrupts working and I have two 2048 lookup tables in program memory, one for the time to fire the spark and the other for the RPM value. I take the number of ticks it for a full revolution shifted right by two for the index into the lookup tables.
We must be using a similar magnet & Hall that have similar specs, the magnet looks about the same size as mine. I have my Hall mounted 3.5mm/0.138" away from the disc and the disc is 1.2mm thick. I have a person that wants one of these ignitions for his racing motorcycle a 2 stroke but, he needs 14,000 RPM. Which means the magnet I'm using now is to wide, so I have to buy some small diameter cylindrical magnets for testing later. I think a 5 degree sweep would be ok.

As for the timing light I'm just going to use 1 of the LEDs that I have. They are the same as what Cadillac uses for brake lights, these suckers are very bright but, red. I'll just mount it above the pointer and go off the shadow it casts. I have 2 schematics of the circuits if your interested, it uses a 9 volt battery but, they are in German and some English.

I also have to admit that going your way of measuring the time between pulses is a lot easier than using the pulse width to do the timing. All the other engine ignitions and with everyone else I worked with used the time between pulses. One thing I haven't done yet is find my old code or order bearings for my engine. And now I have 2 computers to do before next Thursday, having some surgery done. So I'm not going to get much done on this project for awhile. I plan on porting my old MicroChip code to Arduino code and get that working. I also just started getting the C# program going to program the Nano through the USB port for the EEPROM timing tables. No doubt you'll most likely be done for me.

I did measure my pulse widths this morning but that cheap motor controller isn't steady at all below 600 RPM, it sucks. The pulses decrease by half when the RPM doubles, so it is nice and linear, math equation should not be too complicated. LOL. The way you are going with the code seems correct, shifting and all.

Cheers
Ray
 
but, he needs 14,000 RPM

Seem to remember this type of thing with the 508 ic way back when.
Someone Always wants it higher revs.
One option that you might be able to apply is mount the magnet on the back of the hall effect and use a slotted metal disc or similar.
 
Instead of thinking in terms of RPM, think in sparks per minute. For guys like myself who build multi cylinder engines sparks per minute is easy to deal with. For a v8 or a 9 cylinder radial to run at a decent Rpm the sparks per minute may need to be in the 20 to 30 thousand range.
 
Slightly off topic. But can an ignition circuit be judged by the ability of a spark to jump a certain gap in air. So for example if a spark jumps 10mm in air is it likely to be OK under compression say 6 or 7 to 1
 
Back
Top