I am on a team and we're working on a car. Our car has a motorcycle engine and its gear-shift mechanism is electronic, controlled by a microcontroller. Now, we are figuring how can we make the microcontroller know which gear the engine is on. We thought about calculating the ratio between engine's rpm and wheel speed, but this method can be imprecise in some situations. Is there any more accurate method?

  • What kind of motorcycle engine engine is it? Make/model/year. Mar 13, 2016 at 22:07
  • FSAE team , i presume?
    – chilljeet
    Mar 13, 2016 at 22:54
  • Engine manufacturer and year? Mar 14, 2016 at 2:21
  • Is this an automatic transmission?
    – Zaid
    Mar 14, 2016 at 4:55
  • Please provide further details. Why do you need the microprocessor to know which gear the vehicle is on? Is it for data logging, or some other non time critical functions? Is it for time critical operations- (ignition kill, engine map etc)? Is it just to prevent the ecu from trying to shift after it has reached the boundary gears? Is it for neutral detection?
    – chilljeet
    Mar 15, 2016 at 18:41

3 Answers 3


If the engine had a gear position sensor or you were considering installing one, i'd assume you wouldn't be asking this question. Anyhow, still , if you can install one, that'd be your easiest option, - the sensor is a rotary potentiometer. Or you can use any other rotary encoders you please.
The method you mention can be made pretty accurate, though, i'd still like to know your worries. Compare the Engine RPM with your front or rear sprocket rotation to estimate the gear. Doing this before the differential removes any iffy conditions. You can use VR sensors or hall effect sensors for the same.
You need to account for clutching transitions in your code. Since it's an electronic system that's changing the gears, you already know when to check (when the ecu initiates a gear change) and which gear to expect. You should be able to get all this to work with rudimentary logic. I'l expand on this answer if needed. Please comment

  • You really guessed it right. We don't have a potentiometer in our engine, but we also can't open the engine to install one. So we are going with your solution, comparing engine RPM and wheel rotations and accounting for clutching transitions in our code. Thanks for the help. Mar 29, 2016 at 16:53
  • Motorcycle chat room :-) chat.stackexchange.com/rooms/46288/motorcycle-diaries Oct 6, 2016 at 0:46
  • Hope your well. Come to chat! Oct 11, 2016 at 4:27

I am not sure how you will make this work but you could keep track of the shift fork position or you could measure the angle of the shift drum.


Maybe you could install proximity sensors?


Modern vehicles use the gear ratio as an indication of gearshift position. The actual calculation is accomplished by comparing crankshaft speed and vehicle's speed (informed by the ABS control unit). So, for usual purposes this is a valid method and deviations are negligible.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .