PCB Heaven

General Category => Digital discussion => Topic started by: cheerio on May 19, 2013, 12:44:20 PM

Title: calibrating a sensor
Post by: cheerio on May 19, 2013, 12:44:20 PM
Not sure if this is really digitial or more analog diskussion.
Well i want to know how you calibrate a sensor. to be more precise i speak about a sensor that has an analog output that is converted by an ADC unit inside a MCU.
I always look for a linear offset first. After i have compensated that i do the following:
i write down the corresponding ADC value for a given sensor value. for ex. i write down ADC 50 for 10°C. then i increase th sensor value using a stepping that makes sense for the application. for ex. if i want to measure 0-500°C i would measure the ADC Value for each 10°C increase.
after that i have smth like this:
50, 10
55, 20
65, 30
75, 40
80, 50
...

what i do now is that i look for simmilar ADC increases per °C:

50, 10-> X
55, 20-> .5
65, 30-> 1
75, 40-> 1
80, 50-> .5
...

next step is to do a very nasty if else chain where i check if the ADC value is for ex. between 55 and 75 then i do the calc like this:
°C = 55+(ADC-20)*factor
where factor is 1 in this case


this works very accurate but it is very nasty to do and you always need a good reference sensor to do this.

How do you calibrate your sensors? do you have better ideas to compensate not linear errors?
Title: Re: calibrating a sensor
Post by: kam on May 19, 2013, 17:40:15 PM
Are you trying to re-create the temperature to voltage characteristic???
Title: Re: calibrating a sensor
Post by: cheerio on May 19, 2013, 19:46:01 PM
yes
Title: Re: calibrating a sensor
Post by: cheerio on May 27, 2013, 17:28:51 PM
so this is how this is done?
Title: Re: calibrating a sensor
Post by: kam on May 28, 2013, 17:48:12 PM
Well, its a way. But you really have to identify the curve (since its not linear).
Title: Re: calibrating a sensor
Post by: Sir N on June 27, 2013, 21:54:09 PM
Hi,

next step is to do a very nasty if else chain [...]

this works very accurate but it is very nasty to do and you always need a good reference sensor to do this.
A look up table is way easier.
Title: Re: calibrating a sensor
Post by: cheerio on June 27, 2013, 22:46:07 PM
it is indeed. but at a huge expense of ram or flash memory. after all it would be the same procedure to calibrate. Do you know a better way to calibrate?



i read some of your posts Sir N and i am glad you found your way to this forum. You seem to be an experienced guy and a big gain for this small community. Welcome!
Title: Re: calibrating a sensor
Post by: Sir N on June 28, 2013, 01:27:20 AM
Hi,

it is indeed. but at a huge expense of ram or flash memory.
It depends on how long a table you need of course, but don't underestimate the speed advantage of a table (compared to nested IF/ELSE chains). Further, most controllers above base line has got way more memory than you want to fill in assembler :)


after all it would be the same procedure to calibrate. Do you know a better way to calibrate?
If you refer to calibrating a single sensor from scratch, I'd look in the datasheet for starters. Most sensors have outputs that, if not linear, at least conform to a reasonably simple math function. The trick is to first define what tolerance you allow (be realistic here), then find a rough fitting function and bash it around until it's within your tolerance for all values. I'll see if I can come up with a blow-by-blow example once I'm back home.

It also depends on which sensor. A NTC resistor eg. can be rather linearized by adding a single parallel resistor - at the cost of less Ohm/°C

Do you have a particular sensor in mind and if, do you have a datasheet for it?


i read some of your posts Sir N and i am glad you found your way to this forum. You seem to be an experienced guy and a big gain for this small community. Welcome!
Thanks - I've been around the block a few times, and I hope that others may benefit from what I picked up along the way :)