Vollständigen Artikel als PDF herunterladen - All

Werbung
BAUELEMENTE
Einfache Spannungsmessung
mit dem Mikrocontroller MSP430
LUTZ BIERL
Obwohl das Universal Timer/Port Modul der Mikrocontroller-Familie MSP430 von Texas Instruments eigentlich nur für
das Messen resistiver Grössen gedacht ist, können mit dem vorgestellten Meßprinzip hochgenaue - allerdings relativ
langsame – Spannungs- und Strommessungen realisiert werden. Erklärt werden die beiden Meßprinzipien (Entladeund Lademethode) und die Spannungs- und Strommessung gezeigt. Ferner werden verschiedene Anwendungen - wie
die Messung von zwei Spannungsquellen, Brückenschaltungen und R-2R-Schaltungen – erklärt. Zu allen gezeigten
Beispielen sind die Berechnungsgleichungen angegeben.
Die Spannungsmessungen mit dem Universal
Timer/Port Modul (Bild 1) werden als erstes
erklärt. Diese Lösungen haben den geringsten
Hardwareaufwand. Die Meßmethode liefert
ein sehr präzises Ergebnis, falls eine ZweiPunkt-Kalibration mit zwei Spannungen
jeweils an den Grenzen des Meßbereiches
durchgeführt wird. Eine realisierte Applikation lieferte die folgenden Ergebnisse:
nungsbereiches ist mit dem Universal
Timer/Port Modul der MSP430-Familie möglich: Normalerweise ist ein zweiter Schaltkreis
(AD-Wandler) für diesen Zweck notwendig.
Die Funktion der Schaltung wird mit der
Schaltung (Bild 2) ist erklärt.
(CPON, TPD.6, Adresse 04Eh) wird der
Anschlußpin von LCD-Betrieb auf die Komparatorfunktion umgeschaltet. Bild 2 zeigt
einen Spannungsmeßkreis, mit zwei verschiedenen Eingangsstufen für die Eingangsspannung Vmess. Relativ niederohmige Span-
e Genauigkeit zwischen +8 V und +16 V für
eine 12 V Akkumulatoren-Steuerung besser als ±10-3 (±0,1%); ein Zwei-Punkt
Abgleich wurde verwendet.
e Temperaturgang zwischen -25 °C und
+25 °C besser als 50 ppm/°C
Universal Timer/Port Modul
Das Universal Timer/Port Modul ist eigentlich
für das Messen resistiver Sensoren – wie zum
Beispiel Temperatursensoren – gedacht. Es
besteht aus zwei voneinander unabhängigen
Teilen, die bei der Messung von Widerständen
oder Spannungen zusammenarbeiten:
e Zähler mit Zählersteuerung: Zwei 8-bitZähler, die auch in Reihe zu einem 16-bitZähler geschaltet werden können. Dazu
gehören der Kontrollteil und je ein Komparatoreingang Ixx und ein Schmitt-TriggerEingang CIN
e Ein-/Ausgabe Port: Fünf Ausgänge (TP.0...
TP.4), die hochohmig geschaltet werden
können und ein Ein-/Ausgabe-Pin TP.5
Der Komparatoreingang Ixx, der für die Spannungsmessung normalerweise verwendet
wird, hat eine Umschaltschwelle VCP von
nominal 0,25xVcc mit engen Toleranzen. Die
Umschaltschwelle VCP selbst ist temperaturunabhängig. Der Komparator benötigt ungefähr 300 µA Strom. Er sollte also nur eingeschaltet sein, wenn er verwendet wird.
Die Messung eines eingeschränkten Span-
24
http://e-industrie.huethig.de
Bild 1: Blockschema des Universal Timer/Port Moduls
Für die Spannungsmessung wird bei der
MSP430x3xx-Familie nicht der Analogeingang CIN – ein Eingang mit Schmitt-TriggerCharakteristik – verwendet, sondern der
Komparatoreingang Ixx mit seiner gut definierten Eingangsschwelle von 0,25 x Vcc. Der
Komparatoreingang Ixx hat verschiedene
Namen bei den verschiedenen MSP430-Familienmitgliedern, da er normalerweise den
Anschlußpin der LCD-Selektleitung mit der
höchsten Nummer mitverwendet:
e MSP430x31x:
I27
(S27)
e MSP430x32x: I20
(S20)
e MSP430x33x: CMPI
(S29)
Mit einem Kontrollbit im Timer/Port Modul
nungsquellen werden direkt an den Eingang
Vmess0 angeschlossen. Die Eingangsimpedanz der Wandlerschaltung ist in der Größenordnung Megaohm (siehe Beispiel in Bild 4).
Sehr hochohmige Spannungsquellen werden
an den Impedanzwandlereingang Vmess1
angeschlossen. Die Eingangsimpedanz ist in
der Größenordnung Gigaohm. Es ist immer
nur eine der beiden Eingangsstufen in der
Schaltung von Bild 2 möglich. Falls mehrere
Eingangsspannungen gemessen werden sollen, ist eine der Schaltungen, die später
gezeigt sind, zu verwenden.
Der Spannungsbereich für die Spannung Vin
(gesehen am Eingang Ixx), der mit der Schaltung aus Bild 2 (Entladeschaltung) gemessen ©
elektronik industrie 2 – 1999
BAUELEMENTE
werden kann, ist auf den folgenden Bereich
beschränkt:
Umrechnung dieser Zeiten tx in die gemessenen Zählimpulse nx geschieht durch die Formel:
[1]
Das bedeutet bei einer Versorgungsspannung
Vcc von +5 V, Spannungen zwischen 0,26 x
5 V = 1,3 V und +5 V gemessen werden können. Mit dem Spannungsteiler, bestehend aus
den Widerständen R1 und R2, ergibt sich ein
nominaler Eingangsspannungsbereich für
Vmess0 von:
wobei fMCLK die CPU-Frequenz MCLK des
MSP430 ist.
Die Spannung Vmess wird aus den beiden
gemessenen Zeiten tmess und tvcc mit der
folgenden Formel berechnet:
[2]
[3]
Die Sequenz für die Messung einer Spannung
Vmess ist wie folgt: Die Nummern der Folge
entsprechen den Nummern der Umwandlungs-Stati in Bild 3. Die Software ist im
MSP430 Application Report enthalten.
wobei:
Vmess
Vcc
Die zu messende Eingangsspannung
[V]
Versorgungsspannung des MSP430
(als Referenz benutzt)
[V]
Spannungsteilerwiderstände am
Eingang Ixx
[W]
Entladezeit der untersetzten Vmess
bis zur Schwelle VCP
[s]
Entladezeit von Vcc bis zur Schwelle
VCP
[s]
Zeitkonstante des Entladekreises
(τ ≈ R4 x Cm)
[s]
Schwellenspannung des Kompara-
1. Der Ausgang TP.3 ist hochohmig geschalR1,R2
tet. Dadurch lädt sich der Meßkondensator
Cm während der Zeit zwischen zwei Spantmess
nungsmessungen (tauflade) auf die untersetzte, zu messende Spannung Vmess auf.
tvcc
2. Die Spannungsmessung beginnt: TP.3 wird
auf 0 V geschaltet und entlädt dadurch
τ
Cm. Zugleich wird die Zeitmessung der Zeit
tmess mit dem als 16-bit-Zähler geschalteVCP
ten Universal Timer/
Port gestartet. Beim Erreichen der unteren
Spannungsschwelle
VCP wird die Zeitmessung automatisch gestoppt.
3. Die gemessene Zeit
tmess bis zum Erreichen der Spannung
VCP wird gespeichert
4. TP.3 wird auf Vcc
geschaltet und lädt
Bild 2: Spannungsmessung mit dem Universal Timer/Port Modul
dadurch den Meßkondensator Cm bis
auf die Speisespannung Vcc auf. Die Zeit tcharge beträgt
toreinganges Ixx
[V]
5τ...7τ (τ ≈ R4 x Cm) je nach gewünschter
tconv
Zeit zwischen zwei vollständigen
Genauigkeit.
Spannungsmessungen
[s]
5. Die Referenzmessung beginnt: TP.3 wird
Um einen konstanten Wert für τ zu erhalten,
auf 0 V geschaltet und entlädt dadurch
ist ein teurer, hochstabiler Kondensator Cm
Cm. Die Zeitmessung für tvcc wird ebenfalls
notwendig. Um diesen Kondensator zu vergestartet. Beim Erreichen der unteren
Spannungsschwelle
VCP wird die Zeitmessung automatisch gestoppt.
6. Die gemessene Zeit
tvcc wird gespeichert.
In allen folgenden Formeln erscheinen nur gemessene Zeiten. Die
26
http://e-industrie.huethig.de
©
Bild 3: Abschnitte der Spannungsmessung (Entlademethode)
©
elektronik industrie 2 – 1999
BAUELEMENTE
meiden, wird der Wert τ der Gleichung (3)
substituiert. Aus der Gleichung (4) für die
Kondensatorentladung
[4]
wird τ errechnet:
[5]
Eingesetzt in Gleichung (3) führt das zu:
[6]
Mit der Gleichung (6) wird Vmess berechnet.
Die Gleichung (6) wird auch im Softwarebeispiel (rechts) verwendet.
Bei dem Kondensator Cm ist für die Spannungsmessung – nach der Gleichung (6) – nur
wichtig, daß er einen konstanten oder aber
sehr hohen Isolationswiderstand besitzt: Der
Isolationswiderstand des Kondensators Cm
liegt parallel zum Spannungsteilerwiderstand
R2 und ändert daher das Untersetzungsverhältnis des Spannungsteilers falls er sich – z. B
durch die Temperatur - ändert. Die obige Formel zeigt die Abhängigkeit der Spannungsmessung von der Speisespannung Vcc – die ja
die Referenz darstellt, von der Schwellenspannung VCP, der Genauigkeit der Widerstände R1 und R2 und der Temperaturdrift
dieser Werte. Um ohne Abgleich mit der
Meßgenauigkeit in den Bereich von ±1% für
Vmess zu kommen, sind die folgenden Maßnahmen notwendig:
e Stabile Versorgungsspannung Vcc: Sie muß
innerhalb von ±25 mV für den gewünschten Temperaturbereich sein. Der
tatsächliche Wert von Vcc spielt keine
Rolle, falls Kalibration benutzt wird.
e Ixx als Komparatoreingang: Die relativ gut
definierte Schwelle VCP (0,25 x Vcc)
ermöglicht bessere Resultate als der normale Schmitt-Trigger-Eingang CIN mit seinen großen Toleranzwerten für die
Umschaltschwellen
e Temperaturdrift der Widerstände maximal
±50ppm/°C
e Ausreichende Aufladezeiten für den Meßkondensator Cm
e Für eine Meßgenauigkeit von einem Prozent sind ungefähr 5τ notwendig (e5 =
148,41)
e Für eine Meßgenauigkeit von einem Promille sind 7τ notwendig (e7 = 1096.63)
Falls eine Zweipunkt-Kalibration verwendet
wird, werden die errechneten Werte für Steigung und Ablage in einem externen EEPROM,
oder falls die Batterie immer an das MSP430
28
http://e-industrie.huethig.de
; Spannungsmessung für Vakku:
; Vakku = factor · exp(((tmess/tvcc) -1) · ln(Vcc/VCP))
; Mit
factor = Vcc x (R1+R2)/R2
;
; Eingang: ADCref: Gemessener Referenzwert Vcc: tvcc
;
ADCbatt:
Gemessener Spannungswert: tmess
; Ausgang: Akt. Stack
Berechnete Spannung Vakku @SP
;
Calc_Volt
SUB
#4,SP
; Platz auf Stack reservieren
MOV #ADCbatt,RPARG
; ADC-Wert der Spannung tmess
CALL #CNV_BIN16U
; In vorzeichenlose Zahl wandeln
MOV @RPRES+,x
; Resultat in x speichern. MSBs
MOV @RPRES+,x+2
; LSBs
MOV #ADCref,RPARG
; ADC-Wert von Vcc tvcc
CALL #CNV_BIN16U
; In vorzeichenlose Zahl wandeln
MOV #x,RPRES
; tmess adressieren
CALL #FLT_DIV
; tmess/tvcc
JN
Calc_Error
; Fehler
MOV #FLT1,RPARG
; 1.0 adressieren
CALL #FLT_SUB
; (tmess/tvcc) - 1.0
MOV #FLTLN4,RPARG
; Ln(Vcc/VCP) adressieren
CALL #FLT_MUL
; [(tmess/tvcc) - 1] * ln(Vcc/VCP)
CALL #FLT_EXP
; exp[(tmess/tvcc) - 1)*ln4]
JN
Calc_Error
MOV #factor,RPARG
; Vcc x (R1+R2)/R2 adressieren
CALL #FLT_MUL
; Vakku = factor * exp[...]
;
; Korrektur von Vakku mit errechnetem Slope und Offset
; Vakku’ = factor*exp[(tmess/tvcc)-1)*ln4]*Slope + Offset
;
MOV #Slope,RPARG
; Slope adressieren
CALL #FLT_MUL
; Vakku * Slope
MOV #Offset,RPARG
; Offset adressieren
CALL #FLT_ADD
; Vakku’ = Vakku * Slope + Offset
;
MOV @RPRES+,6(SP)
; Korrigierte Vakku auf Stack
MOV @RPRES+,8(SP)
; LSBs
ADD #4,SP
; Stack freigeben
RET
; Rückkehr
;
; Rechenfehler (N = 1 nach Rückkehr): FFFF,FFFF als Ergebnis
Calc_Error MOV
#0FFFFh,6(SP)
MOV #0FFFFh,8(SP)
ADD #4,SP
; Stack korrigieren
SETN
; N-Bit als Fehlerindikation setzen
RET
; Rückkehr, N = 1
;
; factor enthält die Speisespannung Vcc und den Spannungsteiler
;
factor
.float 23.292683
; 5V * (3,0M+820k)/820k
FLTLN4
.float 1.38629436
; ln Vcc/VCP. (nom. ln 4.0)
FLT1
.float 1.0
; Konstante 1.0
System angeschlossen ist, im RAM gespeichert.
Auflösung der Messung
Um die Auflösung für einen Zählerschritt
nmess zu finden, wird die Gleichung (3) differenziert. Zuvor werden noch die Zeiten tx
durch die gemessenen Zählimpulse nx ersetzt.
Die Auflösung für einen Zählerschritt nmess
der Spannungsmessung ist dann:
[7]
Das bedeutet für das Beispiel in Bild 4 im
ungünstigsten Falle, also wenn
Vmess = Vmessmax ist:
elektronik industrie 2 – 1999
©
BAUELEMENTE
[11]
Die Auflösung ist also maximal 2,7 mV für
Vakku = 18 V, Cm = 47 nF, R4 = 47 kΩ, fMCLK =
3 MHz. Dies entspricht einer minimalen
Wandler-Bitbreite a von
Mit den Werten aus Bild 4 (rechte Schaltung)
ergibt sich für die Zeit tconv zwischen zwei
vollständigen Messungen:
[12]
[8]
(ld = log2) Die Auflösung dieser Schaltung
liegt also zwischen einem 12-bit- und einem
13-bit-AD-Wandler. Die Auflösung kann
durch eine Vergrößerung der Zeitkonstante τ
verbessert werden, allerdings verlängert sich
damit auch die Meßzeit. Für den interessierenden Spannungsbereich am Eingang Ixx
(VCP bis Vcc) kann die nichtlineare Charakteristik der Exponentialfunktion auch durch
eine Hyperbel dargestellt werden. Dies hat
den Vorteil, daß keine zeitaufwendige Reihenentwicklung – wie bei der Exponentialfunktion – notwendig ist, sondern nur eine Division:
[9]
Die Werte für A, B und C können durch das
Lösen von drei Gleichungen (siehe MSP430
Application Report) oder mit einem PC-Programm wie z. B. MATHCAD errechnet werden.
Für die Berechnung der obigen Formeln ist
das MSP430 Gleitkommapaket FPP4 sehr gut
geeignet: Es enthält alles Notwendige wie z. B
die Exponential- und die Logarithmusfunktion.
Meßzeiten
Mit den obigen Formeln läßt sich die Zeit
tconv zwischen zwei vollständigen Spannungsmessungen berechnen.
Dies ist die Zeit, die die höchste Wiederholfrequenz unter ungünstigsten Bedingungen für
Spannungsmessungen bestimmt. Die Zeit
tconv ist die Summe aller Zeiten die in Bild 3
gezeigt sind.
[10]
Mit den Werten, die die obigen Zeiten bestimmen, kann die Zeit tconv bestimmt werden.
Es wird mit einer Genauigkeit von 1% gerechnet, falls die Genauigkeit höher sein muß, ist
der ln100 in der Gleichung durch den Logarithmus der gewünschten Genauigkeit zu
ersetzen z. B. durch ln1000 für ein Promille.
Die Zeit tmess ist als maximal angesehen: Also
für Vin = Vcc
30
http://e-industrie.huethig.de
Für ein Promille Genauigkeit (10-3) ergeben
sich 233 ms für tconv. Durch Veränderung der
Werte von R1, R2, R4 und Cm läßt sich die
Zeit zwischen zwei Messungen stark beeinflussen. Die Dimensionierung in Bild 4 ist für
eine hochgenaue Spannungsmessung gemacht worden. Die Werte der Komponenten
können bei geringeren Ansprüchen an die
Genauigkeit durchaus verändert werden.
Anwendungen
zusammen mit TP.3 in den gleichen Modus
geschaltet (0 V, +5 V, hochohmig). Nach dem
Aufladen von Cm hat die Akkuspannung
dadurch keinerlei Einfluß mehr auf die
Umwandlung.
Software-Beispiel
Die Spannungsberechnung wird für die
rechte Schaltung in Bild 4 gezeigt. Die Messungen von tmess und tvcc werden wie oben
beschrieben durchgeführt. Die Gleichung (6)
ist in Software implementiert worden.
Für die Berechnung selbst wird das MSP430
Gleitkommapaket FPP4 verwendet (32-bit
Format). Alle Subroutinenaufrufe sind FPP4Funktionen. Das RAM-Wort ADCref enthält
das 16-bit-Resultat der Vcc Messung tvcc. Das
RAM-Wort ADCbatt enthält das 16-bit-Resultat der Vakku Messung tmess. Beide Zeiten
werden in MCLK Zyklen gemessen.
Strommessung mit der Lademethode
Im Folgenden wird gezeigt, wie verschiedene,
Ströme, die über einen Shunt fließen, können
zu messende Spannungsquellen an das Uniebenfalls gemessen werden. Diese Spannunversal Timer/Port Modul angeschlossen wergen sind klein, da der Shunt normalerweise
den können. Abhängig
von der Art der externen Spannungsquelle
sind unterschiedliche
Hardware-Konfigurationen notwendig. Bild 4
zeigt zwei Schaltungen, mit denen die
Spannung eines 12-VAkkumulators gemessen werden kann. Als
Referenz dient – wie
bei allen anderen Schaltungen auch – die
Bild 4: Messung der Spannung eines Akkumulators
Speisespannung Vcc.
Diese kann zwischen
+3 V und +5 V liegen. Bei einer Speisespansehr niederohmig ist (der Leistung I2 x Rshunt
nungsänderung muß nur der Widerstand R1
wegen). Die Spannung am Shunt wird nicht
neu dimensioniert werden. Zwei verschiedene
durch einen Spannungsteiler untersetzt, um
Schaltungen sind gezeigt, bei denen die Eindie volle Auflösung zu erhalten. Bild 5 zeigt
gangsspannung Vakku
unterschiedlichen Einfluß während der Umwandlung haben kann.
Bei der rechten Schaltung hat die Eingangsspannung Vakku auch
während der Referenzmessung mit Vcc einen
kleinen Einfluß (Größenordnung hier R4/R1).
Bei der linken Schaltung wird mit dem
Ausgang TP.2 die Akkuspannung von der eigentlichen Messung isoBild 5: Schaltung der Strommessung
©
liert: TP.2 wird immer
elektronik industrie 2 – 1999
BAUELEMENTE
die Schaltung für die
Strommessung.
Der
Spannungsbereich am
Widerstand
Rshunt
reicht von -0,3 V bis
VCP (VCP ist 0,25xVcc
beim MSP430). Der
Wert -0,3 V ist die
maximale,
negative
Spannung die an
einem
MSP430-Eingang zulässig ist. Um
Ströme oder Spannungen vom Nullpunkt
weg messen zu können, ist eine UmkehBild 6: Strommessung mit der Lademethode
rung der vorher gezeigten Meßmethode (Entlademethode) notwendig: Der Kondensator wird auf die zu mesDie erste Logarithmusfunktion ergibt die
sende Spannung bzw. das Potential 0 V entlaZählschritte beim Strom Imess, die zweite die
den und die Zeiten gemessen, bis die
Zählschritte beim Strom Null. Mit R2 = 47 kΩ,
Komparatorschwelle VCP wieder erreicht ist.
Cm = 33 nF (τ = 1,55 ms) und fMCLK = 3,3
Dieses Verfahren – die Lademethode – hat
MHz ergeben sich 1036 Zählschritte pro Volt.
eine geringere Auflösung als die zuvor
Falls also 1 A über einen Shunt mit 0,1 Ω fließt,
gezeigte Entlademethode, kann aber dafür
dann ist die Auflösung des Stromes ungefähr
Spannungen um den Nullpunkt herum mes10 mA.
sen.
Bild 6 zeigt die Spannung am Kondensator
Zusammenfassung
Cm bei der Messung zweier Ströme: Vin0 ist
positv, Vin1 hat negatives Vorzeichen. Wie
Obwohl eigentlich für die Messung resistiver
zuvor beschrieben, dient die Meßzeit tvcc als
Sensoren entwickelt, ermöglicht das Universal
Referenzmessung: Die Speisespannung Vcc
Timer/Port Modul auch sehr genaue Spanwird gemessen. Die Ersatzschaltbilder über
nungs- und Strommessungen. Der notwendem Spannungsverlauf zeigen die Wirkung
dige Hardwareaufwand ist dabei minimal.
der Zustände des Ausgangs TP.0 (Vss, Vcc, HiZwei Widerstände und ein Kondensator. Zwei
Z). Die Gleichung für die Berechnung des
verschiedene Meßverfahren wurden gezeigt,
Stromes Imess ist:
die Entlademethode mit höherer Auflösung,
und die Lademethode mit der Möglichkeit,
[13]
auch Spannungen um den Nullpunkt herum
messen zu können.
(oe)
Die kompliziert erscheinende Gleichung (13)
wird in der Software durch die Form
695
Lutz Bierl arbeitet bei Texas Instruments in Freising
ausgedrückt, wobei a und b Konstanten –
gegeben durch die Speisespannung Vcc, das
Verhältnis VCP/Vcc und den Meßwiderstand
Rshunt – sind. Die Schaltung hat den großen
Vorteil, daß der Meßwert, der der Spannung
0 V (Vss) entspricht, genau bekannt ist: Es ist
der Meßwert tvcc. Es sind also keine zusätzlichen Messungen notwendig, um den Nullpunkt (Imess = 0) festzulegen.
Die Auflösung der Strommessung kann mit
Hilfe der folgenden Gleichung berechnet
werden. Für den Strom Imess ergibt sich eine
Differenz der Zählschritte ∆nin von:
Literatur
MSP430 Family Architecture Guide and Module
Library 1996 SLAUE10B
MSP430 Application Report 1998 SLAAE10C
Data Sheet MSP430x31x 1998 SLAS165A
[14]
32 http://e-industrie.huethig.de
elektronik industrie 2 – 1999
Herunterladen