dual Magnetic sensors for RPM


I have a platform consisting of 2 wheels that are being driven by these real large motors which are controlled by the Sabertooth motor driver, 25 Amps.

A line like "ST.motor(1, power);" controls the power to motor 1 and "ST.motor(2, power);" controls motor 2 for the Sabertooth motor driver

My values of power can run from 0 for stop to 30 for maximum speed (technically that speed number can go upto 128).

The Problem:

The platform veers off to the left or right cause the motor speeds and other hardware like ball bearings etc are not perfectly matched.

My solution: I slapped on 2 hall effect sensors one for each wheel hoping that if i could read the rpm of each wheel and found that they dont match i could control the power of the motor driving the faster/slower wheel, effectly making my platform go straight.

These sensors give me a logic 1 when a magnet attached to the wheel passes by it.

Also I need to have the motors go in one direction only.

Can anyone direct me how can i use the 2 interrupts of arduino to help me compute the speed of each wheel?



Check in the playground http://playground.arduino.cc/Main/ReadingRPM

A more usual way of computing rpm is to use the ISR to generate an interrupt once per pulse only and to measure the interval between pulses in the ISR. This provides a more accurate, near-instantaneous rpm value (well, averaged over one wheel rotation anyway).

Ether way, you need to detect when rotation has stopped or nearly stopped.


I want to measure the RPM for multiple wheels of RC car for traction control project, I’m using hall effect sensor with just 8 magnet rings, the problem is the readings of the two wheels differ occasionally though no slip has occurred , this happens even when rc car is driven with very slow speed ! . Anyone knows how to make the two readings match??


Don't crosspost and don't don't use old dead threads to do it!