The electric motor is the fundamental building block of almost all robotic projects but, without some form of feedback, it lacks the precise positional control required for the task. Small servos from the modelling world will often use a potentiometer to sense where they are on their travel, while more accomplished motors will employ some form of shaft encoder.
Commercial shaft encoders use magnets and Hall-effect sensors, or optical sensors and encoder discs. But these can be quite expensive, so [Hello1024] hacked together an alternative in an afternoon. It uses another motor as the encoder, taking advantage of the minute changes in inductance as the magnet passes each of its coils. It’s a technique that works better with cheaper motors, as their magnets are more imperfect than those on their expensive cousins.
The sensing is rather clever in its economy, sending a pulse to the motor through an off the shelf motor controller and measuring the time it takes to decay through the body diode of the driving MOSFET. It requires a calibration procedure before first use, and it is stressed that the whole thing is very much still in beta, but it’s a very impressive hack nevertheless. He’s posted a video demonstration which you can see below the break.
Continue reading “Use A Brushless Motor As A Rotary Encoder”


His victim TV didn’t have the ability to be switched on and off by the Raspberry Pi using HDMI/CEC, so he came up with an alternative. He got a couple of opto-isolators and soldered one to the on/off button on the TV’s control board. The Pi didn’t know whether it was switching the TV on or off, it just knew it was switching it. To solve this, [Troy Denton] connected another opto-isolator to the TV’s LED, this one the other way around. When the TV is turned on, the Pi now detects it.




