linear calibration in mems-accelerator.

Status
Not open for further replies.

lines

Newbie level 6
Joined
Jul 12, 2011
Messages
12
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,283
Activity points
1,379
Hi, all.
I'm coming with an problem in accelerator design.
In our process, the sensor has some non-linear problems to be solved in asic design.
As our target is to get an linear output whose non-linearity is about 100ppm. but the non-linearity in sensor is about 10000ppm. and the relationship between accelerate input (a_in) and capacitance output (dC) is like an 3rd curve.
so we come with 2 solutions:
1. get the coefficients of the 3rd curve, and write in OTP to calibration this non-linear.but the simulation results shows that the curve should be divided to 10 portions. and need 40 points. this seems too much for test engineer.
2. Use high-order curve. but the order seems > 11 times. this cost lots of power in digital design.
and now, we want to adopt the first methods, and i post this, wandering if there any better idea?
 

In my view, y high order polynomial is typically a "dumb" linearízation method in lack of a specifc physically plausible sensor characteristic. Respectively I would try to find a way to describe the actual characteristic with fewer parameters.

But I know that it's not always possible.

The 40 points table is mainly a problem of calibration effort. If you get good reproducibility by interpolating a limited number of calibration points with any kind of function, a possible solution can be to calculate the look-up table entries at calibration time. This brings also the advantage that the device firmware isn't restricted to a particular interpolation function, you can change it at any time as long as you have a sufficient fine table.
 
Reactions: lines

    lines

    Points: 2
    Helpful Answer Positive Rating

Thanks for your answer, i think i get some ideas from your view, and i need time to verify it. thanks. I'll come back.

- - - Updated - - -

Data below is my simulation results, fn(x) = a3*x^3 + a2*x^2 + a1*x +a0;
it's hard by interpolating.
Thanks for your answer, i'll try other ways.
1 2 3 4 5 6 7 8
a3 0.1417 0.1228 -0.1124 -0.5594 -0.7448 -0.3993 0.0035 0.1455
a2 2.0830 1.9908 1.1020 0.1455 -0.0178 -0.4225 -1.4879 -2.1046
a1 16.4331 16.2905 15.1621 14.4649 14.4192 14.5854 15.5391 16.4364
a0 0.7706 0.7028 0.2212 0.0483 0.0443 0.0210 -0.2680 -0.7058
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…