Hi there!
I've got a question that has been puzzling me for a few weeks now...
What I want:
I have created a project that uses a 25cc 2 stroke engine (like those on a weedeater) and want to kill the engine using an Arduino, or to be more precise, I want the engine to start ONLY if it receives an ok signal from the Arduino.
What I want to avoid:
Now, you might just recommend me to use a relay, but since a relay usually draws around 50mA which is quite a lot of power if you're running from a battery, I would like to see if it's feasible using a MOSFET, optocoupler or a combination of both.
Note that the engine is used to slightly charge the battery that the Arduino is running on. The engine outputs an AC sine wave. The 1st half of the wave, if shorted, kills the engine. The 2nd is able to charge the battery and if shorted does not matter, the engine still runs.
What I've tried:
I tried the circuit shown in the attached schematic but the engine won't start. Let's just say the IC1_PA7 is an Arduino digital pin. Tried with / without capacitors multiple MOSFETs, optocoupler or not... Nothing works unfortunately...
Hope I didn't forget to mention anything and just waiting for your suggestions!
Thanks!
Now, you might just recommend me to use a relay, but since a relay usually draws around 50mA which is quite a lot of power if you're running from a battery, I would like to see if it's feasible using a MOSFET, optocoupler or a combination of both.
A latching relay will only draw power when switching positions.
cattledog:
A latching relay will only draw power when switching positions.
Yeah you are correct and it seems like the ideal solution. Only problem: in my country the cheapest one I can find costs around 7 euros. I mean can't it be done with any other component? If not then I guess I'm gonna go down that path...
Once you kill the engine, won't it stay killed? I assume you need to crank it over to start it again. Once you use a relay to kill the engine you don't need to keep the relay closed so you don't have to continue burning 50 mA.
johnwasser:
Once you kill the engine, won't it stay killed? I assume you need to crank it over to start it again. Once you use a relay to kill the engine you don't need to keep the relay closed so you don't have to continue burning 50 mA.
Yeah you are correct, that's how it works. But in order for the engine to be able to start I first want the Arduino to "allow" it. If the Arduino is off or doesn't "want" the engine to start then the engine shouldn't be able to be started.
And that's because the Arduino should first do a series of checks.
Remove the manual pull-start and give the Arduino control of the electric start. With no way to turn the engine over, the engine can't be started without the Arduino running the electric start.
johnwasser:
Remove the manual pull-start and give the Arduino control of the electric start. With no way to turn the engine over, the engine can't be started without the Arduino running the electric start.
JCA34F:
How is the engine stopped normally? Kill button? If so, how is that wired?
Yeah the engine has 2 terminals that are normally connected to a button that shorts them in order to stop the engine.
What I've done here is to put 2 diodes facing in opposite directions so when the first diode conducts I get power and when the second conducts I can short that to kill the engine. Why did I do it like this? Because the 1st diode (since we are talking about AC here) doesn't mess with the ignition no matter the load (e.g. battery). The second is the one that messes so I used that as a drain for my MOSFET and I used a diode even though I'm already using a MOSFET so I can add a smoothing capacitor here.
Model R/c aircraft using spark ignition use an ignition kill as mandatory gear.
Cost around AUD$20.00.
You might want to look how they operate but as most kill switches operate in the low tension coil tapping, I feel confident these operate the same way.
Hi, If the first half of the sinewave is positive, with respect to gnd, then your opto-coupled circuit will only do it when D2 is the correct way and the MOSFET is likewise the correct way around, from what I can see. (Please correct me if I'm wrong!)
What is the MOSFET part number?
Edit, My wrong, you will be shorting out the supply that will bias the MOSFET on.
(To much blood in the caffeine stream!!)
jimLee:
Hook an RC servo to a lever that shorts the spark-plug lead to the cylinder head. Then it stays grounded 'till the Arduino moves the lever back.
Easy Peasy!
-jim lee
Might be ok in the Op application but with reference to the RC gear it must be fail safe.
i.e. switch off, relay off, ignition off and coil tap shorted to ground.
jimLee:
Hook an RC servo to a lever that shorts the spark-plug lead to the cylinder head. Then it stays grounded 'till the Arduino moves the lever back.
Easy Peasy!
-jim lee
Yeah in my opinion using a servo seems to be the most foolproof solution.
However, it relies on something purely mechanical (which is something I'm not great at) and dealing with all of the vibrations that come from the engine it is probably more trouble than it's worth.
Since I posted there, I've received a number of solutions, including something called Opto-SSR (IIRC) which sadly is not available in my country and latching relays are also (as stated above) very expensive.
Another possible solution that popped on my head today is to use an SSR (which probably is not gonna work or be too complicated).
Another potential candidate would be a reed relay (since it requires a low activation current) and is suitable but I can't find any that is normally closed to prevent the engine from starting (remember that we need to first receive an okay signal) and the ones I could find on ebay would cost me around 15 euros!
TomGeorge:
Hi, If the first half of the sinewave is positive, with respect to gnd, then your opto-coupled circuit will only do it when D2 is the correct way and the MOSFET is likewise the correct way around, from what I can see. (Please correct me if I'm wrong!)
No, no, you aren't wrong at all!!!
The MOSFET I was planning to use was an IRF510PBF just because I have it handy and it is N-Channel. Nothing so special about it. However, the circuit didn't work (the MOSFET is still working).
It seems like the MOSFET's gate never goes low or whatever. The result is the same: no matter my intention, or more specifically the optocoupler's signal, the MOSFET always shorts the magneto's output.
Edit, My wrong, you will be shorting out the supply that will bias the MOSFET on.
(To much blood in the caffeine stream!!)
Tom....
No you probably aren't wrong, but I don't seem to know exactly what I'm doing... My aim is to find a way to have the engine's magneto "normally shorted" (if that is even a term ) and then have an Arduino-ish board to send an okay signal to "un-short" it.
Even though I'm too young to drink coffee I kinda understand you!
lefterisgaryfalakis: What I want to avoid:
Now, you might just recommend me to use a relay, but since a relay usually draws around 50mA which is quite a lot of power if you're running from a battery, I would like to see if it's feasible using a MOSFET, optocoupler or a combination of both.
Note that the engine is used to slightly charge the battery that the Arduino is running on.
Does the engine produce more than 50 mA? If so, have the relay coil only activate when the engine is starting or running. That way the relay current won't drain the battery.
johnwasser:
Does the engine produce more than 50 mA? If so, have the relay coil only activate when the engine is starting or running. That way the relay current won't drain the battery.
But it won't charge it either. Is there any more low power alternative? Something that draws for example 10 mA at max? I mean the engine can supply around 250 - 300 when warm but in such a situation I think every mA matters. ;D
Wait... Can I play this trick using this reed relay instead? Keep in mind that it is NO and I don't want to buy a NC since that will cost me 15 EUR...