Pololu Robotics & Electronics
My account Comments or questions? About Pololu Contact Ordering information Distributors

Magnetic quadrature encoders – CPR 12?


I have bought this magnetic encoder:

Sensors » Encoders » Encoders for Micro Metal Gearmotors »
Magnetic Encoder Pair Kit for Micro Metal Gearmotors, 12 CPR, 2.7-18V (old version)
I do not get the 12 counts per revolution.
I do not use Arduino to say is a library problem. I have measured it with the oscilloscope.
On the same shaft I use 2nd photo electric sensor as index to show 1 pulse per 1 turn (=1 revolution)
I used low speed as 4.58Hz, meaning 1 turn each 218ms, which give around 275RPM.
How do you count those specified 12CPR?
What I measure is only 3 periods of signal for each output (A or B) of the encoder.
Do you count the rising and the falling edge of each channel and add them together to give you 12?
Or how do you get 12? What is 12?
I expected to see 12 pulses at 1 revolution for each output (A or B) and I see only 3.
Looking on the forums and website I see only one oscillsope screenshot, next one:

but that shows only frequency and voltage, phase and not the counts per revolution.
So, what is it wrong with 12CPR?
Do you have any other oscilloscope measurements to show what 12CPR in terms of waveform is?


As with any quadrature encoder, each rising and falling edge can be counted, and the count transition state (increment or decrement) is then determined by the current and previous HIGH/LOW states of the two input lines.

Thus, there are 12 transitions per revolution. Use the proper software and you will enjoy 12 CPR.


Then maybe is good to let everyone know in a visual way:



Jim is right, that is how to achieve 12 counts per revolution. I am glad you understand now; thank you for sharing an image that helped you understand.