I am using a Pololu 9-DOF module as the IMU for my robot. Its a very small device (1.0*0.8″) using MEMS bases gyro, accelerometer, and magnetometers. The trouble is these sensors have some drawbacks. The first is that MEMS sensors are sensitive to temperature. Some make better thermometers than what they were designed to sense. So to get the best performance from them, you need to calibrate them for various temperatures or to stabilize the chip at a constant temperature. The second main issue is that the magnetometer is sensitive to (duh) magnetic fields. Not just that of the Earth, but those generated or distorted by ferrous metals or electric currents.
So when it came time to design a heater for the IMU to stabilize the temperature I had to figure out how to do that without affecting the magnetometer. My first thought was to use a Peltier Junction or thermo-electric cooler/heater (TEC). The problem in that these are made from a ferrous metal. Next possibility was to use a Kapton heater. These are a thin plastic sheet with a printed trace on them that gets hot when current is applied. But they are expensive and would generate a magnetic field.
Then I stumbled on “BigCliveDotCom” on YouTube. He does teardowns of cheap items he buys on eBay. One such item included a film heater that might have worked well. The problem was I could not find a source for the material. The only source was to buy an adult toy from China with the heater material. So caution aside, I ordered one and found it interesting but not suitable for when I cut it down to size. (Not safe for work video here)
I also tried numerous ceramic and film resistors from DigiKey. They all had problems with size or magnetic fields.
Having just learned to use Kicad for PCB layout and using a service like OSH-Park to make PCBS, I decide to make a heater. I laid out a board with an grid or big fat 0805 smt resistors. To counter the magnetic field problem, I arranged them on the board so that each resistor’s current flowed in the opposite direction of its neighbor to cancel out the fields. The PCB is just a bit bigger than the IMU so that I can sandwich the IMU between two heaters. I then have some AeroGel cloth I could use to insulate the heater from the rest of the world.
Today’s test indicates that the heater has essentially no effect on the magnetometer. I recorded the data from the three channels and turned on and off the current. I was able to heat the chip to over 100F and saw no variation in the output.
The following pictures were taken on quad paper for scale. The grid is even 1/4 inch.
If you are interested, the design can be found here.