How to "tune" multiple softpots

Hi there,

I'm making a multi-ribbon controller with many softpots and I'd like them to behave homogeneously: that is, pressing at the same height in different softpots should give me the same result from an analogRead. Some of them differ only by 10 (of 1023), which is easy to correct in the code, but a few differ much more: 50 in the mid range, but only 15 or 20 when closer to the extremes. Why this? It seems it doesn't behave in a way that is easy to correct reliably in the code.

By the way, I'm using 800k resistors as pull-downs. Their actual values oscillate between 795 and 820, not sure if this could be affecting, but it doesn't seem so when comparing the actual values of the pulldowns with the results from analogRead.

Could it be that softpots are not homogeneous at all?

Thanks in advance :)

I'm using 800k resistors as pull-downs

That is very high, it will cause problems when rapidly switching between channels.

Could it be that softpots are not homogeneous at all?

Yes that is right.

Grumpy_Mike:

Could it be that softpots are not homogeneous at all?

Yes that is right.

Oh noes, then I guess I'll have to correct it in the program. Any approach recommended? (if anyone has ever tried a similar thing)

I thought measuring carefully the readings with a ruler and finding the point where deviation is the biggest (e.g.: softpot 1 and 2 at 30cm reading 261 and 232), then calculate the proximity of any reading to that point and use it as a deviation ratio.

Grumpy_Mike:

I'm using 800k resistors as pull-downs

That is very high, it will cause problems when rapidly switching between channels.

You mean channels of a multiplexer? Like signal contamination?

I chose it so because of this article: http://qqrs.github.io/blog/2013/04/22/interfacing-a-softpot-sensor-to-an-adc/ Apparently, the linearity improves for higher resistor values.

Anyway in between readings I switch to channel 15 which is connected directly to ground and do an useless analogRead there to clean the signal before the next reading, that seems to work well enough. Also a delay(1) works like charm. Also there's pressure sensors below the softpots, so I know when they are pressed.

Thanks!

Getting somewhere. Relatively. I tried dividing the readings from two softpots (softpot1/softpot2) pressing them in parallel to find the deviation ratio. It's like 1.11 at the beginning, drops to 1.02 in the end, but the transition from 1.11 to 1.02 seems to be logarithmic.

So I thought, perhaps I would be better directly linearising the result of the softpots. That way "tuning the softpots to an unison" would be much easier. Also, I bought them because they were advertised as linear, and I rather need linear readings.

I've been googling for a while and found some people who have done it, but they only mention it in passing. Because they are already almost linear, it should be easy, but I'm unsure on how to start. Any ideas or previous experience in the matter?