USB Based Temperature Monitor Using the ADuC7122 Precision Analog Microcontroller and an External 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.
The following features of the ADuC7122 are used in this application:
- 12-bit SAR ADC
- ARM7TDMI® core: The powerful 16-/32-bit ARM7 core with integrated 126 kB flash and SRAM memory runs the user code that configures and controls the ADC, processes the ADC conversions from the thermistor sensor, and controls the communications over the UART/USB interface.
- UART: The UART was used as the communication interface to the host PC.
- Two external switches\buttons (not shown) are used to force the part into its flash boot mode: By holding DOWNLOAD low and toggling the RESET switch, the ADuC7122 will enter boot mode instead of normal user mode. In boot mode, the internal flash may be reprogrammed through the I2CWSD tool utilizing the USB interface.
- BUF_VREF: The band gap reference also connects through buffers to the BUF_VREF1 and the BUF_VREF2 pins, which can be used as a reference for other circuits in the system. A minimum of 0.1 μF capacitor should be connected to these pins to reduce noise.
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.
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 thermistor circuit described here can be adapted to operate with other precision analog microcontrollers, such as the ADuC7020 series, the ADuC7023, and the ADuC7061 series.
|ADUC7022||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADP3333||High Accuracy Ultralow IQ, 300 mA, anyCAP® Low Dropout Regulator||
|ADUC7021||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7020||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7019||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7122||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7025||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7028||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7023||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI MCU with Enhanced IRQ Handler||
|ADUC7029||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI MCU||
|ADUC7121||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI MCU||
|ADUC7024||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7027||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||
|ADUC7026||Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMI® MCU||