Bild 1 zeigt eine komplette Stromschleifen-gespeiste Schaltung zur Messung von Temperaturen mit einem Thermoelement. Der Ausgangsstrom von 4 bis 20 mA wird mit der PWM-Funktion eines analogen Präzisionsmikrocontrollers gesteuert.
Bild 1: Schleifengespeistes Thermoelement-Temperaturmesssystem mit ARM Cortex-M3, das vom analogen Präzisionsmikrocontroller ADuCM360 gesteuert wird (vereinfachtes Schaltbild) (Bild: Analog Devices
Die Schaltung in Bild 1 ist eine preiswerte Lösung zum Erfassen von Temperaturen, da die meisten der erforderlichen Funktionen im analogen Präzisionsmikrocontroller ADuCM360 integriert sind. Dazu gehören zwei 24 Bit Sigma-Delta-A/D-Wandler, ein ARM Cortex-M3 Prozessor und die PWM/DAC-Funktionen zur Steuerung der 4/20-mA-Stromschleife für Schleifenspannungen bis 28 V.
Der ADuCM360 ist an ein Thermoelement (Typ T) und an einen Platin-Widerstandsthermometer mit 100 Ω (Pt-100) angeschlossen. Das Widerstandsthermometer dient zur Kaltstellenkompensation. Der Cortex-M3 mit geringer Stromaufnahme wandelt die Messwerte des A/D-Wandlers in Temperaturwerte. Das Thermoelement arbeitet bei Temperaturen von −200 bis 350°C. Dieser Temperaturbereich wird in Ausgangsströme von 4 bis 20 mA gewandelt.
Diese Schaltung ähnelt der Schaltung im Referenzdesign CN-0300. Allerdings hat die PWM, die die 4/20-mA-Schleife treibt, eine höhere Auflösung. Der PWM-Ausgang liefert eine Auflösung von 14 Bit. Einzelheiten über die Temperatursensorschnittstelle zum A/D-Wandler und über Linearisierungstechniken für die Messung mit dem Widerstandsthermometer enthalten das Referenzdesign CN-0300 und die Applikationsschrift AN-0970.
Schaltungsbeschreibung
Gespeist wird die Schaltung vom Linearregler ADP1720. Dieser regelt die positive Schleifenspannung auf 3,3 V für den ADuCM360, den Operationsverstärker OP193 und die Referenz ADR3412 (optional).
Temperaturmonitor
Dieser Teil der Schaltung ähnelt der im Referenzdesign CN-0300 beschriebenen Temperaturüberwachungsschaltung. Zum Einsatz kommen:
• Der 24 Bit Sigma-Delta-A/D-Wandler mit einem PGA, der in der Software für das Thermoelement und den Widerstandstemperatursensor für eine Verstärkung von 32 eingestellt ist. ADC1 schaltet kontinuierlich zwischen dem Abtasten der Thermoelement- und den Widerstandsthermometer-Spannungen um.
• Programmierbare Stromquellen treiben einen steuerbaren Strom durch das Widerstandsthermometer. Die zwei Stromquellen sind in Stufen von 0 μA bis 2 mA konfigurierbar. Für dieses Beispiel wird eine Einstellung von 200 μA verwendet, um den durch die Selbsterwärmung des Widerstandstemperatursensors verursachten Fehler zu minimieren.
• Eine interne 1,2-V-Referenz dient zur Versorgung des A/D-Wandlers im ADuCM360. Bei der Messung der Thermoelementspannung wird die interne Spannungsreferenz aufgrund ihrer Genauigkeit verwendet.
• Eine externe Spannungsreferenz für den A/D-Wandler im ADuCM360. Bei der Messung des Widerstands des Widerstandstemperatursensors wurde ein ratiometrischer Aufbau verwendet. Dabei wurde ein externer Referenzwiderstand (RREF) über die externen Pins VREF+ und VREF− gelegt. Der integrierte Referenzeingangspuffer ist aktiviert, da die Referenzquelle in dieser Schaltung hochohmig ist. Aufgrund des integrierten Referenzpuffers ist kein externer Puffer erforderlich, um Eingangsleckströme zu minimieren.
• Ein Biasspannungsgenerator (UBIAS). Mit der UBIAS-Funktion wird die Gleichtaktspannung des Thermoelements auf AVDD_REG/2 (900 mV) eingestellt. Die UBIAS-Funktion macht externe Widerstände zur Einstellung der Thermoelement-Gleichtaktspannung überflüssig.
• Der ARM Cortex-M3. Auf dem 32 Bit ARM Core mit integriertem 126 kB Flash-Speicher und 8 kB SRAM läuft der User Code, der die A/D-Wandler konfiguriert und steuert. Der ARM Core wandelt die Ergebnisse der ADC-Wandlungen der Theromoelement- und Widerstandsthermometer -Eingänge in einen Temperaturwert um. Außerdem steuert der ARM Core den PWM-Ausgang, der die 4/20-mA-Schleife treibt. Für Debug-Zwecke steuert der ARM Core die Kommunikation über die UART/USB-Schnittstelle.
Kommunikation
• Der 16 Bit PWM-Ausgang wird mit dem OP193 extern gepuffert. Er steuert einen externen NPN-Transistor (BC548). Indem man die Spannung UBE dieses Transistors steuert, lässt sich der Strom, der durch einen Lastwiderstand mit 47,5 Ω fließt, auf den gewünschten Wert einstellen. Dies sorgt am 4/20-mA-Ausgang für eine Genauigkeit von besser als ±0,5°C in einem Bereich von –200 bis 350°C (siehe Testergebnisse).
• Der interne D/A-Wandler liefert die 1,2-V-Referenz für den OP193. Alternativ könnte man die 1,2-V-Präzisionsreferenz ADR3412 verwenden. So ließe sich eine höhere Genauigkeit über die Temperatur erzielen. Diese externe Referenz nimmt ähnlich viel Strom auf wie der interne D/A-Wandler (~50 μA).
Die 4/20-mA-Schleife wird von der 16 Bit-PWM-Schaltung im ADuCM360 gesteuert. Das Tastverhältnis der PWM-Schaltung wird über die Software eingestellt, um die Spannung über dem 47,5-Ω-Widerstand RLOOP zu steuern. Dies wiederum stellt den Schleifenstrom ein. Eine Seite von RLOOP ist mit der Masse vom ADuCM360 verbunden. Die andere Seite von RLOOP ist mit „Loop“-Masse verbunden. Daher fließt der Strom für die Bauteile ADuCM360, ADP1720, ADR3412 und OP193 plus den Strom für den gefilterten PWM-Ausgang durch RLOOP.
Die Spannung an der Verbindung zwischen R1 und R2 kann wie folgt ausgedrückt werden:
UR12 = (URLOOP + UREF) × R2 / (R1 + R2) − URLOOP
Nach dem Einschwingen der Schleife:
UIN = UR12
Da R1 = R2:
UIN = (URLOOP + UREF)/2 − URLOOP = UREF/2 − URLOOP/2
URLOOP = UREF – 2 UIN
Der maximale Strom fließt bei UIN = 0. Dann ist URLOOP = UREF, da der maximale Strom UREF/RLOOP oder ≈24 mA beträgt. Bei UIN = UREF/2 fließt kein Strom.
Die Impedanz des Verstärkers OP193 bei UIN ist hoch und lädt den PWM-gefilterten Ausgang nicht. Der Verstärkerausgang variiert nur um einen kleinen Teil von etwa 0,7 V.
Die Leistungsfähigkeit bei den Endwerten (0 bis 4 mA und 20 bis 24 mA) ist unkritisch; daher braucht der Operationsverstärker keine gute Leistungsfähigkeit bei der Versorgungsspannung.
Die absoluten Werte von R1 und R2 sind ebenfalls unkritisch. Allerdings ist ein genaues Matching von R1 und R2 wichtig.
ADC1 wird für Temperaturmessungen verwendet. Daher ist dieser Schaltungstipp direkt auf den ADuCM361 mit nur einem A/D-Wandler anwendbar. Das Board EVAL-CN0319-EB1Z enthält die Option zur Messung der Spannung an dem mit VR12 bezeichneten Punkt. Dazu wird ein Eingangskanal von ADC0 am ADuCM360 verwendet. Diese ADC-Messung kann als Rückkopplung für die PWM-Steuerungssoftware verwendet werden, um die 4/20-mA-Stromeinstellung einzustellen.
Programmierung, Debugging und Test
• Der UART dient als Kommunikationsschnittstelle zum Host-PC. Dieser wird zur Programmierung des On-Chip Flash-Speichers verwendet. Er wird auch als Debug-Port und zur Kalibrierung des gefilterten PWM-Ausgangs verwendet.
• Über zwei externe Schalter lässt sich das Bauteil in die Flash-Betriebsart schalten. Indem man SD auf „Low“ hält und den RESET schaltet gelangt der ADuCM360 statt in die normale Anwenderbetriebsart in die Boot-Betriebsart. In der Boot-Betriebsart lässt sich der interne Flash-Speicher über die UART-Schnittstelle wiederprogrammieren.
Code-Beschreibung
Der zum Testen der Schaltung verwendete Quellcode kann von den ADuCM360 und ADuCM361 Produktseiten als Zip-Datei heruntergeladen werden. Der Quellcode nutzt die mit dem Beispielcode zur Verfügung gestellten Funktionsbibliotheken.
Bild 2: Source Files, betrachtet mit µVision4 (Keil)
Bild 2 zeigt die Liste von Source Files, die in diesem Projekt beim Betrachten mit den μVision4 Tools von Keil verwendet wurden.
Temperaturmonitor: ADC1 wird für Temperaturmessungen am Thermoelement und am Widerstandstemperatursensor verwendet. Dieser Teil des Codes ist vom Referenzdesign CN-0300 kopiert. Dort findet man auch mehr Informationen.
Kommunikationsbereich
Der PWM-gefilterte Ausgang muss eingestellt werden, um 4 mA bei der Minimal- und 20 mA bei der Maximaltemperatur zu gewährleisten. Eine Kalibrationsroutine wird zur Verfügung gestellt. Sie kann mit dem Parameter #define CalibratePWM leicht einbezogen oder entfernt werden.
Zum Kalibrieren der PWM muss das Schnittstellenboard (USB-SWD/UART) mit J1 und mit dem USB-Port eines PC verbunden werden. Ein COM-Port-Viewer-Programm, zum Beispiel HyperTerminal, kann verwendet werden, um die Kalibrierungsmenüs zu betrachten und durch die Kalibrierungsroutinen zu navigieren.
Beim Kalibrieren der PWM sollten die Ausgänge VLOOP+ und VLOOP– an ein Strommessgerät mit hoher Genauigkeit angeschlossen werden. Der erste Teil der PWM-Kalibrierungsroutine stellt den DAC für einen Ausgangsstrom von 20 mA ein. Der zweite Teil der PWM-Kalibrierungsroutine stellt die PWM auf einen Ausgangsstrom von 20 mA ein. Der PWM-Code zur Einstellung von Ausgangsströmen von 4 und 20 mA wird im Flash-Speicher abgelegt.
Bild 3: Ausgabe von HyperTerminal beim Kalibrieren der PWM
Der UART ist für eine Übertragungsrate von 19.200 Baud, 8 Datenbit, keine Parität und keine „Flow Control“ konfiguriert. Falls die Schaltung direkt an einen PC angeschlossen wird, kann ein Programm wie HyperTerminal oder CoolTerm zum Betrachten von Kommunikationsports verwendet werden, um die an den UART geschickten Resultate zu betrachten (Bild 3).
Zur Eingabe der von den Kalibrierungsroutinen benötigten Zeichen gibt man das jeweilige Zeichen in das Terminalprogramm ein. Dieses Zeichen wird dann vom UART-Port des ADuCM360 empfangen.
Nach der Kalibrierung schaltet der Demo-Code für weitere Energieeinsparungen den UART-Takt ab.
Kalibrierungskoeffizienten werden in Flash-Speichern abgelegt. Daher ist es nicht erforderlich, bei jedem Einschalten des Boards eine Kalibrierung durchzuführen. Es sei denn der Pegel von VLOOP wird verändert.
Bild 4: Flussdiagramm
Bild 4 zeigt ein Flussdiagramm.
Häufige Varianten: Diese Schaltung beinhaltet den Footprint für HART-Kommunikation und für eine externe Referenz.
Schaltungsevaluierung und Test
Dieser Beitrag geht nicht auf den Bereich zur Erfassung der Temperatur ein, da dieser bereits in der CN-0300 erläutert ist. Der Schwerpunkt liegt auf der Leistungsfähigkeit des Temperatur/Strom-Ausgangs.
Differenzielle Nichtlinearität der PWM
Bild 5: Typische DNL-Leistungsfähigkeit der Schaltung
Die differenzielle Nichtlinearität (DNL) des gefilterten PWM-Ausgangs wurde zuerst gemessen. Der DNL-Verlauf in Bild 5 zeigt im kritischen 4/20-mA-Bereich eine typische Leistungsfähigkeit von besser als 0,3 LSB. Diese Tests wurden mit einem Filter zweiter Ordnung am PWM-Ausgang durchgeführt. Zwei 47-kΩ-Widerstände und zwei 100-nF-Kondensatoren wurden verwendet, wie in Bild 1 gezeigt.
Temperatur/Strom-Ausgang
Bild 6: Messaufbau zum Testen des Kommunikationsbereichs
Der Aufbau in Bild 6 wurde zum Testen des Kommunikationsbereichs der Schaltung verwendet.
Der PC schickt über den UART Temperaturwerte an den ADuCM360. Anschließend stellt der ADuCM360 den PWM-Ausgang entsprechend ein. Der Strom in der Schleife wird gemessen und aufgezeichnet.
Ein Temperaturanstieg um 1 K ergibt (20 mA – 4 mA) / 550 = 0,029029 mA.
Bild 7: Fehler in der Stromschleife gegenüber den Temperaturmessungen für die DAC-Steuerung (CN-0300) und die PWM-Steuerung (CN-0319).
Den Fehler in der Stromschleife, gemessen in der CN-0300 (DAC-gesteuert) und in der CN-0319 (PWM-gesteuert), zeigt Bild 7.
Diese Ergebnisse zeigen, dass die Genauigkeit der PWM-gesteuerten Schleife nach der Kalibrierung höher ist als bei der DAC-gesteuerten Schleife mit Rückkopplung.
Für eine höhere Genauigkeit könnte man die Rückkopplungsschleife hinzunehmen. Dazu müsste man einen ADuCM360 verwenden, bei dem der zweite A/D-Wandler aktiviert ist, um die Schleife zu überwachen. Dies würde die Stromaufnahme (ADC0 on) erhöhen und die Reaktionszeit der Schleife verlängern.
Die Update Rate der Stromschleife hängt von der CPU und der ADC-Konfiguration ab. Im Beispielcode sind die CPU-Taktfrequenz auf 1 MHz und die ADC-Frequenz auf 5 Hz eingestellt. Der A/D-Wandler wandelt mehrere Messwerte am Widerstandsthermometer und am Thermoelement, bevor das Ergebnis gemittelt wird. Die Zahl der Messwerte wird durch den Parameter SAMPLEN0 definiert. Im Beispielcode ist dieser auf 8 eingestellt. Dies ergibt eine Stromschleifen-Update-Rate von 740 ms. Für eine kürzere Reaktionszeit der Schleife kann SAMPLEN0 reduziert werden.
Messung der Stromaufnahme
Im normalen Betrieb nimmt die Schaltung 2 mA (typ.) auf. Im Reset-Zustand kommt sie mit weniger als 550 μA aus. Um den Betrieb mit niedriger Stromaufnahme zu ermöglichen, kann die Core-Betriebsfrequenz der Bauteile ADuCM360/ADuCM361 reduziert werden. Dazu programmiert man die internen CLKSYSDIV-Register entsprechend. Durch Programmierung des CLKCON0-Registers kann man die Core-Frequenz von 16 MHz in binäre Vielfache von 2 bis 128 teilen. In diesem Beispiel-Code wird ein Taktteilerwert von 8 verwendet. Dies liefert eine Core-Frequenz von 1 MHz.
Der primäre A/D-Wandler wird mit einer Verstärkung von 32 aktiviert. PWM und D/A-Wandler sind ebenfalls für die Kommunikation in der Schleife aktiviert. Alle nicht benutzten Peripherieschaltungen sind abgeschaltet, um den Energieverbrauch zu minimieren.
Tabelle 2: Typische IDD-Werte für Bauteile der Temperaturüberwachungsschaltung
Aus Tabelle 2 ist die Stromaufnahme der einzelnen Bauteile und der Gesamtschaltung der Temperaturüberwachungsschaltung ersichtlich.
Mehr Informationen über die Stromaufnahme des ADuCM360 enthält die Applikationsschrift AN-1111.