EMT Conduit Smart Telescoping Pole Part 2: Extension Sensing Methods + Photoresistor Implementation
Updated: Feb 5, 2022
Introduction
This article is part of a series discussing methods for adding sensing capabilities to a DIY telescoping pole project made from EMT conduit. This article presents:
Seven different methods for sensing the extension length of a telescoping pole made from EMT conduit!
An in-depth look at the photoresistor-based technique among that list of methods.
While the extended length of a telescoping pole can be simply measured using a tape measure, a system for continuously taking such measurements is useful for many different telescoping pole applications and projects:
Know if the pole has slipped
Set a repeatable length (e.g. deployable fruit picker)
Flagpole height measurement, at full mast, half mast, or anywhere in-between
Set the height of an archery or hunting target
Use the telescoping pole itself as a measuring stick
And more!
This article will show you how to add extension-sensing to an EMT conduit telescoping pole by utilizing low-cost, off-the-shelf components:
1", 3/4", and 1/2" EMT conduit from your local hardware store
Photoresistor/light dependent resistor (LDR)
An Arduino microcontroller
And some additional electronics!
Disclosure: Some of the links in this article are affiliate links. This means that, at zero cost to you, I will earn an affiliate commission if you click through the link and finalize a purchase.
Telescoping Pole Extension Sensing Methods
There are many methods to add extension sensing capabilities to a telescoping pole. We summarized seven unique sensing methods in our infographic below, comparing the pros and cons between the different methods. More details regarding each method are shared following the infographic. Feel free to save the image as a reference for whenever your next DIY telescoping pole project requires an extension-sensing solution!

Elaborating on the different types telescoping pole extension-sensing methods:

1. Rolling Wheel
This sensing method relies on tracking the number of turns a contacting wheel has undergone against the pole.
Two types of sensors are readily available for purchase, and are compatible with an Arduino microcontroller. The extension distance of the pole is related to the number of turns of the contact wheel, which is tracked by one of the two sensor choices below.
Encoders such as the above output two pulse signals (channel A and B), which are read and processed by the Arduino using a library such as this, to determine the current position of the encoder based on the sum of the detected pulses along with their direction (clockwise or counterclockwise.)
Encoders can rotate continuously, without needing to worry about hitting a hard stop. These sensors measure the change in the position of the wheel, not its absolute position.
The resistance of a potentiometer varies linearly with the number of times the potentiometer has turned.
One drawback of using a potentiometer as a contact wheel sensor is that a hard stop limit may be hit during operation. However, unlike an encoder, the potentiometer measures the absolute rotational position of the wheel, so extension measurements are not dependent on the history of wheel movement.

2. String potentiometer/draw wire sensor
A wire is attached to the tip of the telescoping pole, and a spring element (such as those found inside a badge reel) retracts the cord when the pole is shortened.
As in method #1 above, a rotational sensor such as a rotary encoder or a multi-turn potentiometer, is again used measure the length of the pole.
Off-the-shelf draw wire sensors exist, and they can be expensive, but some offer very large measurement ranges which may be required for your particular project:
Cost-friendlier draw wire sensors require DIY solutions, such as the following shared on YouTube:

3. Non-reflectance light sensing
This sensing method uses a light emitting diode (LED) in the base of the pole, and a light sensor mounted in the tip of the pole, to measure the pole's length.
Two types of low-cost light sensors are:
Photoresistor/light dependent resistor (LDR)
The electrical resistance changes in the presence of light. Therefore, use this sensor in a voltage divider circuit to read it using an Arduino.
Assortment kits such as this provide multiple photoresistors with varying degrees of sensitivity and response time, depending on your specific project's needs.
Photodiode - can be used in one of two modes (more details here). An operational amplifier is required for both modes of operation.
Photovoltaic mode - used for applications where the intensity of the light is very low, i.e. when your LED is dim, or is far away from the photodiode.
Photoconductive mode - used when a faster sensor response is desired.
The LED which shines on the sensor should be chosen to match the most sensitive wavelength of the sensor. For example, if a sensor is most sensitive to a light wavelength of 940nm, then the LED should also output 940nm.
Here is an example assortment of photodiode/LED pairs with matching wavelengths.
Low-cost photoresistors are typically more sensitive to green light than to red or blue light, so a green LED is most suitable for typical photoresistors.
This assorted kit, for example, is rated for a wavelength of 540nm (i.e. green light.)

4. Inductive sensing
The total inductance of a wire coil is measured to determine your telescoping pole's extension. The outer tube must be made of a non-metallic material such as plastic, and the inner tube must be made of a metallic material (e.g. EMT conduit.)
As the inner tube moves through the center of the wire coil, its inductance changes. That change in inductance can be measured using a circuit such as the one presented by YouTuber Electronoobs.
In a nutshell, the wire coil is connected in parallel to a capacitor and is powered by the Arduino. When the power from the Arduino is removed, the wire coil and capacitor will oscillate.
An LM339N chip is used to turn those oscillations into on-off (i.e. binary/digital) pulses. A frequency divider chip such as the 74HC04 line is used to decrease the frequency of the pulses so that the Arduino can more easily count them.
The frequency of the pulses counted by the Arduino is related to the position of the inner tube inside the wire coil, and therefore to the pole's extension.