Temperature compensation. It does matter.
Temperature compensation is one of those capabilities that when included in a sensor board can go a long way to reduce the temperature dependence on the computed measurements. The SLUGS AP includes a low-power active thermistor from Microchip (MCP9701A). This thermistor is really cheap and requires very little board real state. In our case, the thermistor has proven essential to conduct temperature compensation on our sensor measurements.
Take for instance the gyro Y (from an IDG300) and static pressure measurements (MPXH6115A) shown below in rows two and three in blue. The read values showed a drastic change which was strongly correlated to that of the thermistor. After temperature compensation (shown in red) it is clear that even though temperature compensation does not completely remove this dependence. It does go a long way to reduce this effect.
Granted that the temperature variation from freezer to heat gun is quite drastic, but it does a good job on showing how dependent a sensor is to temperature variation.
So how to do temperature compensation? It is quite simple. First you need to find the temperature dependence from a given sensor. To do this you need to do a scatterplot of temperature vs. sensor X. With that, you can do a polynomial fit (preferably a 1st order) to obtain the dependence coefficient.
For instance, the following image shows the temperature dependence on each of the SLUGS IMU sensors:
Note in the above plot how the gyro Y the temperature dependence coefficient is an order of magnitude larger than any other. Thus, this means that gyro Y is severely affected by temperature.
The coefficient displayed on each plot can be used by using Matlab’s polyfit command as:
coefficient = polyfit(temperature_data,sensor_data,1)
In conclusion, if you have sensors that will be subject to temperature variations don’t discard the importance of conducting temperature compensation on those. Adding a thermistor has a negligible impact on board-space and price as long as you have an ADC pin available in your main microcontroller.