This circuit shows how the ADuC7122 precision analog microcontroller can be used in an accurate thermistor temperature monitoring application. The ADuC7122 integrates a multichannel 12-bit SAR ADC, twelve 12-bit DACs, a 1.2 V internal reference, as well as an ARM7 core, 126 kB flash, 8 kB SRAM, and various digital peripherals, such as UART, timers, SPI, and two I2C interfaces. The ADuC7122 is connected to a 4.7 kΩ thermistor.
Due to the small form factor of the ADuC7122 (7 mm × 7 mm, 108-ball BGA package) the entire circuit will fit on an extremely small PCB, thus further reducing cost.
Similar in function to an RTD, thermistors are low cost temperature sensitive resistors and are constructed of solid semiconductor materials, which exhibit a positive or negative temperature coefficient. Thermistors are inexpensive and have high sensitivity. They detect small variations in temperature, which could not be observed with an RTD or a thermocouple. However, thermistors are highly nonlinear; thus, they are limited to applications with very narrow temperature ranges if linearization techniques are not applied. Circuit linearization techniques can be accomplished in software; however, that will not be discussed here.
Despite the powerful ARM7 core and high speed SAR ADCs, the ADuC7122 still provides a low power solution. With the ARM7 core running at 326.4 kHz and the primary ADC active and measuring the external temperature sensor, the entire circuit typically consumes 7 mA. Between temperature measurements, the ADC and/or the microcontroller can be switched off to further save on power consumption.
Figure 1. ADuC7122 Used As a Temperature Monitor Interfaced to a Thermistor (Simplified Schematic, All Connections Not Shown)
The circuit shown in Figure 1 is powered entirely from the USB interface. The 5 V supply from the USB is regulated to 3.3 V using the ADP3333 3.3 V low dropout linear regulator. The regulated 3.3 V supplies the DVDD voltage to the ADuC7122. The AVDD supply to the ADuC7122 has additional filtering as shown. A filter is also placed on the USB supply at the input of the linear regulator.
The following features of the ADuC7122 are used in this application:
The thermistor used in the circuit is a 4.7 kΩ resistor, model number NCP18XM472. It is available in a 0603 surface-mount package. The thermistor used in the circuit in Figure 2 has the following specifications at 25°C: β = 3500 (the β parameter describes resistance as a function of temperature), resistance (R25) = 4.7 kΩ
The USB interface to the ADuC7122 is implemented with an FT232R UART to USB transceiver, which converts USB signals directly to the UART protocol.
In addition to the decoupling shown in Figure 1, the USB cable itself should have a ferrite for added EMI/RFI protection. The ferrite beads used in the circuit were Taiyo Yuden, BK2125HS102-T, which have an impedance of 1000 Ω at 100 MHz.
The circuit must be constructed on a multilayer PC board with a large area ground plane. Proper layout, grounding, and decoupling techniques must be used to achieve optimum performance (see Tutorial MT-031, Tutorial MT-101, and the ADuC7122 Evaluation Board layout).
The input thermistor circuit in Figure 2 is designed to produce accurate temperature measurements from 0°C to 90°C. Note that this system contains no temperature calibration. This circuit contains a simple thermistor circuit that does not contain circuit linearization. If this circuit employed linearization techniques, it could function over a broader range of temperatures; however, this would decrease the resolution of the sensor
Figure 2. Simple Temperature Sensor Circuit Implemented with the ADuC7122
The circuit in Figure 2 is setup in a voltage divider configuration. This will allow us to transform the ADC result, D, into a measurement of the resistance of RTH (thermistor) using the following formulas:
Once the resistance of the thermistor has been calculated, the Steinhart-Hart equation can be used to determine the current temperature of the sensor.
Using the following formula the ADuC7122 is able to determine the sensor temperature:
T2 = unknown temperature
T1 = 298K
β = β parameter of the thermistor @ 298K or 25°C. β = 3500
R25 = resistance of thermistor @ 298K or 25°C. R25 = 4.7 kΩ
RTH = resistance of thermistor @ unknown temperature as calculated by formula above
Figure 3 plots the response of the ADuC7122 to the thermistor sensor detailed in Figure 2 over temperature.
The source code and a HyperTerminal configuration file used to test the attached circuit can be downloaded as a zip file at www.analog.com/CN0153_Source_Code.
The UART is configured for a baud rate of 9600, 8 data bits, no parity, no flow control. If the circuit is connected directly to a PC, a communication port viewing application such as HyperTerminal can be used to view the results sent by the program to the UART. See Figure 4. The source code is commented to make it easier to understand and manipulate. The code was compiled and tested using the Keil μVision 3 application.
Figure 3. ADuC7122 Thermistor Sensor Measured Output (Converted to Volts) with ADC0 vs. Temperature
The ADP3333 (3.3 V) can be replaced with the ADP120 (2.5 V), which has a wider operating temperature range (−40°C to +125°C) and consumes less power (typically 20 μA vs. 70 μA) but has a lower maximum input voltage range (5.5 V vs. 12 V). Note that the ADuC7122 can be programmed or debugged via a standard JTAG interface. For a standard UART to RS-232 interface, the FT232R transceiver could be replaced with a device such as the ADM3202, which requires a 3 V power supply.