Main Site Documentation

New and looking to hire help for a project


Hi I am new to this type of programable controls.
I have a couple projects I am interested in building, and was originally thinking an Arduino would be the way to go until a friend told me about GHI Electronics.

So here I am.

The first project I would like to tackle is building a system that will monitor wheel speed on both the front and back wheels of a motorcycle. The goal is to look for slip in the rear wheel (i.e. a sudden increase in the rear wheel speed compared to the front) and from this create a 0 to 5 volt output proportional to the level of wheel slip with a few variables to control the level of output.

If you haven’t already guessed this would be the beginings of a traction control type system.

I have on the motorcycle an electronics unit that will accept a 0 to 5 volt signal and will automatically reduce engine power based on the level of the input.

A second method of monitoring for rear wheel slip is to monitor the output crank shaft of the motor (i.e. monitor it’s speed) any sudden acceleration of this crank speed can easily be interpreted as wheel slip and thus could be used to again control a 0 to 5 volt output.

I would like to eventually add the option to “control wheelies” with this same system at some point in the future, or right away if it is easy enough to do in a short time frame.

I hope I am in the right place to get something like this done.
This is a personal project for my own personal motorcycle that I will taking to the drag strip.
I have it working with a large increase over stock power so traction is a touchy issue to say the least!

I am located in Romeo Michigan, so I am hoping to find someone local that can come to my shop if needed to work on this as may be necessary.

I am of course hoping to learn how these things work as I am a bit of an inventor myself :slight_smile:

If there is anyone here willing to take on this project in a short time frame (and get paid for it) please contact me as soon as possible.


Sounds like a really cool project. I can’t help myself, but hopefully someone will.

Not sure how your planning on measuring the wheel speed, but you could measure acceleration and lifting of the front wheel with accelorometers. A gyro might be the best option to control a wheelie. The crank shaft option sounds good. If the speed of this suddenly increases without an equivilent measure of acceleration then you have probably lost traction.

I look forward to hearing more. Best of luck.


How fast are the pulses coming from the wheel sensor? Or it is an analog output?

This project sounds very interesting. We would love to see some blog or pictures.

Welcome to the community.


Thanks for the response guys!

There are a couple options for pulling pulses off the wheels themselves.
Some of these models have ABS, I happen to have two identical bikes the drag bike does not have ABS but my stock bike does.

For the ABS system there is a disk on the front and back wheel. my “understanding” is that it uses hall effect sensors to pick up the slots in the disk. I would guess the number of slots to be around 30 to 50 on each disk, I don’t have the bike in front of me to be able to count them right now.

The crank rotation sensor ( I don’t know what kind of sensor it is yet) that is built into all the bikes, I am told is typically 4 pulses per revolution.
I know of traction control systems that are very effective using just the crank sensor (thus looking for spikes in acceleration) and then also some compare front wheel to rear wheel speed. The disadvantage of comparing front to rear is when (if) a wheelie occurs you can no longer count on the front wheel speed being correct (as it WILL slow down). So for ease and simplicity it is probably best to tap into the crank sensor. The best anti traction drag control system on the market uses 8 pulses per revolution of a (car) drive shaft, and that guy says it can be done based on any of the above mentioned methods - for what that is worth.

I attached a picture of the bike. You can’t see the mods I have done as they are hidden (intentionally!) under the fairings to keep a “sleeper” look to it. Ha Ha this is goona be fun!

So anyways to answer your question if we were reading the crank it would be max about 14,000 rpm. x 4 = 56,000 pulsed per minute
I’m not sure at this point if the mentioned “crank” sensor is really on the crank or on the output shaft of the transmission. I have to dig into that.


With regards to the front wheel lifting I have seen systems that use some type of distance measuring sensor that is mounted to the underside of a vehicle, I know they also sell linear potentiometers that are made to monitor the length of the extension of the front shock as well (of course once its all the way out you loose the ability to measure how far up in the air the front wheel would be).
I was kind of thinking of some kind of laser distance meter if something like that could work with the ground moving underneath it… don’t know.

Acclerometers sound like a pretty good idea too!

Attached below is a screen shot of what one wheelie control unit uses for a sensor, it is apparently some sort of optical sensor but they of course are not advertising exactly what it is.


Welcome to the forum!

Looks like an IR distance sensor, similar to a SharpIR.

edit: Something like this one:


Wow that was a fast find! thats got to be it!
I will order one immediately!



The above is a video showing a very effective and well know unit and how it works.
This unit connects to a sensor on the drive shaft of a car, and picks up 8 pulses per revolution of the drive shaft.
In the video it shows the spikes in driveshaft rpm when the wheels spin!


Looks like I might have to try this on my own! :think:

Being a complete Newbie, could anyone point me in the right direction as to what might be the best controller to use, and maybe where to find tutorials, or kits to get started with?

Thanks a ton, I think this is going to be a cool project and a fun group to be part of!
I am especially glad to hear that GHI is local and Made in USA!


p.s. still TOTALLY open to hiring some help on this, I am in Romeo, but much could possibly be done over the internet…


If the torque controller takes an analogue voltage between 0 and 5 and the shaft encoder produces four (4) pulses per rotation then what you need the uC to do is count the number of pulses per second and change the analogue output to match accordingly.

How do we do that RLP pulse counter again?


I’d be tempted to go straight for the Raptor. It’s the most expensive, but also the fastest.

First thing would be to code something to measure the pulse frequency.


@ Mr. John Smith - your better measuring the time between pulses as you need a really quick result. 1/t = frequency.


@ hagster, Actually I was thinking about using a monostable and then smoothing the output with a capacitor. That would create an analogue voltage that increased with pulse count.


MPU6000 / MPU9150


Pulse count
IMU module

Glue…lots of glue ::slight_smile:


@ Bill, Or Counter + Digital to Analogue Convertor with a LM555 timer to reset the clock and latch the voltage.

So many ways of doing the same thing.


Lol, you could also put a magnet with a coil on the output shaft as a generator. The voltage will be proportional to the rpm.


The trouble with the Analogue route is the responsiveness. You probably need to detect that the rotational rate has changed within a single turn of the wheel. You don’t want to be waiting for lots of tire smoke before turning down the power(which might have some lag also. Converting pulses via a smoothing circuit will require a lot of pulses before the value settles sufficiently.

The GHI PinCapture method might be ideal for this.

So the code could go something like …

uint[] signalRear = new uint[2];
SignalCapture pinFront = new SignalCapture(Cpu.Pin.GPIO_Pin1, Port.ResistorMode.Disabled);
SignalCapture pinRear = new SignalCapture(Cpu.Pin.GPIO_Pin1, Port.ResistorMode.Disabled)

double speedFront,speedRear, speedDiff;

  pinFront.Read(true, signalFront );  // capture high - low - high .
  pinRear.Read(true, signalRear );   // capture high - low - high .
  speedFront = 1/ (signalFront[1] - signalFront[0]);
  speedRear = 1/ (signalRear[1] - signalRear[0]);
  speedDiff = speedFront - speedRear;
  if (speedDiff < bla) {cutpower();)


It might also be a good idea to create a data logger at first.
By this you get a Feeling of the actual values before you actively control your engine.


Ok, so newbie needs help. Which board should he get; cerb on a stick?


I’d say a galileo running Windows, so he could warm up his tires during boot time :whistle:

Fun aside:
So far I used a G120 for everything.
The G120HDR makes it easy to use, the Cobra can be used for prtotyping with gadgeteer modules.
And I think for a single unit the Price difference between a Cerb and a G120HDR is not that important. Also some more or less milli Amps does not Count on a Motor cycle.
The only Advantage of the Cerb is RAM Access Speed I guess.