Motorcycle Traction Control

Hi All,

I am very new to this world but lately I've been interested in the feasibility of creating my own traction control system for motorcycles.

It is possible to buy aftermarket traction control systems for motorcycles but they are often expensive and I was wondering if it would be at all possible to make a system using an Arduino.

I have never even touch one or done any sort of programming (other than Logo!) so I am not saying I would like to undertake it myself immediately, but I am keen to learn and maybe consider exploring it.

Basics of a traction control system:
To control the power delivery from an engine my measuring the speed differential of the front and rear wheels.

Modern systems take a lot more into account like acceleration and orientation to calculate exact bike attitude and coefficient of friction, but I would like to keep it as simple as possible.

Basically the system should do the following:

Control -> Signal to Spark Plug

  • Basically a method of controlling and interrupting the signal to a spark plug.
    This will be utilized to cut power from the engine.

Parameters -> Front Wheel Speed Sensor & Rear Wheel Speed Sensor (WSS)

  • Using the data from a WSS to then calculate the RPM of each wheel and therefore the velocity of tire contacting the ground.

The system would make this calculation at a determined rate and calculate the percentage difference in velocity.
If the percentage difference is higher than a certain value then it would interrupt the signal to a spark plug.
It would perform this loop continuously at a determined rate.

This would allow the system to determine if the rear wheel is sliding and then cut power to reduce rear wheel speed until it is inline with the front.

The sample rate would need to be in the order of maybe 20Hz, but I would need to look into this.

The signal from a WSS is an analogue wave as a piezo element runs past a slotted rotor. Essentially a square wave.

Thoughts?

Would this at all be possible with an Arduino or does it require a lot more computing power and a hell of a lot of programming?

Thanks!
Ben

grip-wolrd:
Thoughts?

Would this at all be possible with an Arduino or does it require a lot more computing power and a hell of a lot of programming?

I can't speak to that but there is this in the Atmel data sheet for the 328 microcontroller:

Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.

As always, YMMV

Control -> Signal to Spark Plug

NO! The signal to a spark plug is thousands of volts. That is NOT what you want going to your Arduino. Unless you like the smell of smoke.

There are other ways to pick up the crank position or engine speed.

You would need to somehow interfere with the ECM's signal to the spark plug, but that is not how most traction controls work. They work with the ECM to cause it to ignore the throttle position sensor, effectively dialing back the throttle in spite of the rider's best intentions to do something stupid.

The sample rate would need to be in the order of maybe 20Hz, but I would need to look into this.

You are missing some zeros in the sample rate.

The signal from a WSS is an analogue wave

It is a square wave. If using a hall effect sensor, there is either a magnet nearby, or there isn't. If using a slotted encoder, there is either a laser beam hitting it (passing through a slot) or there isn't.

Would this at all be possible with an Arduino

Determining the wheel speeds is possible. Determining the ratio between the front wheel speed and the rear wheel speed is possible. Taking into consideration the diameters of the front and rear tires is possible. Actually f**king with the spark signal may, or may not. Doing so may, or may not, void your warranty.

I certainly would not be trying to do this with an Arduino on my motorcycle. I just paid $45000 for it, and would not be trying to build a system that others are charging $1000 for using a $20 Arduino and hope.

In any case, the dynamics of a trike, which is what I ride, are quite a bit different, so traction control on a trike is a completely different game.

PaulS:
NO! The signal to a spark plug is thousands of volts. That is NOT what you want going to your Arduino. Unless you like the smell of smoke.

I would not want to interfere with actual voltage to the spark plug, but the signal to fire the coil.

PaulS:
There are other ways to pick up the crank position or engine speed.

You would need to somehow interfere with the ECM's signal to the spark plug, but that is not how most traction controls work. They work with the ECM to cause it to ignore the throttle position sensor, effectively dialing back the throttle in spite of the rider's best intentions to do something stupid.

Exactly, disrupt the signal to fire the coil from the ECU.

Many work in different ways. With drive-by-wire it is obviously much simpler on modern bikes, but a lot are using an ignition cut, especially for aftermarket kits, even on the latest BMW HP4 from the factory.

PaulS:
You are missing some zeros in the sample rate.

I'm not sure how fast an Arduino can run, depending on the complexity of the task. I think 20-30Hz could be the minimum, but sure needs more thought.

PaulS:
It is a square wave. If using a hall effect sensor, there is either a magnet nearby, or there isn't. If using a slotted encoder, there is either a laser beam hitting it (passing through a slot) or there isn't.

It could be a hall effect sensor, this would be simplest.

PaulS:
I certainly would not be trying to do this with an Arduino on my motorcycle. I just paid $45000 for it, and would not be trying to build a system that others are charging $1000 for using a $20 Arduino and hope.

In any case, the dynamics of a trike, which is what I ride, are quite a bit different, so traction control on a trike is a completely different game.

The cost of the bike is not an issue as its a cheap track bike I use. This is not for road use.

PaulS:
Determining the wheel speeds is possible. Determining the ratio between the front wheel speed and the rear wheel speed is possible. Taking into consideration the diameters of the front and rear tires is possible. Actually f**king with the spark signal may, or may not. Doing so may, or may not, void your warranty.

Well its good to hear that maybe its possible.

So the Arduino can take this square wave and calculate a frequency?

So the Arduino can take this square wave and calculate a frequency?

Sure. The time between one rising edge and the next defines the period. Frequency is the inverse of the period.

In my experience, track bikes live on wheel spin.

grip-wolrd:
Control -> Signal to Spark Plug

  • Basically a method of controlling and interrupting the signal to a spark plug.
    This will be utilized to cut power from the engine.

You sure about this part?
I thought traction control limits the amount of fuel going to the engine.
Stopping the spark plug (I had this in my car, decades ago: one of the four cylinders wasn't firing) means you're getting fuel in your cylinder(s) and it's not burnt. In my case it ended up in the oil. Not enough to require an oil change or so but my oil level rose quite a bit.
It's also a very crude way of control, plain on/off.