- Thu Aug 29, 2024 4:52 pm
#69330
To make a long story short, I'm looking for a easy to implement and reliable way to limit my moped's top speed. I know a thing or two about software development. But I struggle with the engine/ignition part. Hopefully you can help me out.
This post will be a bit of an info dump to get things started. Lets throw some stuff at the wall and see what sticks.
Motivation
The law is very strict about mopeds where I'm from. Mopeds are not allowed to go faster that 55 km/h. If they do they will be banned from public roads.
Project Goal
I would like to limit the moped's speed regardless of the engine's rpm. My moped has 4 gears, a fixed rpm limit doesn't work too well. (I currently have a CDI with an rpm limiter, I run into the limit in the lower gears.)
What I have so far
I have a basic c++ script running on an STM32. It can measure the mopeds speed using a Hall Effect sensor on the rear wheel. I could use it to disable the ignition at a certain speed. But a sudden loss of power seems dangerous while on the road.
I'll be more than happy to publish the project as open source if it ever gets there.
Engine
The moped has 4 stroke 50 cc engine and a CDI. The ignition is triggered by a nob on the flywheel, it fires each time the piston is going towards the top.
The engine is based on a Honda design from a long time ago. It basically is a Chinese clone made by Skyteam, Lifan, and many other brands.
Delay ignition
This seems like the most reasonable way to limit the moped's speed without losing power suddenly. Unfortunately I do not know enough about engines/ignitions to figure out how to do this safely. Hopefully you can help me out with this.
I can get a rough idea of how fast the flywheel is spinning based on the engine's rpm. So I could delay the ignition by a not so certain amount of degrees. Everything is a guess because the flywheel reports its position only once per turn. If roughly is good enough than I'll continue with this ideas as the software part isn't that difficult.
If roughly isn't good enough I'm thinking about adding an optical sensor to the flywheel. This way I could mark a safe zone in which the ignition is allowed to be delayed.
Other ideas?
They are more than welcome.
This post will be a bit of an info dump to get things started. Lets throw some stuff at the wall and see what sticks.
Motivation
The law is very strict about mopeds where I'm from. Mopeds are not allowed to go faster that 55 km/h. If they do they will be banned from public roads.
Project Goal
I would like to limit the moped's speed regardless of the engine's rpm. My moped has 4 gears, a fixed rpm limit doesn't work too well. (I currently have a CDI with an rpm limiter, I run into the limit in the lower gears.)
What I have so far
I have a basic c++ script running on an STM32. It can measure the mopeds speed using a Hall Effect sensor on the rear wheel. I could use it to disable the ignition at a certain speed. But a sudden loss of power seems dangerous while on the road.
I'll be more than happy to publish the project as open source if it ever gets there.
Engine
The moped has 4 stroke 50 cc engine and a CDI. The ignition is triggered by a nob on the flywheel, it fires each time the piston is going towards the top.
The engine is based on a Honda design from a long time ago. It basically is a Chinese clone made by Skyteam, Lifan, and many other brands.
Delay ignition
This seems like the most reasonable way to limit the moped's speed without losing power suddenly. Unfortunately I do not know enough about engines/ignitions to figure out how to do this safely. Hopefully you can help me out with this.
I can get a rough idea of how fast the flywheel is spinning based on the engine's rpm. So I could delay the ignition by a not so certain amount of degrees. Everything is a guess because the flywheel reports its position only once per turn. If roughly is good enough than I'll continue with this ideas as the software part isn't that difficult.
If roughly isn't good enough I'm thinking about adding an optical sensor to the flywheel. This way I could mark a safe zone in which the ignition is allowed to be delayed.
Other ideas?
They are more than welcome.