Inductive sensing: Linear position sensing (Part 2)

In my last blog post, Inductive Sensing: Linear position sensing (Part 1), I demonstrated how to implement a linear position sensor using a triangular target and a spiral coil. While good resolution can be achieved with this approach, it requires that you measure a target that is longer than the travel distance. In situations where the target size for this approach is prohibitive, you can use a smaller target with an irregular coil instead.

For situations in which the target must be small, I designed a rectangular coil with larger loop spacing on the right side as compared to the left (shown in figure 1). This coil produces a non-homogeneous magnetic field, which can be utilized for linear position sensing using an inductance-to-digital converter (LDC), such as the award-winning LDC1000.

Figure 1: PCB coil that produces non-homogeneous magnetic field – the image from the PCB layout tool is shown for clarity

The coil is a 2-layer PCB with 5 mil (0.127mm) trace width and spacing. It has 23 turns per layer and measures 100x12.5mm. On the left side, the traces for each loop are spaced 5 mil (0.127mm) apart. On the right side, I added a loop stepping of 4mm.

The result? The sensor coil produced a magnetic field that was strongest around the center loop and decayed towards the right side of the coil.

My target was a 24mm wide piece of aluminum. While wider targets consume more space and limit the total usable travel range when compared to narrower targets, they produce a larger inductance shift and provide excellent resolution.

For my evaluation, I placed the target at a 4mm distance from the coil to the PCB coil. Placing the target close to the coil creates a large inductance shift from the center of the coil to the right edge. Similar to my experiment with the triangular target, I moved the target from position 0 (left-hand side of the coil) to position 100 (right-hand side of the coil) in 0.5mm steps. Figure 2 shows the measured data.

Figure 2: Linear slider position vs. measured inductance

 The data showed that the first 5mm should not be used for an absolute position sensing application, because they represent the area left of the coil center where magnetic field lines are less dense than at the center. In the last 10mm of travel range, the magnetic field strength is very low, so sensing accuracy is reduced.

The data samples I collected along the remaining 85mm of travel are monotonic and can be used to precisely determine the position of the metal target. During this travel range, inductance increases from 73.1μH to 84.9μH.

There are two ways to linearize the output. One approach is to space the coil loops to the right of the coil center in a non-linear fashion, such that they produce a linear output with the chosen target at the desired target distance. However, it’s usually easier approach to linearize the data output in software.

Inductive sensing is a powerful technology that provides accurate, non-contact linear position sensing. In this two-part blog series, I explained that you can design such a system by using shaped targets or by using asymmetric coils.

If you have questions about anything mentioned in this two-part series, please leave a comment below. Feel free to also search for answers and get help in our Inductive Sensing forum.

Additional resources:

  • Hi Ben, I'm currently designing a linear sensing system based on the LDC131x/161x, which will have to be able sensing a 60mm long displacement with ­±50um precision, with a PCB-based copper target.

    I have two options:

    • either a rectangular coil with a rectangular target,
    • or a round coil with a shaped curvy arrow shape target (for improved linearity).

    What would you recommand ?

    And when you'd recommand the rectangular coil, could you please provide your Altium script to me ? Many thanks in advance, -BR

  • Hi Ben how are you?

    Please, can you provide me the gerber file for this coil? I dont know how to make it.

    Do you think water will be a problem for this application?

    Thank you a lot.

  • Hello Ireneusz,

    yes, your approach of wrapping the coil around itself and attaching it to the outside or the inside of a tube should work.

    I'm afraid Webench doesn't support such coils at this time. I generated the coils with an Altium script; if you think the script could be useful to you, let me know and I will send it to you.

    I generally recommend to have the target as wide as possible while still meeting travel range requirements. You can make the target on the inner tube wider, which improves your measurement accuracy but reduces travel range. This can be done until the entire inner tube is made from aluminum or other metal. If you still get the desired travel range, then making the inner tube from metal is a good idea. It would shield the sensor from the spring inside and give you best measurement accuracy. Additionally, using a metal tube instead of putting a target onto a plastic tube would eliminate one assembly step.

    There is an apps note has more detail on linear position sensing:

  • I was looking for linear position detection method based on various physical phenomenons and described attempt looks very interesting. I wonder if it's possible to extend the coil length up to 32cm and still have good results - I need minimum 0,1mm resolution. My idea (and need) is to make double layer flex circuit of about 32x2cm size and stick it inside PE/PVC pipe with internal diameter about d=16mm. I would like to know the position of another, smaller in diameter pipe (it could be either aluminium, metal or PE/PVC with metal ring on one end) sliding out of pipe with sticked coil. Unfortunately WEBENCH tools have only circural, square, hexagonal etc. coils examples with same width and height. My example is even harder to analyze because coil will be additionally arcuated. From your experience it will be better to have metal or PE/PVC (with metal end ring) pipe inside to detect position? Regardless internall pipe material, it's not empty, there is a metal spring inside, that tries to pull smaller pipe back in. Probably sounds complicated :-/ Looking from outside through layers there would be:

    1. external PE/PVC pipe, internal diameter d=16mm, about 2-3mm thick

    2. flex coil, 32x2cm, arcuated and sitcked to external pipe over length

    3. internal pipe, external diameter D=15mm, can be PE/PVC, metal or aluminium, depends on which will be better

    4. metal spring, external diameter D=8-10mm

    The problem is that metal spring will probably affect coil inductance. It's distance from coil is larger than internal pipe side but it will additionally extend proportionally when pipe slides out. All this probably will affect linearity but as long as it's monotonic it can be compensated in software.

  • I have a somewhat similar application where I intend to use inductive sensing. I was wondering would it be possible to remove  the decrease in inductance between 0-5mm by changing the trace layout in the left part of the coil. I was thinking that if some kind of asymmetric configuration would make the inductance increase through the whole length?