Rotary Encoder - 1024 P/R (Quadrature)

This 1024 pulse per rotation rotary encoder outputs gray code which you can interpret using a microcontroller and find out which direction the shaft is turning and by how much. This allows you to add feedback to motor control systems. Encoders of this kind are often used in balancing robots and dead reckoning navigation but it could also be used as a very precise input knob.

  • Resolution: 1024 Pulse/Rotation
  • Input Voltage: 5 - 12VDC
  • Maximum Rotating Speed: 6000rpm
  • Allowable Radial Load: 5N
  • Allowable Axial Load: 3N
  • Cable Length: 50cm
  • Shaft Diameter: 6mm

Comments

Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Roach / about 5 years ago / 1

    All the Arduino code I see for Quad Encoders only use two pins, but this encoder has three. How do I use it?

  • bdwyer / about 12 years ago / 7

    What color is "Smeld"

    • mattproc / about 12 years ago / 5

      It is a perfectly normal color for a ROTAR

    • buffington / about 12 years ago / 2

      I puzzled over this for a bit, but it's clear that "Smeld" should read "Shield".

      My guess is that to someone unfamiliar with alphanumeric characters could have easily mistaken the "hi" in Shield with an "m".

    • Dewy / about 12 years ago / 1

      I think it refers to the braided shielding. (For noise isolation.)

  • EDGAR_ALLAN_PWN / about 11 years ago / 3

    Here's an arduino library for reading encoders that I found works well with this encoder.(although I'm not using it for high speed applications). http://www.pjrc.com/teensy/td_libs_Encoder.html Just hook up the black and white wires to your interrupt pins and run the basic example. Boom, you're reading from an encoder. I also found that using this library I had more like 4000 counts per revolution.

    • Member #532742 / about 10 years ago / 1

      Your ~4000 counts should be expected. With quadrature encoding, you get 4x as much resolution as pulses per rev (P/R), so this should give you 4096 counts/rev with full quadrature encoding (e.g. using the Arduino's encoder library)

  • Member #477189 / about 9 years ago / 2

    I am using this as a jog wheel for a stepper motor control. It is quadrature, not absolute, so you get CW and CCW but not angular. I have my hooked up to an Uno with a screw shield.: Wiring: Brown-> 5V , Blue->GND, Black->D2, White->D3 that's it! Smeld and orange are taped back out of the way (I think Smeld is shield, the hi looking possibly like an "m" if your eyes aren't the sharpest and your familiarity with the English alphabet being minimal).

    I used the examples from pjrc.com (thanks edgar_allan_pwn) the basic example will get you going, I switched my pin locations from 5 and 6 to 2 and 3.

    These work pretty smoothly, 1024 P/R is a good many pulses for $40 encoder. It looks like a Omron encoder that runs $200-300. There is a tiny bit of notchiness as I rotate the shaft, but it is barely noticeable and is possibly only in my example and may be due to a fleck of dust.

    If you want to try something with a decent encoder, this is good start. The under $10 encoders have too much contact bounce and not nearly the resolution if you are trying something like a nice jog wheel setup controlling, say a stepper motor.

  • Dewy / about 12 years ago / 2

    Hmm, looks like the orange wire changes state every 45 degrees? That would be very handy for high speed indexing when the direction of rotation is already known. Built in 128x speed multiplier, very nice.

  • Member #692850 / about 9 years ago / 1

    What do you do with the orange wire? it says on the sheet that it goes to output z but it seems like we don't need it. What should I do?

    • It depends on the output signal form. Generally speaking, AB with 4 wires, and ABZ with 5 wires, the same with AA-BB- and AA-BB-ZZ-. There are always 2 additional wires, one for Voltage and The other for shielded wire.

  • Member #589293 / about 10 years ago / 1

    help plz :) what is the best driver shield for this motor !!?

    • how abt servo encoder

    • M-Short / about 10 years ago / 1

      This isn't a motor. As for best driver shield, that depends on your motor and what you are trying to do. Also, don't limit yourself to shields, there are a lot more options as breakout boards that may be easier to use and/or more powerful.

  • Member #568780 / about 10 years ago / 1

    "Calling this output “gray code” obfuscates. This type of output is commonly called quadrature." Thanks for suggestion. java code 128 encoder library

  • Member #31646 / about 10 years ago / 1

    Calling this output "gray code" obfuscates. This type of output is commonly called quadrature.

  • n8vhf / about 10 years ago / 1

    Looks like this may be a re-badged or a copy of an Omron encoder. Here is the data sheet for the Omron encoder with the same part number and specs. http://www.ia.omron.com/data_pdf/data_sheet/e6b2-c_dsheet_csm491.pdf

  • Member #395650 / about 10 years ago / 1

    I can confirm my encoder (E6B2-CWZ3E) operates in multiples or 1024 not 1000 or 2000 as stated in the data sheet. Note I tested this visually with a pen marks.

  • Member #382715 / about 11 years ago / 1

    if anyone else was wondering- this is an optical encoder.

  • Fast CodeVisionAVR code available for this rotary encoder (without Z).

    http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=3865

  • Funi / about 11 years ago * / 1

    I am confused on the Z out. I don't seem to get anything on the Z out of my encoder. With what frequency is the pulse supposed to repeat? Why would A and B be fully functional, yet I get no output on Z? Any help would be appreciated.

    Edit: I should say, I get a constant high on Z.

    • Member #532742 / about 10 years ago / 1

      Without reading the datasheet (I'm bad, I know), Z is usually an absolute position reference. You can set this up on an interrupt (or, if you're using an Uno, etc. with only 2 interrupts, using PinChangeInt) successfully. Knowing that it is constant high, set up an interrupt to detect a rising edge to set the value of the encoder

  • Member #438024 / about 11 years ago / 1

    HI do you have encoders with three channels [index, phase A and phase B] NOT gray code ? If so please put a link. (This is for a motor speed and position application)

  • Member #438024 / about 11 years ago / 1

    Don't you have a quadrature encoder (not gray code) that outputs INDEX, PHASE-A and PHASE-B?

  • Member #375714 / about 11 years ago / 1

    Does anyone know why this is priced the same as the COM-10932? It looks like the COM-10932 is essentially the same thing with a lower resolution. Why would they be priced the same?

  • Member #366117 / about 12 years ago / 1

    Hi folks - can anyone advise on the best approach (code would be great) to measuring the speed or distance a rotary encoder has been rotated (mean change) from when it is started turning to when it is no longer turning anymore. Much appreciated!

  • Jiikootee / about 12 years ago / 1

    According to datasheet the resolution is 2000, not 1024 p/r? Which information to rely on?

  • abanie / about 12 years ago * / 1

    is it only speed, and position in one direction? like previous one the 200P/R

    • no. we have 2 200 P/R, one that's quadrature, and one that's not. this one is a quadrature, so you can determine direction.

  • jjw / about 12 years ago / 1

    It looks like this is an incremental encoder and gray code does not apply. See:

    http://en.wikipedia.org/wiki/Quadrature_encoder#Traditional_incremental_encoders

    • rebelzach / about 12 years ago / 1

      Actually what this outputs is a two bit form of gray code. Which is exactly what a traditional incremental encoder does (according to that wikipedia entry)

  • Pegasus / about 12 years ago / 1

    My Chinese isn't that good but it looks like the shaft diameter is .20". Is that correct? I'd like to use these to attache to the back of my stepper motor shafts on my CNC machine to use as a DRO (Digital Read Out) of the current position. They seem like they would be accurate for this purpose with 2.84 pulses per degree of rotation. Any thoughts from my fellow tinkerers? ;^)

    • buffington / about 12 years ago / 2

      I just received this encoder and measured the shaft. The diameter is 6.00mm (0.24 inches). There is a flat spot to better accept the collar and set screw. That flat spot is 1.00mm deep (across the diameter) and 10mm long.

      The length of the shaft is about 14.00mm. I say about because at the base of the shaft is a C clip. It has a bit of play (between 0.01-0.05 mm is my best guess).

      As far as accuracy - no real idea yet.

    • Ocean Controls / about 12 years ago / 2

      You should actually be able to get 4096 discrete positions out of this encoder as the count is usually the number of lines and you get 4 edges per line. NB not tested with this encoder.

    • schlick / about 12 years ago / 1

      I was actually thinking of attaching to the spindle motor on a mill to facilitate things like tapping, or on a lathe for constant SFM or C-axis live tooling.

  • What sort of rotational friction does this offer to the system? Does is spin freely if giving a snap of the fingers, or is there a definite drag so it stops almost immediately after removing the rotational force?

    • buffington / about 12 years ago / 1

      I'm holding this encoder in my hand now. It takes very little force to spin the shaft. But it will not continue to spin after I've tried my hardest (a severe "snap of the fingers"). At best it continues rotating for maybe an eighth of a rotation, if even that.

    • jjw / about 12 years ago / 1

      Checking my textbooks (and the datasheet) the time for the encoder to spin down from it's max speed to zero would be under 1/2 a second. So if you spun it with your fingers it would stop right away!

      • Camalaio_ / about 12 years ago / 1

        Not quite. The starting torque above is ~0.14oz-in. Compare that to a few motors you may or may not have to get an idea of how much that is. Also, that's starting torque induced by stiction (or static friction). If it's moving, it experiences classic or dyanamic friction, which is always less than stiction. The difference depends a lot of the mating materials. Let's just say it's 0.1oz-in, which may be completely off (in either direction).

        If you had 5oz-in of torque at near-stall (but still rotating), you'd still be delivering 4.9oz-in to the rest of the system. Of course this may do a little damage to top speed, especially true of brushed DC motors (due to how they operate), but it's not designed to be used on cheap, weak brushed motors. Think more torque-y big motors and stepper motors.

        Also keep in mind the encoder weighs 100g (~3.5oz), so you're probably not going to be putting two of these on a robot with low-torque motors anyway. In that case you generally do not need this much resolution and can actually make a cheap encoder yourself :) (Google, perhaps? Quadrature Encoder is usually what people are looking for)

    • Klone38 / about 12 years ago * / 1

      The datasheet specifies that it has a starting torque of .98mN*M so there should be very little friction introduced to a system. I wouldn't know how long it would spin if you snap it however.

Customer Reviews

3.9 out of 5

Based on 9 ratings:

Currently viewing all customer reviews.

2 of 2 found this helpful:

pretty cool, but may not handle stress well

I built a persistence of motion LED display for a wall clock using one of these bad boys. It has great precision and very little resistance or inertia, so it worked great for my project. The only problem is that it seems to have lost accuracy over time. I believe I put too much stress perpendicular to the axle. If you use one of these you should take care to reduce stress on the axle.

The measurements are metric, so it was slightly difficult to find a 6mm bolt to mate with the axle at my hardware store.

Four stars because it operates within its advertised limits but I wish it was just a little sturdier for my project. I'm going to buy another one and hope that I damaged it during construction or transportation and not regular use.

1 of 1 found this helpful:

Performs as expected

This encoder worked just fine for my application, which was a long-stroke linear measuring device. I used a small 16-tooth pinion and a long gear rack to translate linear motion into rotation of the encoder; now when the gear rack moves I can see a live readout of the waveform in arduino. Nice! You can't get the gear rack here, but if you have a similar application check out Servocity.

M3 mounting screws are nice. Form factor is easy to work with in CAD to make 3D printed mounting hardware etc...

Shaft seems stable and there is at least some moderate strain relief on the cables since I have been yanking them a bit and it still works. Electrically, it is robust enough on a breadboard to work with and not have to worry about frying it if you accidentally spark some wires together or flip polarities on your supply rail etc. (not that I would do that, heh, heh.....)

Pretty simple to use with a nice wide voltage input range. All of the heavy lifting is done for you in terms of coding w/ microcontrollers -- there are several libraries in the arduino library manager which are essentially plug and play with this device.

A pretty good encoder for a great price, but there's a catch...

I wanted a cheap encoder so I could mock up a HW setup at my desk for testing. I found the build to be pretty good. Had plenty of cable and is pretty much exactly what you would expect. That is except for the Z output. The spec sheet says that the output is low and gives a high signal once a revolution. I found that the z out is actually the inverse of that, it's high and goes low once a revolution. I ended up having to use a transistor and a pull up to make my mock setup consistent but am still a little bummed that the spec-sheet doesn't actual match the encoder.

Works well in early testing

I combined this with a Phidgets 1047 USB encoder interface, and the combo works very well. The index mark signal is very useful in centering the encoder readings. This is going into an installation where it will get heavy use, and I'm hopeful it holds up well over time.

work great

The encoders work really well. They mount easily and the flex couplings work great to absorb any imperfect alignments. They also come with lots of extra wire so they can be run quite a long distance which I appreciated. One thing to be aware of is that they have a lot of resolution with 1024 ticks per revolution. This is great but users should be aware that depending on expected RPM it might be to much for something like an Arduino to keep up with. For example I am running 4 of these at 50RPM which is over 2 million interrupts per second. I had to use a phidgets FPGA board in order to keep up with the number of interrupts. This isn't a problem, just something that users should be aware of. I do have a minor criticism though, the wire outputs are color coded very funny. For example brown is VCC and blue is ground while orange is Z output. Not a real problem but it was a bit confusing at first.

Does exactly what it says on the tin

Happy with this encoder, so far so good. When this site was out of stock for a long duration Yumo themselves were kind enough to send them directly also. Can recommend.

Simple and reliable :)

For the cost, this is a pretty good optical encoder with 1024 pulses per revolution. If you count rising and falling pulses for "A" and "B" you'll have a 4x resolution (4096 pulse per rev) encoder! Also don't forget this encoder's "Z" connection gives one pulse per revolution for absolution positioning :)

Bad specs....

The specs for this encoder suggest that the output is 2k to rail voltage (brown wire) then a transistor to ground. I was trying to connect this up to an fpga board which accepts the LVTTL voltage levels. <=3.3 The quickest and cheapest way to achieve this is with a voltage divider. That would suggest a 1.8k resistor from the output to ground should do the trick. NOPE.

If you measure the resistance between the channels you will get 6.6k. (Don't forget to remove the power for this test.) That suggests that the resistance is 3.3k to rail.

After carefully opening up the back cover, I have verified finding three 3.3k surface mount resistors.

But wait... The unloaded high level output should be equal to the brown wire voltage, right? Wrong again. If 5v is applied to the brown wire, the high level output is ~4.2v.

I won't gripe too much the high level voltage output. Perhaps it is a reverse polarity protection? However I won't test this theory out. (Kinda like fully testing fuses before to putting them into service.) It is still something to be aware of.

I think I will be trying a different strategy: Zener the channels? Diode to rail? Or perhaps remove the 3.3k and make the encoder open collector.

Good Encoders

Overall good encoders, they are a bit larger than I was expecting, but that's not really an issue. Overall they are pretty robust and work great in pair with the sabertooth and kangaroo motor controller combo. For this price you can't really beat the performance.