Optical encoders are nothing new; they can be found in everything from mice to printers. They’re great for allowing DC motors to know their exact position and even current direction. If this is sounding like old hat, it’s because we’ve shown you rotational versions before.
[Chris] uses the same concept, but produced a linear optical encoder instead of rotational. His setup is much like whats used in non stepper-motor CNC and RepRap mills, allowing ordinary DC motors to know their position within a plane. It’s a quick tutorial, but we liked the detail and it reminded us we need to finish that DC motor based mill thats still a pile of parts in the closet. Check out a video of [Chris'] in action after the break. Continue reading “Linear optical encoder”
[hw640] has put together a well written and detail packed explanation of how to interface with a digital rotary switch. These digital opto encoders have just two outputs with four possible logic levels (00, 10, 11, 01). The relative position of the switch is insignificant but the direction of rotation is what matters.
The short and dirty: Each of the switch’s 2 output pins is attached to a pin change interrupt on the microcontroller. Every time the switch moves it generates either a rising edge or a falling edge on one of the two pins; both edges cause an interrupt. By checking which pin caused the interrupt, then comparing the logic levels of the two pins after that interrupt, we can determine the direction the switch was rotated.
Although this explanation uses a PIC and code written in PicBasic Pro the concepts are discussed in the abstract and would easily be adapted to an AVR or another microcontroller of your choice.