Inductive sensing: Linear position sensing (Part 1)

Most people think inductive sensing is a method for measuring the distance between a coil and a conductive target, but there are many other use cases for the technology. For example, did you know that you can use a spiral PCB coil and a piece of copper tape to measure linear position?

An inductance-to-digital converter (LDC), like the LDC1000, senses inductance changes of an inductor that comes into proximity with a conductive target, such as a piece of metal. The LDC measures this inductance shift to provide information about the position of the target.

For my linear position slider, I altered the usual approach of changing the distance between the target and the coil. Instead, I kept the target-to-coil distance fixed and changed metal exposure over the coil as I slid the target linearly. I achieved this by using a 100mm long triangular target, which I cut out of a piece of copper tape. The copper tape extends past the widest end of the triangle to ensure maximum metal exposure at that position.

For my sensor coil, I chose a 2-layer PCB coil with 29mm diameter and 70 turns per layer. I chose this coil, because its diameter exceeds the widest part of the shaped target. Figure 1 shows the coil and shaped copper tape target I used for this experiment.

Figure 1: PCB coil and shaped copper target

I then placed the target at a 4mm distance to the PCB coil. Placing the target close to the coil increases the inductance shift as the coil moves from the widest to the narrowest part of the target. For high precision linear position sensors, it is important to minimize target distance to achieve the best resolution.

I moved the target from position 0 (widest part of the target) to position 100 (narrowest part) in 0.5mm steps and measured the inductance at each position. Figure 2 plots the measured data.


Figure 2: Linear slider position vs. measured inductance

Sliding the target from its widest to its narrowest position increases the sensor inductance from 175.2μH to 251.4μH. Since the inductance change is low at the ends, I recommend discarding the top and bottom 5% of the travel range.  Therefore, you should use a target that is at least 10% longer than the required travel range. The data samples collected along the remaining 90mm are monotonic and quite linear, and can be used to accurately determine the position of the copper tape target.

To achieve perfect linearity, it is possible to modify the target shape from a triangle to a different shape that results in a linear output. However, it‘s usually easier to linearize the data output in software.

If you liked this, be sure to check out Part 2 in this series, where I explain how to design a linear position sensor using an asymmetric coil rather than a shaped target. If you have a question about designing with an inductance-to-digital converter, search for answers and get help in our Inductive Sensing forum.

Additional resources:


  • Thanks for that ice hands-on article.

    You did not talk about the reached resolution, though.

    I did actually almost the same with the EVM coil and a angle slider made from a FR4 copper PCB.

    Actually I had not that much luck with it. You may have some tips for me, give it a try at



  • Thanks for that ice hands-on article.

    You did not talk about the reached resolution, though.

    I did actually almost the same with the EVM coil and a angle slider made from a FR4 copper PCB.

    Actually I had not that much luck with it. You may have some tips for me, give it a try at



  • This is a very clever idea. The copper & coil need to be pre-loaded with a light spring pressure to maintain a stable distance while it is sliding. I think this would solve Stefan's problem.

    Is there a way that TI can post these articles as a .pdf so they can be downloaded and saved?

  • Hello Stefan,

    In the example with a triangular copper tape target, I measured a 0.8% frequency shift between minimum position and maximum position at 4mm target distance. At an input clock frequency of 8MHz and an oscillation frequency of 10kHz, the LDC1000 translates this shift to an average 7.7um resolution across the 100mm travel range.

    If this resolution is insufficient, there are several ways of further optimizing resolution. Resolution depends on several different factors, including which LDC device you use, and what sensor frequency shift you can see between minimum and maximum slider position. The achievable frequency shift can be maximized by using a target material with high conductivity and thickness (at least 3 skin depths), and minimizing distance between target and coil. Additionally, the LDC1000 resolution varies with LC tank frequency (lower is better for this purpose). If you are using LDC1000 and are struggling with resolution for a similar application, begin by decreasing tank frequency (change tank capacitor value), change the CLKIN clock to 8MHz, and set the response time setting to 6144.

  • Hello Neil,

    you are correct, a fixed distance between sensor and target is required for this application. If distance varies, then a light spring is indeed a good solution. I used this method previously where distance could not accurately be controlled, and it provided very good results. There are also alternative approaches such as using a second coil to measure and compensate for distance variation if a spring is not an option.

    Unfortunately, I have no influence on the features of the blog/forum itself. Currently, this data is only available on this forum, although some blog articles will eventually turn into application notes. Until then, I recommend to use a pdf printer to save the blog website as pdf, or to click on the 'Favorite this post' option, so that you can retrieve a list of your favorite posts by clicking on your own profile.

  • Hello! I am doing a design of using LDC1000EVM to measure linear position. I notice there is a difference between your picture and the official doc of Ti (see, the conductive target you use is a piece of copper tape in a triangle shape while the in official PDF file the shape of the target is a little different, and perfect linear. I wonder the latter may have a better performance?

    Thank you!

  • Hello Yucheng,

    I chose copper tape and the target shape because it allowed me to build a prototype very quickly. Linearizing the output in software is usually the easiest method. If you don't have this option in your system, then you can optimize the target shape to produce a linear output without software processing. The target shape looks similar as the one in the brochure.

    The equation to produce a target shape that results in a linear output depends on the coil, target distance, and target material. We are working on a document on how to design such a target. I will publish a link on the inductive sensing FAQ ( as soon as it is available.

  • Thank you for your help!

    In your reply you mentioned about linearizing the output in software, could you please share some tips or design docs about it? I am new to precise displacement measuring .

    Besides, I think the copper tape or the coil is not  perfect plane, and  LDC1000 can even measures um in change of distance between the target and the coil. Wouldn't it make some unwanted effect to the result?

    Thank you for your replay again!

  • Hello Yucheng,

    a relatively simple approach for software linearization is to create a look-up table of several points during the design stage and interpolating,

    You are right, copper tape probably does not deliver micrometer resolution. However, it does easily provide resolution of 500um. If you need resolution in the micrometer range, then I recommend using a more precise target that has been properly machined.

    Here is my suggested approach to reducing tolerance in the z-axis (distance between coil and target):

    1. It is most important to keep the distance between the coil and the target to a minimum. I also recommend choosing a target with a thickness of at least 3x the skin depth at the chosen oscillation frequency (the copper tape in the example did not meet this requirement).

    2. After making these changes, if tolerance in z-axis still dominates resolution requirements in the x-axis in your system, then a spring or clip can solve your system problem.

    3. If adding a spring or clip is not possible in your design, then a dual-coil approach may be necessary, in which one coil measures position in the x-axis, and the second coil performs the z-measurement.

  • Thank you for your reply. I will give you feedback as soon as possible.

  • Hi! I have tested LDC1000EVM today. Since my LDC1000EVM is a lite version there is no USB connection circuit on board. I tested LDC1000 by little change of the G2 Launchpad demo example.

    First I just used a metal knife to simply see if the result change by moving the knife closed to the coil on board. I found that with a maximum distance about 5cm the result decrease when the distance decreasd but if  I keep moving the knife to a fixed distance the result suddenly start increasing, that is weird.

    I also used copper tape in triangular shape to masure linear position about 10cm.  The result turned out to be very nice and I think linearizing the data in software should be easy. I would try it soon.

    When testing LDC1000 I accidentally found the result could also be affect by human body like hands. I was afraid it might bring some shift to the result. Do you have any suggestion to figure it out?

    Thank you!

  • Hi Yucheng,

    I don't completely understand the issue with the knife test. Are you saying that results are not repeatable? When you put the knife into the exact same position, you should get repeatable results. Which board and which coil are you using?

    I am glad the copper tape experiment is working for you.

    I answered the question on touching the sensor in the inductive sensing FAQ ( Please refer to question "When I touch the sensor coil, the GUI shows an increase in inductance. Why?"

  • Sorry for my wrong description that made you confused. What i mean is if i hold the knife and slowly approach it to the coil the proximity result should continuing increase but my test shows that the result decrease in the opposite. Keep approching to a distance about several cm the result start working as it should be (result increase).

    My EVM board has a on board 14mm coil on both layer. Here is picture of it

  • Hi Yucheng,

    metal at 5cm distance can't be detected reliably with a 14mm coil. You will need a bigger coil for 5cm distance detection. Please refer to question "What is the maximum target sensing distance for the LDC1000?" on the inductive sensing FAQ

  • Hi Ben Kasemsadeh ,  

    Thanks for your blog !

    How to compensate from Z axis errors, in a rectangular space of 1cmx10cm ?

    May I use a rectangular coil of 1cmx10cm centered ?