My omnibot robot has been getting stuck the odd time. I had a conversation with the guys at Solarbotics and they suggested I through in a current sensing circuit. Wicked idea!
Current sensing is a method of monitoring the voltage through the DC motor. There are a few other methods of sensing a forced stall on a motor, including rotorary encoding with optical sensors. I am going to go with current sensing method.
I found this document that was written by Microchip PIC. It is a good PDF file to read on the different methods. They even have diagrams explaining the circuit: PICMicro DC Motor Tips'n Tricks
So the theory behind current sensing in the above diagram is quite simple. Now, technically with an ADC you should not need an OP AMP. If you don't know what an OP AMP is, it is a IC that compares two inputs (AND GATE). So 1 & 0 = 0, 0 & 1 = 0, 1 & 1 = 1, etc
So back to Current Sensing. Let's visualize the robot driving across your floor. You have magical distance sensors scanning back and forth returning distances... But we know that the robot can't see up or down, so you end up getting stuck on a coffee table or the leg of an office chair (my two big pet peeves). The robot stopping will put high load on the wheels, and DC Motor respectively.
The load can be detected by a change in voltage on the GND side of the motor.
What about an HBridge configuration? Glad you asked! Since the HBridge will change the polarity of the motor, you never know what side is GND. The solution? Add the current sensing to the Motor VSupply GND of the HBridge circuit.