Analog Devices Temperaturmesssystem mit ARM Cortex-M3 Core und USB-Schnittstelle

Mit dem Evaluierungs-Board EVAL-CN0221-EB17 hat Analog Devices ein Referenzdesign zur hochgenauen Temperaturmessung mittels eines J-Thermoelements und Kaltstellenkompensation entwickelt. Herzstück ist dabei der Micro-Converter ADuCM360. Der folgende Beitrag gibt einen Einblick in das Design.

Diese Schaltung nutzt den präzisen Analog-Mikrocontroller ADuCM360/ADuCM361 in einer Anwendung zur genauen Temperaturüberwachung mit einem Thermoelement. Der ADuCM360/ADuCM361 enthält zwei 24bit-Sigma/Delta (Σ/Δ) A/D-Wandler (ADCs), zwei programmierbare Stromquellen, einen 12bit-D/A-Wandler (DAC) und eine interne 1,2V-Referenz, sowie einen ARM Cortex-M3 Core, 128kB Flash Speicher, 8kB SRAM und verschiedene digitale Peripheriefunktionen wie UART, Timer, SPIs und I2C-Schnittstellen.

In der Schaltung ist der ADuCM360/ADuCM361 an ein Thermoelement und einen Platin-Widerstandsthermometer (RTD) mit 100Ω angeschlossen. Das Widerstandsthermometer wird zur Kaltstellenkompensation genutzt.

Im Quellcode ist eine Abtastrate von 4Hz gewählt. Wenn der programmierbare Verstärker (PGA) am Eingang des A/D-Wandlers für eine Verstärkung von 32 konfiguriert ist, ist die rauschfreie Auflösung des ADuCM360/ ADuCM361 größer als 18bit.

Die folgenden Funktionen und Leistungsmerkmale des ADuCM360/ADuCM361 werden in dieser Anwendung verwendet:

  • Ein 24bit-Σ/Δ-ADC mit einem PGA, der in der Software für das Thermoelement und das Widerstandsthermometer auf eine Verstärkung von 32 eingestellt ist. ADC1 schaltet kontinuierlich zwischen dem Abtasten der Thermoelement- und den Widerstandsthermometerspannungen um. 
  • Programmierbare Anregungsstromquellen erzwingen einen kontrollierten Strom durch das Widerstandsthermometer. Die zwei Stromquellen sind von 0μA bis 2mA konfigurierbar. Für dieses Beispiel wird eine Einstellung von 200μA gewählt, um den durch Selbsterwärmung des Widerstandsthermometers verursachten Fehler zu minimieren. 
  • Eine interne 1,2V-Referenz für den ADC im ADuCM360/ADuCM361. Bei der Messung der Thermoelementspannung wird die interne Spannungsreferenz wegen ihrer Genauigkeit verwendet. 
  • Eine externe Spannungsreferenz für den ADC im ADuCM360/ADuCM361. Zur Messung des RTD-Widerstands wurde ein ratiometrischer Aufbau gewählt. Dabei wurden ein externer Referenzwiderstand (RREF) über die externen Pins VREF+ und VREF− gelegt. 
  • Ein Biasspannungsgenerator (VBIAS). Die VBIAS-Funktion wird verwendet, um die Gleichtaktspannung des Thermoelements auf AVDD/2 einzustellen. 
  • Der ARM Cortex-M3 Core. Auf dem leistungsfähigen 32bit ARM-Core mit integriertem 128kB Flash- und 8kB SRAM-Memory läuft der User Code, der die ADCs konfiguriert und steuert, die A/D-Wandlungen vom Widerstandsthermometer verarbeitet und die Kommunikation über die UART/USB-Schnittstelle steuert. 
  • Der UART dient als Kommunikationsschnittstelle zum Host-PC. 
  • Zwei externen Switches werden verwendet, um das Bauteil in einen Betriebsmodus zur Programmierung des Flash-Speichers zu bringen. Indem man SD gedrückt hält und den RESET-Knopf kurz drückt, gelangt der ADuCM360/ADuCM361 von der normalen Betriebsmodus in den Betriebsmodus zur Programmierung des Flash-Speichers . In diesem Betriebsmodus kann der interne Flash-Speicher über die UART-Schnittstelle umprogrammiert werden.

Sowohl das Thermoelement, als auch das Widerstandsthermometer erzeugen Signale mit sehr kleiner Amplitude. Deshalb ist ein PGA erforderlich, der diese Signale verstärkt.

Das Thermoelement in dieser Anwendung ist ein Typ T-Element (Kupfer/Konstantan) mit einem Temperaturbereich von −200 bis +350°C. Seine Empfindlichkeit beträgt ca. 40μV/°C. Dies bedeutet, dass der ADC im Bipolar Mode mit einer PGA-Verstärkung von 32 den gesamten Temperaturbereich des Thermoelements abdecken kann.

Das Widerstandsthermometer dient zur Kaltstellenkompensation. In dieser Schaltung wurde ein Platin-Widerstandsthermometer mit 100Ω (Enercorp PCS 1.1503.1) verwendet. Das Widerstandsthermometer steht im 0805 SMD-Gehäuse zur Verfügung. Das Widerstandsthermometer hat eine Temperaturabweichung von 0,385Ω/°C. Man beachte, dass der Referenzwiderstand RREF ein Präzisionswiderstand mit 5,6kΩ (±0,1%) ist.

Die USB-Schnittstelle zum ADuCM360/ADuCM361 ist mit einem FT232R UART/USB-Transceiver implementiert, der USB-Signale direkt zum UART konvertiert. Zusätzlich zur Entkopplung in Bild 1 muss das USB-Kabel selbst eine Ferritperle für zusätzlichen EMI/RFI-Schutz haben. Die hier verwendeten Ferritperlen sind vom Typ Taiyo Yuden, #BK2125HS102-T mit einer Impedanz von 1.000Ω bei 100MHz.

Die Schaltung sollte auf einer mehrlagigen Leiterplatte mit großer gemeinsamer Massefläche aufgebaut werden. Auf saubere Layout-, Masseführungs- und Entkopplungstechniken ist zu achten, um die optimale Leistungsfähigkeit zu erhalten. Bild 2 zeigt die zur Evaluierung der Schaltung verwendete Leiterplatte.

Den Link zum Quellcode, welcher zum Testen der Schaltung verwendet wurde, ist im Design Support Package CN0221 auf http://www.analog.com/CN0221-DesignSupport verfügbar.

Der UART ist für eine Übertragungsrate von 9.600, 8 Datenbit, keine Parität und ohne Übertragungssteuerung konfiguriert. Falls die Schaltung direkt an einen PC angeschlossen ist, kann ein Programm zur Darstellung der Kommunikation wie zum Beispiel HyperTerminal verwendet werden (Bild 3).

Um einen Temperaturmesswert zu erhalten, wird die Temperatur des Thermoelements und des Widerstandsthermometers gemessen. Die Widerstandsthermometer-Temperatur wird über eine Tabelle (siehe ISE Inc., ITS-90 Table for Type T Thermocouple) in die entsprechende Thermoelementspannung konvertiert. Diese beiden Spannungen werden addiert und liefern den Absolutwert am Thermoelement.

Zunächst wird die Spannung zwischen den beiden Anschlüssen des Thermoelements (V1) gemessen. Die RTD-Spannung wird gemessen und über eine Tabelle in eine Temperatur konvertiert. Anschließend wird diese Temperatur in ihre entsprechende Thermoelementspannung (V2) gewandelt. V1 und V2 werden dann addiert und es ergibt sich die gesamte Thermoelementspannung. Diese wird in die endgültige Temperatur gewandelt.

Zunächst erfolgte dies mit einer einfachen linearen Annahme, dass die Spannung am Thermoelement 40μV/°C beträgt. Aus Bild 4 ist ersichtlich, dass dies nur in einem kleinen Bereich um 0°C einen akzeptablen Fehler liefert. Eine bessere Methode, zur Berechnung der Thermoelementtemperatur ist, ein Polynom sechster Ordnung für die positiven Temperaturen und ein Polynom siebter Ordnung für die negativen Temperaturen zu verwenden. Dies verlangt mathematische Berechnungen, die Rechenzeit benötigen und das Programm vergrößern. Ein geeigneter Kompromiss besteht darin, die jeweiligen Temperaturen für eine feste Zahl von Spannungen zu berechnen. Diese Temperaturen werden in einem Matrix gespeichert. Zwischenwerte berechnet man durch lineare Interpolationen zwischen benachbarten Punkten. Bild 5 zeigt, dass sich der Fehler mit dieser Methode wesentlich verringert. Bild 5 liefert den Algorithmusfehler mit idealen Thermoelementspannungen.

Bild 6 zeigt den Fehler, den man erhält, wenn man ADC1 am ADuCM360 zur Messung von 52 Thermoelementspannungen über den gesamten Betriebsbereich des Thermoelements verwendet. Der gesamte Fehler im ungünstigsten Fall beträgt <1°C.

Die Widerstandsthermometer-Temperatur wird mit Hilfe von Tabellen berechnet und erfolgt ebenso wie beim Thermoelement. Zu beachten ist, dass das Widerstandsthermometer einem anderen Polynom gehorcht und seine Temperatur eine Funktion des Widerstands ist.

Einzelheiten über Linearisierung und Maximierung der Leistungsfähigkeit des Widerstandsthermometers sind verfügbar in der Application Note AN-0970, RTD Interfacing and Linearization Using an ADuC706x Microcontroller.

Häufige Schaltungsvarianten

Man beachte, dass sich der ADuCM360/ADuCM361 über eine serielle Schnittstelle programmieren und debuggen lässt. Für eine Standard UART/RS-232-Schnittstelle kann der Transceiver FT232R zum Beispiel durch ein Bauteil wie den ADM3202 ersetzt werden. Dieser wird mit 3V versorgt. Für einen größeren Temperaturbereich kann ein anderes Thermoelement verwendet werden – etwa ein Modell Typ J. Um den Fehler der Kaltstellenkompensation zu minimieren, kann man einen Thermistor statt auf der Leiterplatte direkt an der Kaltstelle platzieren.

Statt des Widerstandsthermometers und des externen Referenzwiderstands zur Messung der Kaltstellentemperatur kann man auch einen externen digitalen Temperatursensor einsetzen. Zum Beispiel kann der ADT7410 über die I2C-schnittstelle an den ADuCM360/ADuCM361 angeschlossen werden.

Einzelheiten über Kaltstellenkompensation findet man hier: Sensor Signal Conditioning, Analog Devices, Kapitel 7, „Temperature Sensors.” Falls eine galvanische Isolation zwischen USB-Stecker und der Schaltung erforderlich ist, muss dies mit einem ADuM3160/ADuM4160 USB-Isolator erfolgen.

Überprüfung und Test der Schaltung

Um die Schaltung zu überprüfen und zu testen wurden die beiden Schaltungsteile für das Thermoelement und den Widerstandsthermometer getrennt überprüft.

Prüfung für das Thermoelement 

Bild 7 zeigt den prinzipiellen Testaufbau. Das Thermoelement wird an J5 angeschlossen und J1 muss gesteckt sein, damit A7/VBIAS das Thermoelement auf die Gleichtaktspannung anhebt. Die Schaltung wird über die USB-Schnittstelle vom PC versorgt. Es wurden zwei unterschiedliche Methoden zur Überprüfung der Leistungsfähigkeit der Schaltung genutzt. 

Zuerst wurde die Schaltung mit dem Thermoelement benutzt um die Temperatur eines Bechers mit Eiswasser zu messen. Anschließend wurde damit die Temperatur von kochendem Wasser gemessen. Ein Wavetek 4808 Multifunction Calibrator wurde benutzt um den gesamten Fehler zu bestimmen, wie in Bild 4 und Bild 6 gezeigt. Dabei wurde das Thermoelement durch den Kalibrator ersetzt, so wie in Bild 7 gezeigt. 

Um den gesamten Bereich eines Type-T Thermoelements zu prüfen, wurden mit dem Kalibrator für 52 Punkte zwischen -200°C und +350°C Spannungen entsprechend den negativen und positiven Bereichen eines Type-T Thermoelementes eingestellt (siehe ISE, Inc., ITS-90 Tabelle für Type-T Thermoelemente). 

Um die Genauigkeit des implementierten Algorithmus zu prüfen, wurden 551 Messwerte entsprechend des Temperaturbereiches von -200°C bis +350°C mit einer Schrittweite von +1°C an die implementierten Funktionen übergeben. Damit wurde der Fehler für die lineare und die schrittweise lineare Approximation bestimmt, wie in Bild 4 und Bild 5 zu sehen ist.

Prüfung für den Widerstandsthermometer

Zur Prüfung der Widerstandsthermometerschaltung und des Linearisierungs-Quellcodes wurde das Widerstandsthermometer auf der Leiterplatte durch eine genaue, einstellbare Widerstandsquelle ersetzt. Als Messinstrument wurde ein 1433-Z Decade Resistor verwendet. Die Widerstandsthermometerwerte erstrecken sich von 90Ω bis 140Ω. Dies repräsentiert einen Temperaturbereich des Widerstandsthermometer von −25°C bis +114°C. Bild 8 zeigt den Testaufbau, Bild 9 zeigt die Fehler für die Widerstandsthermometertests.