Messung ADC oder Komparator? Schaltung Zeitschleife mit 0,1733 ms Berechnungen Programmablauf Programmlisting Mögliche Erweiterungen |
Dieses Lernbeispiel ist ein vereinfachter Ableger eines
anderen
ELKO-Prüfgerätes.
|
Messung der Kapazität
Die Kapazität
C wird über das Ladeverhalten des ELKOs gemessen. Dabei wird
der
leere Elko über einen 250-Ohm-Widerstand aus der Betriebsspannung
5V von 0V bis auf 2,5V aufgeladen. Die Ladezeit T (in Sekunden) ist
proportional
zur Kapazität C (in F). Es gilt:
Ein µF entspricht einer Ladezeit von 0,1733 Millisekunden. 10000µF entsprechen folglich 1,733 Sekunden. 5771µF entsprechen 1 SekundeLadezeit.
Während des Ladens wird ein 16-Bit-Zähler mit 5771 Hz
inkrementiert.
Beim Erreichen von 2,5V wird der Zählerstand ausgelesen. Sein Wert
entspricht der Kapazität in µF.
Das Erreichen der 2,5 V kann mit einem Komparator
oder einem ADC erkannt werden.
Da die Messung nur mit einer Auflösung von 1 µF erfolgt, können ELKOS unterhalb von 10µF nicht genau genug gemessen werden. Da ein 16-Bit Zähler zur Messung verwendet wird, beträgt die maximale ELKO-Kapazität, die gemessen werden kann, 65535µF.
Die Schaltung funktioniert zu meiner Zufriedenheit im gesamten Messbereich. Auch kleinere Werte (2..10 µF) werden korrekt gemessen, allerdings ist die Anzeigegenauigkeit hier nicht befriedigend.
Da erscheint ein ADC doch
einfacher nutzbar zu sein. Ist der ADC aber auch schnell genug? In
einem mit 10
MHz getakteten PIC benötigt ein ADC 38,4 µs für die
Spannungswandlung.
Danach sind 3,4 µs Erholungspause nötig. Damit beträgt
die minimale Zykluszeit ca. 50 µs. Der Kapazitätszähler
in unserem ELKO-Messgerät zählt aber mit einem Takt von
0,1733
ms. Der ADC ist also 3 mal so schnell wie nötig, und kann
eingesetzt
werden.
Der ADC bietet auch die größere Flexibilität bei der
Festlegung der Schwellwerte. Die Entladeschwelle wird auf 40 mV
festgelegt,
und die Aufladeschwelle auf 2,5 V.
Schaltung
Zum Aufbau eignet sich z.B. die 16F876-Testplatine
(ergänzt um R4 und R5) zusammen mit der LCD-Adapterplatine.
Im Beispiel in der Abbildung lädt (und endlädt) der PIC den ELKO über RC0, während die Ladespannung mit dem ADC über RA0 beobachtet wird. Das Pin RC0 hat FET-Treiber. Im High-Zustand verbindet ein P-FET das Pin RC0 mit Vdd. Dieser FET hat einen Innenwiderstand von ca. 80..90 Ohm, der mit dem externen Ladewiderstand R4 in Reihe liegt. Folglich darf der externe Ladewiderstand R4 nur 160..180 Ohm betragen, um auf einen Gesamtwiderstand von 250 Ohm zu kommen.
Vor und nach der Messung muss der ELKO auf ca. 0 V entladen werden, das erfolgt ebenfalls duch R4 und RC0 (diesmal der N-FET mit etwas kleinerem Innenwiderstand). Um die Entladezeit in Grenzen zu halten, wird nur bis auf 40 mV entladen. Trotzdem dauert das Entladen (von 2,5 V ausgehend) ca. 5 mal so lange wie das Laden auf 2,5V.
++ACHTUNG++
Um den PIC nicht zu beschädigen, sollten
nur entladene ELKOs an die Schaltung angeschlossen werden. ELKOs mit
einer
Ladung von über 4V oder mit negativer Ladung (falsche
Polarität)
könnten RC0 beschädigen, was zum Defekt des PICs führt.
(Der Widerstand R4 zusammen mit den internen Schutzdioden des PIC
bieten davor
keinen ausreichenden Schutz.)
Außerdem sollte der ELKO von der Schaltung
getrennt werden, bevor man die Betriebsspannung abschaltet.
Zeitschleife mit 0,1733 ms
Wir können nun die Kapazität des ELKOs mit der "Stoppuhr"
bestimmen.Die ELKO-Kapazität wird während der Ladezeit im
0,1733-ms-Takt
gezählt. Das entspricht einer Frequenz von 5771 Hz. Eine solche
Zeitschleife
lässt sich mit dem Timer0 realisieren.
Der PIC wird mit 10 MHz getaktet. Der Zyklustakt im PIC beträgt
folglich 2,5 MHz. Um aus dem Zyklustakt unseren 5771Hz-Messtakt zu
gewinnen,
müssen wir den Zyklustakt durch 434 teilen. (2,5 MHz / 434 = 5760
Hz ~5771Hz, Die Abweichung von 0,2% kann ignoriert werden). Dafür
speist man den Timer0 über den 2:1-Vorteiler mit dem Zyklustakt,
und
lädt den Timer0 auf 39. Dann benötigt er genau 217 Takte, bis
das TOIF-Flag gesetzt wird.
Das TOIF-Flag wird vom Programm überwacht. Sobald es gesetzt wird,
Lädt man den Timer0 wieder auf 39 und löscht das TOIF-Flag.
Damit
ergibt sich ein Schleifentakt von
F = 10 MHz / 4 /2 / 217 = 5760 Hz
T = 0,1736 ms
;*********************************************************************
; Timer0 auf 0,1733 ms einstellen (5770 Hz); ; 10MHz/5770Hz = 1733 = 4 x 2 x 217 ; Vorteiler 2:1 ; 217 Zähltakte 255-217=38 movlw B'10000000' bsf STATUS, RP0 ; Bank 1 movwf OPTION_REG bcf STATUS, RP0 ; Bank 0 . . . Kap_loop movlw D'39' movwf TMR0 bcf INTCON,T0IF . . . Kap_loop2 btfss INTCON,T0IF goto Kap_loop2 goto Kap_loop ; |
Berechnungen
Da nach der Messung die Kapazität in µF als 16-Bit-Wert
vorliegt, beschänken sich Berechnungen auf eine BCD-Wandlung
für
die Anzeige am LCD. Das war schon Bestandteil anderer
Lernbeispiele. Für das ELKO-Messgerät wurde das
Verfahren
lediglich um die Zehntausender-Stelle erweitert.
Kalibrierung
Der kritische Punkt dieser Schaltung ist die unbekannte
Größe des Innenwiderstandes des Pins RC0. Er wird bei etwa
85 Ohm liegen, aber der genaue Wert ist exemplarabhängig, und
damit unbekannt. Deshalb sollte man testen, ob sich mit dem
gewählten Wert für R4 ein ELKO-Ladestrom von 20 mA einstellt.
Dafür überbrückt man die ELKO-Anschlusspins, und
schaltet ein. Man misst den Spannungsabfall über R4 und errechnet
den durch ihn fließenden Strom. Bei 180 Ohm sollten 3,6 V messbar
sein (Vdd=5V). Die Messung sollte innerhalb von 10 Sekunden beendet
sein.
Weicht der Strom stark von 20 mA ab, dann ist R4 anzupassen.
Mögliche Erweiterungen
Wer ein praxistaugliches (also robustes) Messgerät aufbauen
will, sollte Schutzdioden vom ELKO zu Vss und Vdd einfügen, und
den
ELKO nicht direkt durch das PIC-Pin laden und entladen. Zwei
Treibertransistoren
mit Strombegrenzungswiderständen (180 Ohm zum Laden, 22 Ohm zum
Entladen)
über nehmen diesen Part. Das erfordert kleine Änderungen in
der
Software.
Man kann auf diesem Prinzip ein Messgerät für
kleinere
Kapazitäten aufbauen. Dabei sind größere
Lade/Entladewiderstände
und/oder eine schnellere Zählschleife erforderlich. Es ist a aber
zu beachten, dass am Port RA0 eine Eingangsleckstrom von 0,5µA
fließen
kann. Soll sich das nicht auf die Messgenauigkeit auswirken,
muss
der Ladestrom deutlich größer sein. Wird der Ladewiderstand
auf 250 kOhm erhöht, bewirkt der Leckstrom schon einen
Messfehler
von bis zu 2,5%. Besser ist es einen Ladewiderstand von 125 kOhm
einzusetzen,
und die Kapazitätszählschleife auf doppelte Geschwindigkeit
zu
beschleunigen (das schafft der ADC noch). Dann hat man ein
Messgerät
von 1 nF bis 65 µF.
Ein Vordringen in den pF-Bereich ist mit dem ADC nicht möglich.
Man kann aber einen Schmitt-Trigger-Eingang nehmen (RA4), dessen
Schwellspannung
man unmittelbar vor der Messung mit dem ADC ausmisst. Der ist dann
schnell
genug, um auf den schnell geladenen pF-Kondensator zu reagieren.