Draw wire encoder - Incremental encoder - Shaft encoder - Rotary encoder

Hello community,

I am interested in an arduino project including a draw wiring incremental encoder. But I have a problem in choosing the appropriate one and I need some help, those devices are a bit expensive for an arduino project to waste the money. Following my search, I will write down what I have found so far, in case it might help others as well.

Draw wiring encoder:

It is a sensor based on an encoder which is connected to a wire one can draw. When the wire is pulled by the user, the encoder rotates and there can be a very accurate counting of the distance of the wire. There are two types of encoders, the absolute and the incremental one, based on the output signal. The absolute provides the exact position, while the incremental adds up steps (when the string is pulled) or subtracts steps (when the string is released). I am interested in the incremental one.

Here are some links for better understanding
What’s the Difference Between Absolute and Incremental Encoders?
How Rotary Encoder Works and How To Use It with Arduino

Using Rotary Encoders with Arduino

There are also different types of incremental draw wire encoders based on the output driver. So far I came across to the following types:

NPN output collector
PNP output collector
Push Pull (HTL)
RS422 (TTL)
Voltage output
Line driver output

which I am not familiar with (and I have the impression that some of them are the same… ).

As said above, serious draw wire encoders cost quite some money, they are really accurate and sensitive (to my understanding). And I am not willing to pay upfront unless I am sure it works. Having done my search, I found some lets say ‘low cost’ that I could use in my project. Unfortunately, the description is not very accurate and confusing. Here is a link of one:


As one can see, both in the technical data and the selection guide, the aforementioned types (even more actually) can be selected.
According to this

Incremental Encoder Interface

NPN and PNP are old types and have been replace by HTL and TTL. To my understanding

HTL should be provided by 8 - 30 VDC which is not suitable for arduino (I also am not sure what the output voltage will be)
TTL can be provided by either 4,75 - 5,5 VDC which is suitable for arduino or 8 - 30 VDC which is not suitable for an arduino. TTL would also provide the same input voltage as output, so if connected to arduino, 5 VDC would be provided to the draw wire encoder and 5 VDC would be its output.
And then come NPN and PNP Output collectors for which I believe whatever the input is, the output will be - the difference is on the High vs Low signal.

In this youtube video 6 someone is using an NPN encoder (check the technical data at 1:15 ) with the arduino. I wasn’t able to find any video with an draw wiring incremental encoder + arduino .

Here Which are the incremental electronic interfaces? one can find a bit more information on the different output of the encoders.

At the point I am between an NPN and the TTL based on the assumption than both can work with the arduino 5 VDC. The 5VDC arduino input will also be the output driver’s voltage towards the arduino. It seems that TTL is better, there is less interference but this looks like it will not be my problem - my project has the draw wire encoder very close to the arduino, the connecting cable will not be long. However I am not sure about the amps, will there be any problem for the arduino? The technical data says that current consumption will be <= 60mA , is this ok with an arduino?

To kind of summarise the questions:

  • which type of output driver should I select?
  • what problems may arise due to the amps?

Any views will be helpful, thank you in advance

You seem to be expecting people do to a great deal of reading in order to help you. Sorry, I'm lazy.

I can't see how the output of the encoder matters very much. What is important is how many pulses it produces per revolution and whether that gives you the measurement accuracy that you require.

To my mind the simpler outputs would be easier to interface with an Arduino - something that produces a HIGH or LOW signal for every pulse.


PS ... If you want people to read links I suggest that you give the link a meaningful name rather than a meaningless number.

If you ever consider to use absolute encoders, you have to specify how many bits (parallel wires) the output must have for your intended range and resolution. Newer absolute encoders may have serial I2C or SPI interface, to save wires.

I am interested in an arduino project including a draw wiring incremental encoder.

Disclosing the application might get more useful answers or even better suggestions.

And, your question is?

If you want project guidance, tell us what your project is.

If you ever consider to use absolute encoders, you have to specify how many bits (parallel wires) the output must have for your intended range and resolution. Newer absolute encoders may have serial I2C or SPI interface, to save wires.

Thanks for taking the time to answer. I think I need an incremental one. Anyways, thanks.

Your description seems a bit ambiguous. Drawing a wire means to pull it through a device to make the diameter smaller than original. Is this what you are making?



in this link, one can see the different output drivers for encoders. Might be useful for some.

1st choice, 5V push/pull, 2nd, NPN OC (needs pullup resistor, Arduino has them built in), you haven't said what resolution you need or the "drawing" speed.

Hi JCA34F and thanks for your time.
Well I nave decided to go for NPN OC, since i have already bought an encoder,not draw wire one, which is, i believe, NPN OC and it has been working fine.
At the moment i am not very much interested in speed, i did find out that it indeed matters since if i go fast with the encoder it skips steps.
What i would like to ask is about the supply voltage and the output. Im buying it from china, because i dont want to (and can't) spend too much on the prototype. To my understanding, it should be working with
Supply voltage: 5 and up
Output voltage: 0 to 5
For it to be compatible directly with arduino.
The chinese providers dont offer very nice data sheet, specifications, they usually have all in one spreadsheet and its not easy to understand - i believe they give all the models , npn push pull line driver in one tanle and i get lost.
I think their npn has a supply voltage 12-24 which is not directly compatible with arduino, as i would like not to have anything else in there to 'regulate' the voltage.
If i am correct, please verify, i need to ask them directly about their npn model so there won't be any mistake.
Once again thanks.

An o.c. output only has a maximum operating voltage, e.g. 30V. The actual voltage swing depends on the voltage connected to the pullup resistor, i.e. the operating voltage of your controller.


Your answer has been what I have been looking around for a week or even more!!!
Thank you.
So in simple words, what ever voltage i provide the npn open collector draw wire encoder, 5volt in case of the arduino, the same i will receive as output and if this does not exist the maximum (which seems pretty obvious, 5volt is not much), the encoder will be just fine, right?
Once again thank you for your time

When the transistor is OFF, the pullup resistor holds the output HIGH, when transistor is ON, it pulls the output LOW, near 0 volts. The signal voltage can be different than the supply voltage.