Design Resources

Design & Integration Files

  • Schematic
  • Bill of Materials
  • Gerber Files
  • PADS Files
  • Assembly Drawing
Download Design Files 1365 kB

Evaluation Hardware

Part Numbers with "Z" indicate RoHS Compliance. Boards checked are needed to evaluate this circuit

  • EVAL-CN0319-EB1Z ($119.00) 4 mA-to-20 mA, Loop Powered Temperature Monitor Using the Integrated PWM on the ADuCM360 Precision Analog Microcontroller
Check Inventory & Purchase

Features & Benefits

  • 4-20mA thermocouple temperature monitor
  • Cold junction compensation
  • Loop powered

Circuit Function & Benefits

The circuit shown in Figure 1 is a complete loop powered thermocouple temperature measurement system where the 4 mA-to-20 mA output current is controlled using the PWM function of a precision analog microcontroller.

Figure 1. ADuCM360 Controlling 4 mA-to-20 mA Loop-Based Temperature Monitor Circuit. (Simplified Schematic: All Connections and Decoupling Not Shown)

This circuit provides a low cost solution to temperature monitoring because most of the circuit functionality is integrated into the ADuCM360 precision analog microcontroller, including dual 24-bit Σ-Δ ADCs, the ARM Cortex™-M3 processor core, and the PWM/DAC features for controlling the 4 mA-to-20 mA loop for loop voltages up to 28 V.

The ADuCM360 is connected to a Type T thermocouple and a 100 Ω platinum resistance temperature detector (RTD). The RTD is used for cold junction compensation. The low power Cortex-M3 core converts the ADC readings to a temperature value. The Type T thermocouple temperature range supported is −200°C to +350°C, and this temperature range is converted to an output current range of 4 mA to 20 mA.

This circuit is similar to the circuit in Circuit Note CN-0300 with the additional benefit of the higher resolution of the PWM driving the 4 mA-to-20 mA loop. The PWM-based output provides 14 bits of resolution. For details on the temperature sensor interface to the ADC and on linearization techniques for the RTD measurements, see Circuit Note CN-0300 and the AN-0970 Application Note.

Circuit Description

The circuit is powered via the ADP1720 linear regulator, which regulates the loop + supply to 3.3 V for the ADuCM360, the OP193 op amp, and the optional ADR3412 reference.

Temperature Monitor

This part of the circuit is similar to the temperature monitor circuit described in CN-0300. The following features of the ADuCM360 are used:

  • The 24-bit Σ-Δ ADC with a PGA set for a gain of 32 in the software for the thermocouple and the RTD. ADC1 switches continuously between sampling the thermocouple and the RTD voltages.
  • Programmable excitation current sources force a controlled current through the RTD. The dual current sources are configurable in steps from 0 μA to 2 mA. For this example, a 200 μA setting is used to minimize the error introduced by the RTD self-heating.
  • An internal 1.2 V reference is provided for the ADC in the ADuCM360. When measuring the thermocouple voltage, the internal voltage reference is used due to its precision.
  • An external voltage reference for the ADC in the ADuCM360. When measuring the RTD resistance, a ratiometric setup was used where an external reference resistor (RREF) was connected across the external VREF+ and VREF− pins. The on-chip reference input buffer is enabled because the reference source in this circuit is high impedance. The on-chip reference buffer means no external buffer is required to minimize input leakage effects.
  • A bias voltage generator (VBIAS). The VBIAS function is used to set the thermocouple common-mode voltage to AVDD_REG/2 (900 mV). Again, this removes the need for external resistors to set the thermocouple common-mode voltage.
  • The ARM Cortex-M3 core. The powerful 32-bit ARM core with integrated 126 kB flash and 8 kB SRAM memory runs the user code that configures and controls the ADCs and converts the ADC conversions from the thermocouple and RTD inputs to a final temperature value. It also controls the PWM output driving the 4mA to 20 mA loop. For extra debug purposes, it also controls the communications over the UART/USB interface.


  • The 16-bit PWM output is externally buffered using OP193, and is controlling an external NPN transistor, BC548. By controlling the VBE voltage of this transistor, the current passing through a 47.5 Ω load resistor can be set to the desired value. This provides better then ±0.5°C accuracy (between –200°C to +350°C) on the 4 mA-to-20 mA output (see test results).
  • The internal DAC is used to provide the 1.2 V reference to the OP193. Alternatively, the ADR3412, a 1.2 V precision reference could be used, for higher precision over temperature. This external reference consumes similar power than the internal DAC (~50 μA). See current consumption measurement tests section.

The 4 mA-20 mA loop is controlled by the ADuCM360 on-chip 16-bit PWM (pulse width modulator). The duty cycle of the PWM is configured in software to control the voltage across the 47.5 Ω RLOOP resistor, which in turn sets the loop current. Note the top of RLOOP connects to the ADuCM360 ground. The bottom of RLOOP connects to the loop ground. Because of this, the current due to the ADuCM360, ADP1720, ADR3412 and OP193, plus the current set by the filtered PWM output, flows across RLOOP.

The voltage at the junction of R1 and R2 can be expressed:

VR12 = (VRLOOP + VREF) × R2/(R1 + R2) − VRLOOP

After the loop settles:

VIN = VR12

Since R1 = R2:


Full-scale current will flow when VIN = 0, at which point VRLOOP = VREF. Hence, full-scale current is VREF/RLOOP, or ≈24 mA. When VIN = VREF/2, no current will flow.

The OP193 amplifier impedance at VIN is high and will not load the PWM filtered output. The amplifier output varies only a small amount of about 0.7 V.

Performance at the range extremes, 0 mA to 4 mA, and 20 mA to 24 mA, is not critical; therefore, the op amp does not require good performance at the supply rails.

Absolute values of R1 and R2 are not critical. However, note that matching of R1 and R2 is important.

ADC1 is used for temperature measurements, therefore this circuit note is directly applicable to the ADuCM361 which has only one ADC. The EVAL-CN0319-EB1Z board includes the option for measuring the voltage at the point marked VR12 by using an input channel of ADC0 on the ADuCM360. This ADC measurement can be used as feedback for the PWM control software to adjust the 4 mA-to-20 mA current setting.

Programming, Debugging, and Testing

  • The UART is used as the communication interface to the host PC. This is used to program the on-chip flash. It is also used as a debug port and for calibrating the filtered PWM output.
  • Two external switches are used to force the part into its flash boot mode. By holding SD low and toggling the RESET button, the ADuCM360 enters boot mode instead of normal user mode. In boot mode, the internal flash can be reprogrammed through the UART interface.

Code Description

The link to the source code used to test the circuit can be found in the CN0319 Design Support Package at http://www.analog.com/CN0319-DesignSupport. The source code uses the function libraries provided with the example code.

Figure 2 shows the list of source files used in the project when viewed with the Keil μVision4 tools.

Figure 2. Source Files Viewed with Keil μVision4. 11386-002

Temperature Monitor

ADC1 is used for temperature measurements on the thermocouple and on the RTD. This section of the code is copied from Circuit Note CN-0300. Refer to this circuit note for more details.

Communication Section

The PWM filtered output needs to be adjusted in order to ensure 4 mA at minimum temperature and 20 mA at maximum temperature. A calibration routine is provided, it can be included or removed easily using the #define CalibratePWM parameter.

To calibrate the PWM, the interface board (USB-SWD/UART) must be connected to J1 and to the USB port on a PC. A COM port viewer program, such as HyperTerminal, can be used to view the calibration menus and step through the calibration routines.

When calibrating the PWM, connect the VLOOP+ and VLOOP– outputs to an accurate current meter. The first part of the PWM calibration routine adjusts the DAC to set a 4 mA output, and the second part of the PWM calibration routine adjusts the PWM to set a 20 mA output. The PWM code used to set a 4 mA and 20 mA output is stored to flash.

The UART is configured for a baud rate of 19200, 8 data bits, no parity, and no flow control. If the circuit is connected directly to a PC, a communication port viewing application, such as HyperTerminal or CoolTerm, can be used to view the results sent by the program to the UART, as shown in Figure 3.

To enter the characters required by the calibration routines, type the required character in the viewing terminal and this character will be received by the ADuCM360 UART port.

Figure 3. Output of HyperTerminal when Calibrating the PWM

After calibration, the demo code switches off the UART clock for further power saving.

Calibration coefficients are saved in Flash, therefore it is not necessary to run calibration each time the board is powered unless VLOOP level is changed.

A code flowchart is shown in Figure 4.

Figure 4. Code Flowchart

Common Variations

This circuit includes the footprint for HART communication and for an external reference.

Circuit Evaluation & Test

This document does not cover the temperature sensing section as this is already covered in CN-0300. The focus is in the performance of the temperature-to-current output. 

PWM Differential Nonlinearity (DNL)

The filtered PWM output DNL was first measured. The DNL graph in Figure 5 shows a better than 0.3 LSB typical performance in the critical 4 mA-to-20 mA range. These tests were conducted with a second order filter on the PWM output. Two 47 kΩ resistors and two 100 nF capacitors were used as shown in Figure 1.

Figure 5. Typical DNL Performance of Circuit

Temperature-to-Current Output

The setup shown in Figure 6 was used to test the communication section of the circuit.

Figure 6. Measurement Setup

The PC sends temperature values to the ADuCM360 via UART, and the ADuCM360 adjusts the PWM output accordingly. The current in the loop is measured and recorded.

A 1°C temperature increase corresponds to

(20 mA – 4 mA)/550 = 0.029029 mA.

Table 1. Temperature and Expected Current

Temperature in °C
Expected current in mA
4 mA
4 mA + 0.029029 mA

20 mA - 0.029029 mA
20 mA

The error in the current loop measured in CN-0300 (DAC controlled) and in CN-0319 (PWM controlled) is shown in Figure 7.

Figure 7. Error in Current Loop vs. Temperature Readings for DAC Control (CN-0300) and PWM Control (CN-0319)

These results show that after calibration, the accuracy of the PWM-controlled loop without feedback is better than with the DAC-controlled loop with feedback.

For higher accuracy, the feedback loop could be added. This would require using an ADuCM360 with the second ADC enabled to monitor the loop. This would increase current consumption (ADC0 on), and slow down the response time of the loop.

The update rate of the current loop depends on the CPU and ADC configuration. In the example code, the CPU speed is set to 1 MHz and the ADC frequency at 5 Hz. The ADC converts a number of samples on the RTD and on the thermocouple, before averaging the result. The number of samples is defined by the parameter SAMPLEN0. It is set to 8 by default in the example code. This gives a current loop update rate of 740 ms.

For faster response time of the loop, SAMPLEN0 can be reduced.

Current Consumption Measurement Tests

When operating normally, the entire circuit consumes 2 mA typically. When held in a reset state, the entire circuit consumes less than 550 μA.

To facilitate low power operation, the ADuCM360/ ADuCM361 core operating speed can be reduced by programming the internal CLKSYSDIV register that enable the low power systems which giving system clock is 8 MHz. Also programming the CLKCON0 register allows the core frequency of 16 MHz to be divided in binary multiples of 2 to 128. In this example code , a clock divide value of 8 is used, giving a core speed of 1 MHz.

The primary ADC is enabled with a gain of 32. The PWM and DAC are also enabled for communication on the loop.

All unused peripherals are disabled in order to minimize current consumption.

Table 2 gives a breakdown of the IDD current consumption for the entire circuit.

Table 2. Typical IDD Values for Components of Temperature Monitor Circuit

IDD Value at 25°C
ADuCM360/ ADuCM361
ADC1 On, Gain = 32, FADC = 5 Hz
CPU speed = 1 MHz
PWM On. 240 Hz
External reference generated by DAC.
Excitation current value to this figure.
Typical value is 200 µA.
All other peripherals off.
1.80 mA
ADP1720, 3.3 V Output Linear Regulator
OP193, Low Power Op Amp
Remaining Circuitry
Total Current Less Excitation Current
~100 µA
15 µA
50 µA
2.0 mA
For more details on the current consumption figures for the ADuCM360, see the AN-1111 Application Note.

Sample Products




Available Product
Models to Sample

ADR3412 Micro-Power, High-Accuracy 1.2V Voltage Reference

Contact ADI

ADUCM360 Low power precision analog microcontroller, ARM cortex M3 with dual sigma-delta ADCs


ADUCM361 Low Power Precision Analog Microcontroller, ARM Cortex M3 with single Sigma-Delta ADC


OP193 Precision, Micropower Single Operational Amplifier

Contact ADI

ADP1720 50 mA, High Voltage, Micropower Linear Regulator







ADuCM362 Low Power, Precision Analog Microcontroller with Dual Sigma-Delta ADCs, ARM Cortex-M3





ADuCM363 Low Power, Precision Analog Microcontroller with Single Sigma-Delta ADC, ARM Cortex-M3



Buy functionality exists in desktop site
Evaluation Boards Pricing displayed is based on 1-piece.
Pricing displayed is based on 1-piece. The USA list pricing shown is for budgetary use only, shown in United States dollars (FOB USA per unit), and is subject to change. International prices may vary due to local duties, taxes, fees and exchange rates.