FAQs for the TCM family
- Can I calibrate out a motor?
- Can PNI's sensors be used to build detection devices?
- Do I need to re-calibrate when I change locations?
- Do I need to send a kStopCal after my last sample point is taken?
- Does the TCM3/5 have other output formats besides the binary such as ASCII or NMEA 0183?
- Does the TCM3/5 support automatic data push on boot up?
- How do I change the baud rate of the module?
- How is a magneto-inductive (MI) sensor different from a fluxgate?
- How is a magneto-inductive (MI) sensor different from a magneto-resistive (MR) sensor?
- How often do I need to calibrate my compass?
- How old is my data sample when I perform a kGetData command?
- How sensitive are your sensors
- I changed baud rates now I can’t talk with the module, how do I fix this?
- I changed the module baud rate to 230,400 baud and now I can not connect to the module, why?
- I do not get a z score greater than 50%, why?
- I launch TCMStudio and get the error “Can’t load library Quesa.dll”, how do I fix this?
- I pressed the “Clear” button but when I cycle power the old user calibration is back, how do I clear it?
- I receive a “NIL Object error” when I boot TCMStudio, how do I correct this?
- I receive back “NaN.0“ for heading when using TCMStudio or “NaN.0”
- I see latency in the data output, why?
- I see latency in the output data, why?
- In TCMStudio I see a “Poll Time” option in the Acquisitions Settings however there is no command in the manual for this, why?
- Is there a table that shows how to connect a TCM to the COM port of a computer?
- Locating the module within a system – distortions.
- My application is battery powered. Will the batteries have any effect on the sensors performance?
- The TCM2 had analog output available, do any of the current products offer this?
- The area I want to mount the sensors/module is near a motor, is that going to be a problem?
- The example code in the manual does not include the files SystemSerPort.h, Processes.h, and TickGenerator.h, can I get these?
- User calibration score – if x and y are pitch and roll what is z?
- What are the power requirements of the TCM3 board? (Applies to TCM2.6/3/5)
- What incoming test / inspection can we perform on the module?
- What is a PNI digital compass?
- What is the Std. deviation part of the calibration score and what is an acceptable value?
- What is the difference between Hard-iron and Soft-iron?
- What is the difference between a 2-axis and a 3-axis compass?
- What is the difference between magnetic north and true north?
- What is the factory default baud rate for the TCM3/5 series?
- When using TCMStudio35 I receive “---.-“ on the “Test” page and “NaN.0” on the data logger page for heading, what is wrong?
- Will subsequent calibrations add to the current calibration? (New family: TCM2.5/2.6/3/5/5L)
FAQs for the TCM 3
- Do I need to send a kStopCal after my last sample point is taken?
- Does the TCM3/5 have other output formats besides the binary such as ASCII or NMEA 0183?
- Does the TCM3/5 support automatic data push on boot up?
- How old is my data sample when I perform a kGetData command?
- How sensitive are your sensors
- I changed the module baud rate to 230,400 baud and now I can not connect to the module, why?
- I do not get a z score greater than 50%, why?
- I receive back “NaN.0“ for heading when using TCMStudio or “NaN.0”
- I see latency in the data output, why?
- Is there more information on how to calculate the Float32 values or the CRC-16 output by the TCM3 and TCM5 modules?
- Locating the module within a system – distortions.
- The TCM2 had analog output available, do any of the current products offer this?
- The example code in the manual does not include the files SystemSerPort.h, Processes.h, and TickGenerator.h, can I get these?
- User calibration score – if x and y are pitch and roll what is z?
- What are the power requirements of the TCM3 board? (Applies to TCM2.6/3/5)
- What incoming test / inspection can we perform on the module?
- What is the Std. deviation part of the calibration score and what is an acceptable value?
- What is the factory default baud rate for the TCM3/5 series?
- Will subsequent calibrations add to the current calibration? (New family: TCM2.5/2.6/3/5/5L)
Can I calibrate out a motor?
No, this is a transient distortion and transients can not be calibrated out.
Can PNI's sensors be used to build detection devices?
Yes. PNI's magneto-inductive sensors have been used in a number of detection applications; some of the most common being the detection of a car passing by a specific area. Our sensors have also been used in applications where objects from as small as a bullet to as large as an ocean going ship have needed to be detected.
Do I need to re-calibrate when I change locations?
No, re-calibration is not necessary. Compassing is ratiometric, so when the total field strength changes the sensors change proportionately and the heading will still calculate correctly.
Do I need to send a kStopCal after my last sample point is taken?
No, the kStopCal is better described as an abort calibration. Calibration will automatically finish after the last calibration point is taken.
Does the TCM3/5 have other output formats besides the binary such as ASCII or NMEA 0183?
No, the TCM3/5 models are only offered with the binary protocol. The user can write a translator to accomplish this though.
Does the TCM3/5 support automatic data push on boot up?
No it doesn’t, a command is required to start the pushing of data. (TCM2.x supports this feature).
How do I change the baud rate of the module?
While communicating with the module: on the “Connection” page, in “Module” box press the down arrow next to the currently displayed baud rate and select the desired baud rate. TCM2.5/2.6 takes affect immediately, TCM3/5 series requires pressing the “Power Down” button or re-booting of the module.
How is a magneto-inductive (MI) sensor different from a fluxgate?
To measure a magnetic field, a fluxgate needs to be driven into and out of saturation whereas PNI’s magneto-inductive sensor serves as the inductive element in a low-power L/R relaxation oscillator. This oscillator has an output that is directly proportional to the strength of the measured magnetic field. Since there is no need to drive the magneto-inductive sensor into and out of saturation the circuit design is far less complicated and the power consumption is greatly reduced.
The inherently digital nature of the output signal has the additional benefit of removing the need for complex and costly signal conditioning and analog-to-digital circuitry.
How is a magneto-inductive (MI) sensor different from a magneto-resistive (MR) sensor?
Much like a fluxgate, a magneto-resistive sensor requires a much more complex interference circuit than PNI’s magneto-inductive sensor. Power draw also becomes an issue, especially when the system is intended to operate for extended periods on battery power. A typical MR sensor implementation requires 3 volts minimum with a current draw of 6.2 mA minimum as well as 600 mA current pulses for reset at least once per second during use, and once per reading minimum. A typical PNI magneto-inductive circuit operates at 3 volts standard with 2.2 volts available and 1.8 volts possible. With a current draw as low as 0.5 mA, the PNI magneto-inductive sensor solution is well suited for ultra low power applications.
Another important difference between magneto-resistive and magneto-inductive sensor technology is their dynamic range. PNI’s MI sensors have a dynamic range that is approximately 100 times greater than that of the magneto-resistive sensors. This increased range allows for the ability to calibrate out large magnetic distortions and gives the MI sensor much better resolution over a greater range of operating conditions.
How often do I need to calibrate my compass?
Typically the need for recalibration is due to system changes, the compass itself can go years without needing re-calibration. If the system changes magnetically the compass would need a new user-calibration. System changes which would require re-calibration include becoming magnetized, swapping out ferrous components if they are not magnetically the same or re-locating components.
How old is my data sample when I perform a kGetData command?
If you do not have flush filtering ON then the sample will be 33msec or less old. The module is sampling at a typical 30Hz in the background, when a sample request is received it sends the most recently completed sample which at the oldest would be the 1/30Hz. If you flush the filters then only the first sample is this way and there would be a delay to collect the remaining samples to fill the filter based on the number of filter taps selected. The number of data components selected does not affect the time.
How sensitive are your sensors
The distance of the object from the magnetic sensor will depend on what you want to measure and how accurately. The sensors are very sensitive so can pick up small changes in the magnetic field such as the earth field. However, the closer you are the better it will measure small changes or movements of that object. The sensors do have a certain range of measurement so; you need to make sure the object doesn't saturate the sensors. The best way to determine the desired distance is to first mount 3 sensors in X, Y, Z axis and make some measurements.
Regarding the question on how much surface exposure… Well magnetic fields are vectors which means it has direction and amplitude. There is no minimum surface exposure needed as long as the axis of measurement is not perpendicular to the sensor. To measure the magnetic field we recommend the use of 3 sensors oriented 90 degrees apart. This will ensure that all magnetic field vectors are measurable.
I changed baud rates now I can’t talk with the module, how do I fix this?
You must now change the computers baud rate to match the modules. On the “Connection” page in “Computer” box change baud rate to that of the module.
I changed the module baud rate to 230,400 baud and now I can not connect to the module, why?
Most computers do not support the 230,400 baud rate (even if it shows up in the choices of device manager!) using the comm port even though the module can. A USB converter can achieve the 230,400 baud rate. If the computer is not able to use the comm port at this rate and no USB converter is available selecting this baud rate will result in a non-recoverable condition by the customer and the module will need to be sent to PNI to recover or the customer will need to get a USB converter.
I do not get a z score greater than 50%, why?
The module is not being turned upside down so the z axis sensor is only covering the top half of the sphere.
I launch TCMStudio and get the error “Can’t load library Quesa.dll”, how do I fix this?
a. The Quesa.dll file available on the Studio CD or PNI web page must be moved / copied to the Windows/System32 folder.
b. The new Installer version of Studio will automatically place this file in the correct directory for you, you should upgrade to the latest version.
I pressed the “Clear” button but when I cycle power the old user calibration is back, how do I clear it?
TCMStudio 35 V3.2 (or higher) must be used, on the “Calibration” tab press “Clear” then “Save”, the save next to the clear must be used.
I receive a “NIL Object error” when I boot TCMStudio, how do I correct this?
This is caused when the original comm port the TCMStudio application used or found is no longer available. You will need to erase the preferences file “TCMStudio2.pref” for TCMStudio 3 & 5 and “TCMStudioFor2x.pref” for TCMStudio2.x which are located in C:\Documents and Settings\”username”\Application Data. Note this is a hidden file and you must turn on view hidden in the folder options. These files are created at launch of the application and will be replaced the next time the application is used and comm port selected.
I receive back “NaN.0“ for heading when using TCMStudio or “NaN.0”
A user calibration was stopped, a new calibration needs to be completed or a clear and save (TCMStudio V3.2 or using customer’s software).
I see latency in the data output, why?
If the TCM is in “Push” mode and the host system can’t keep up with processing the data it will start to buffer.
I see latency in the output data, why?
If the module is running in “Push” mode with no delays TCMStudio is not able to process the data fast enough and will start to buffer the data.
In TCMStudio I see a “Poll Time” option in the Acquisitions Settings however there is no command in the manual for this, why?
This is not in the manual because Poll time means you get one sample at time of request, so when the customer writes the program they know what they are programming this time loop to be. For Studio we implemented the Poll function so that it loops requesting and receiving samples continuously, the "Poll Time" lets the user add a time delay in this mode which would normally just be a delay in their program. It is therefore not actually a module command or setting but a delay in Studio to simulate the customer's program requesting the data at different intervals.
Is there a table that shows how to connect a TCM to the COM port of a computer?
To get a good understanding of the RS232 specification, please visit
The RS232 Standard web page.
An application note has been created to show the proper way to connect a TCM
module to either a DB9 or DB25 COM port of a computer: TCM to Computer COM Port
Locating the module within a system – distortions.
Modules should be located as far away as possible from sources of transient distortion, a motor is an example of this type of distortion. Modules which do not have soft iron correction should also be kept as far away as possible from ferrous metal such as steel and iron. The range of distortion affect of a particular component can be determined by testing, the module is placed running in a fixed location while the component being analyzed is moved closer while observing the module output for changes. All module locations should be analyzed for magnitude, even though modules are hard iron compensated testing should be done to verify the calibrated range is not exceeded. This is done by mounting the un-calibrated (user calibrated) module in the desired location then rotating, pitching and rolling in as many angles as possible while observing the magnetometer outputs and verifying they do not exceed the calibrated range.
My application is battery powered. Will the batteries have any effect on the sensors performance?
That depends on the location of the battery relative to the sensors and on the type of battery used. It is recommended that the sensors be mounted as far away from the batteries as possible. As to the types of batteries, Lithium has the least magnetic signature, followed by Alkaline, with NiCad (Nickel-Cadmium) having the highest magnetic signature. Also, be careful when using any type of rechargeable battery, as they tend to change characteristics during discharge and after each charging cycle.
The TCM2 had analog output available, do any of the current products offer this?
No unfortunately they do not.
The area I want to mount the sensors/module is near a motor, is that going to be a problem?
Since electric motors usually generate magnetic fields that are much stronger than the earth’s field, being in close proximity to the sensors could cause a hard-iron type distortion. It is recommended that the sensors be moved as far away from the motors as possible, but if that is not possible then shielding the motor may help to reduce the distortion levels. Unfortunately, shielding the motor may cause a soft-iron distortion due to the materials used. Trial and error may be needed to find a location and/or shielding method that will work best in your application.
The example code in the manual does not include the files SystemSerPort.h, Processes.h, and TickGenerator.h, can I get these?
Unfortunately these files are not available as the program was written on a non-PC computer and some of these are built in functions and not compatable. The comments in the code should explain what is expected to be sent or received from these functions so that you can write this section for your specific platform.
User calibration score – if x and y are pitch and roll what is z?
The calibration score does not represent planes of motion but rather sensor coverage.
What are the power requirements of the TCM3 board? (Applies to TCM2.6/3/5)
Though the current draw is <20mA RMS in continuous sampling mode the processor has a peak current draw of 60mA and therefore any regulator used will need to be able to source these spikes. Additionally if configuration changes or calibration is performed from the host system a save is required, saving to flash will draw additional power higher than operating conditions.
What incoming test / inspection can we perform on the module?
The appropriate TCMStudio can be used as an incoming functional test. This will test communication and functionality. They should connect to the module then go to the “Test” page, press “Go” and verify motion and the motion should be smooth with no delays. The module should then be halted. Please note that implementing this may change the module configuration, they will need to verify that this is acceptable or will the module need to be reset before installation into the system.
What is a PNI digital compass?
PNI digital compasses use a patented magnetic sensor technology that was developed by PNI Corporation for the U.S. Military. This technology is called Magneto-Inductive and is the greatest advance in compass technology since the fluxgate was invented 60 years ago. It electronically senses the difference in the earth's field from your system's magnetic field, then an on-board microprocessor electronically subtracts out your system's magnetic fields, reporting highly accurate compass readings. Magneto-Inductive sensor technology has many advantages over other technologies, including enhanced performance, less power consumption and lower cost. These advantages have made Magneto-Inductive sensor technology the choice for many high-profile compass applications including GM, Ford, and DaimlerChrysler automobiles, Polaris jet skis, Bayliner boats and Timex watches
What is the Std. deviation part of the calibration score and what is an acceptable value?
This is the standard deviation of the difference between the calculated and the achieved correction. A preferred score is below 0.1 however in systems with complex distortion fields a score of 0.2 may be the best achievable.
What is the difference between Hard-iron and Soft-iron?
Hard-iron distortions are caused by permanent magnets and magnetized steel or iron object within close proximity to the sensors. This type of distortion will remain constant and in fixed location relative to the sensors for all heading orientations. Hard-iron distortions will add a constant magnitude field component along each axis of sensor output and can be easily compensated for using a simple subtraction method.
Soft-iron distortions are the result of interactions between the earth’s magnetic field and any magnetically “soft” material within close proximity to the sensors. In technical terms, soft materials have a high permeability. The permeability of a given material is a measure of how well it serves as a path for magnetic lines of force, relative to air, which has an assigned permeability of one. The V2Xe 2-axis digital compass, as well as PNI’s high performance 3-axis instruments, feature soft- iron and hard-iron correction.
What is the difference between a 2-axis and a 3-axis compass?
A 2-axis compass uses 2 magnetic sensors placed at a right angle to each other with the sensing axes level with respect to gravity. A compass made this way determines heading by a simple arctan function of the output of each sensor and is accurate only when held to a level orientation. Once the compass is tilted heading errors will occur that will vary depending on the location on earth the compass is at the time. A 3-axis compass uses 3 magnetic sensor mounted orthogonally and a tilt sensor to determine the gravity vector. This type of compass, when properly calibrated, will use the input of all the sensors to determine accurate heading regardless of the tilt applied, within the range of the tilt sensor. PNI produces both 2-axis and 3-axis compass modules and the sensors needed to implement your own solution.
What is the difference between magnetic north and true north?
In most places on earth, true or map north is not the same location as magnetic north. This is because the magnetic fields of earth are always slowly changing. If you want to find the exact difference (called declination) between magnetic and true north in your area, contact the National Geophysical Data Center in Boulder, Colorado, where you can get a declination based on the latitude and longitude of your location. To find out your latitude and longitude in the US, go to the US Census Bureau web page that supplies them based on city and state or zip code
What is the factory default baud rate for the TCM3/5 series?
38400 baud.
When using TCMStudio35 I receive “---.-“ on the “Test” page and “NaN.0” on the data logger page for heading, what is wrong?
A calibration was aborted (not completed), to clear a user calibration must be done and completed or a clear and save (next to clear button on V3.2 only) done.
Will subsequent calibrations add to the current calibration? (New family: TCM2.5/2.6/3/5/5L)
No they will not, every calibration will over-write the previous one.
Do I need to send a kStopCal after my last sample point is taken?
No, the kStopCal is better described as an abort calibration. Calibration will automatically finish after the last calibration point is taken.
Does the TCM3/5 have other output formats besides the binary such as ASCII or NMEA 0183?
No, the TCM3/5 models are only offered with the binary protocol. The user can write a translator to accomplish this though.
Does the TCM3/5 support automatic data push on boot up?
No it doesn’t, a command is required to start the pushing of data. (TCM2.x supports this feature).
How old is my data sample when I perform a kGetData command?
If you do not have flush filtering ON then the sample will be 33msec or less old. The module is sampling at a typical 30Hz in the background, when a sample request is received it sends the most recently completed sample which at the oldest would be the 1/30Hz. If you flush the filters then only the first sample is this way and there would be a delay to collect the remaining samples to fill the filter based on the number of filter taps selected. The number of data components selected does not affect the time.
How sensitive are your sensors
The distance of the object from the magnetic sensor will depend on what you want to measure and how accurately. The sensors are very sensitive so can pick up small changes in the magnetic field such as the earth field. However, the closer you are the better it will measure small changes or movements of that object. The sensors do have a certain range of measurement so; you need to make sure the object doesn't saturate the sensors. The best way to determine the desired distance is to first mount 3 sensors in X, Y, Z axis and make some measurements.
Regarding the question on how much surface exposure… Well magnetic fields are vectors which means it has direction and amplitude. There is no minimum surface exposure needed as long as the axis of measurement is not perpendicular to the sensor. To measure the magnetic field we recommend the use of 3 sensors oriented 90 degrees apart. This will ensure that all magnetic field vectors are measurable.
I changed the module baud rate to 230,400 baud and now I can not connect to the module, why?
Most computers do not support the 230,400 baud rate (even if it shows up in the choices of device manager!) using the comm port even though the module can. A USB converter can achieve the 230,400 baud rate. If the computer is not able to use the comm port at this rate and no USB converter is available selecting this baud rate will result in a non-recoverable condition by the customer and the module will need to be sent to PNI to recover or the customer will need to get a USB converter.
I do not get a z score greater than 50%, why?
The module is not being turned upside down so the z axis sensor is only covering the top half of the sphere.
I receive back “NaN.0“ for heading when using TCMStudio or “NaN.0”
A user calibration was stopped, a new calibration needs to be completed or a clear and save (TCMStudio V3.2 or using customer’s software).
I see latency in the data output, why?
If the TCM is in “Push” mode and the host system can’t keep up with processing the data it will start to buffer.
Is there more information on how to calculate the Float32 values or the CRC-16 output by the TCM3 and TCM5 modules?
The Float32 values from the TCM3 and TCM5 modules are based on the IEEE std
754-1985.
To get more information on this and other standards just visit the IEEE Standards site.
Two other very useful sites regarding Float32 values are the IEEE-754 Floating-Point Conversion
site and the IEEE
Standard 754 Floating Point Numbers site.
Locating the module within a system – distortions.
Modules should be located as far away as possible from sources of transient distortion, a motor is an example of this type of distortion. Modules which do not have soft iron correction should also be kept as far away as possible from ferrous metal such as steel and iron. The range of distortion affect of a particular component can be determined by testing, the module is placed running in a fixed location while the component being analyzed is moved closer while observing the module output for changes. All module locations should be analyzed for magnitude, even though modules are hard iron compensated testing should be done to verify the calibrated range is not exceeded. This is done by mounting the un-calibrated (user calibrated) module in the desired location then rotating, pitching and rolling in as many angles as possible while observing the magnetometer outputs and verifying they do not exceed the calibrated range.
The TCM2 had analog output available, do any of the current products offer this?
No unfortunately they do not.
The example code in the manual does not include the files SystemSerPort.h, Processes.h, and TickGenerator.h, can I get these?
Unfortunately these files are not available as the program was written on a non-PC computer and some of these are built in functions and not compatable. The comments in the code should explain what is expected to be sent or received from these functions so that you can write this section for your specific platform.
User calibration score – if x and y are pitch and roll what is z?
The calibration score does not represent planes of motion but rather sensor coverage.
What are the power requirements of the TCM3 board? (Applies to TCM2.6/3/5)
Though the current draw is <20mA RMS in continuous sampling mode the processor has a peak current draw of 60mA and therefore any regulator used will need to be able to source these spikes. Additionally if configuration changes or calibration is performed from the host system a save is required, saving to flash will draw additional power higher than operating conditions.
What incoming test / inspection can we perform on the module?
The appropriate TCMStudio can be used as an incoming functional test. This will test communication and functionality. They should connect to the module then go to the “Test” page, press “Go” and verify motion and the motion should be smooth with no delays. The module should then be halted. Please note that implementing this may change the module configuration, they will need to verify that this is acceptable or will the module need to be reset before installation into the system.
What is the Std. deviation part of the calibration score and what is an acceptable value?
This is the standard deviation of the difference between the calculated and the achieved correction. A preferred score is below 0.1 however in systems with complex distortion fields a score of 0.2 may be the best achievable.
What is the factory default baud rate for the TCM3/5 series?
38400 baud.
Will subsequent calibrations add to the current calibration? (New family: TCM2.5/2.6/3/5/5L)
No they will not, every calibration will over-write the previous one.

