- Data type: FLOAT32 (type index = 3)
- Read-only
The T7 has 2 fixed current source terminals useful for measuring resistance (thermistors, RTDs, resistors). The 10UA terminal provides approximately 10 µA and the 200UA terminal provides approximately 200 µA, but the actual values should be read from the calibration constants, or better yet measured in real-time using a fixed shunt resistor.
Using the equation V=IR, with a known current and voltage, it is possible to calculate the resistance of the item in question. Figure 12-1 shows a simple setup measuring 1 resistor.
The factory value of each current source is noted during calibration and stored with the calibration constants on the device. These can be viewed using the Device Info tab in Kipling, or read programmatically. Note that these are fixed constants stored during calibration, not some sort of real-time readings.
To read the constants, read from the following registers:
Example:
To read the factory value of the 200uA current source, perform a read of Modbus address 1902, and the result would be in the form of a floating point number, e.g. 0.000197456 amps.
Multiple resistances can be measured by putting them in series and measuring the voltage across each. Some applications might need to use differential inputs to measure the voltage across each resistor, but for many applications it works just as well to measure the single-ended voltage at the top of each resistor and subtract in software.
Figure 12-1 shows a simple setup measuring 1 resistor. If R1=3k, the voltage at AIN0 will be 0.6 volts.
Figure 12-2 shows a setup to measure 3 resistors using single-ended analog inputs. If R1=R2=R3=3k, the voltages at AIN0/AIN1/AIN2 will be 1.8/1.2/0.6 volts. That means AIN0 and AIN1 would be measured with the ±10 volt range, while AIN2 could be measured with the ±1 volt range. This points out a potential advantage to differential measurements, as the differential voltage across R1 and R2 could be measured with the ±1 volt range, providing better resolution.
Figure 12-3 shows a setup to measure 2 resistors using differential analog inputs. AIN3 is wasted in this case, as it is connected to ground, so a differential measurement of AIN2-AIN3 is the same as a single-ended measurement of AIN2. That leads to Figure 12-4, which shows R1 and R2 measured differentially and R3 measured single-ended.
Maximum load resistance: The current sources can drive about 3 volts max, thus limiting the maximum load resistance to about 300 kΩ (10UA) and 15 kΩ (200UA). Keep in mind that high source resistance could cause settling issues for analog inputs.
Using a fixed resistor to calculate actual current: For some applications the accuracy and temperature coefficient of the current sources is sufficient, but for improvement a fixed resistor can be used as one of the resistors in the figures above. The Y1453-100 and Y1453-1.0K from Digi-Key have excellent accuracy and very low tempco. By measuring the voltage across one of these you can calculate the actual current at any time.
Handling load changes resulting in noise: The current sources are not particularly fast in reacting to load changes. This can show up as noise when rapidly sampling multiple channels using the same current source. Improve behavior by adding a 1 µF ceramic capacitor from the current source to GND and/or increasing settling time.
Temperature coefficients: Figures 12-5 and 12-6 show the typical current source output variation over temperature. Both sources typically have low temperature coefficients at or near 25C. Beyond 25C, the temperature coefficient variation may need to be accounted for, depending on application requirements.
Figure 12-5. Typical temperature coefficient values over operating temperature range . |
Figure 12-6. Typical current source deviation from 25C output over operating temperature range [1]. |
Assume that R1 in Figure 12-1 is a PT100 RTD. A PT100 RTD is 100 ohms at 0 degC. The response of an RTD is nonlinear, but the linear slope 0.384 ohms/degC works well from about -40 to +150 degC. That leads to the following expression:
R = (0.384 * DegC) + 100
...which can be rearranged to:
DegC = (2.604 * R) - 260.4
We are determining R by measuring the voltage that results from a known current passed through R, that is R = V/I, so we can say:
DegC = (2.604 * V/I) - 260.4
This tells us that the slope is 2.604/I and the offset is -260.4. To determine I, you can just use 0.0002 amps, or use the factory calibration value read from CURRENT_SOURCE_200UA_CAL_VALUE, or use a precision fixed resistor as mentioned above to measure I in real time. Assume we read the factory calibration value as 0.000200 amps, and thus use a constant slope of 2.604/0.0002 = 13020. We can now use the AIN-EF Offset and Slope feature to apply this slope and offset:
AIN0_EF_INDEX = 1 // feature index for Offset and Slope
AIN0_EF_CONFIG_D = 13020.0 // slope
AIN0_EF_CONFIG_E = -260.4 // offset
Now reads of AIN0_EF_READ_A will return (13020.0 * volts) - 260.4.
Note that you can come up with your own slope and offset for your temperature region of interest. For example, we made this Google Spreadsheet and decided that Slope=2.720 (degC/ohm) and Offset=-277.5 works best for the region of 100 to 300 degC.
Note that a PT1000 simply has 10x the response of a PT100 (~3.84 ohms/degC). The offset still works out to -260.4, but the slope is 0.260.