PIC-Lernbeispiel: ELKO-Kapazitätsmesser,
Anzeige der Kapazität am LCD

mit PIC16F876


zurück zu Lernbeispiele , PIC-Prozessoren , Elektronik , Homepage

Messung
ADC oder Komparator?
Schaltung
Zeitschleife mit 0,1733 ms
Berechnungen
Programmablauf
Programmlisting
Mögliche Erweiterungen

zurück zu Lernbeispiele

Dieses Lernbeispiel ist ein vereinfachter Ableger eines anderen ELKO-Prüfgerätes.
 
nutzbarer Messbereich:   10 .. 65 500 µF
Anzeigebereich:   0 .. 65 535 µF
Auflösung:   1 µF



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:

C = 0,005771 x T

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.



ADC oder Komparator?
Eigentlich ist der Komparator die ideale Lösung, wenn man überwachen will, ob eine Spannung einen Schwellwert über- oder unterschreitet. So könnte man einen 16F628 benutzen. Die interne Referenzspannungsquelle könnte die Ladeschwelle (2,496 V) und eine Entladeschwelle (208 mV)  vorgeben. Allerdings bewirkt die Nutzung der internen Referenzquelle, dass RA0..RA4 alle im analogen Mode arbeiten. Außerdem ist die Referenzspannungsquelle nicht sehr genau. Um die Referenzsspannungen extern zu erzeugen wären eine Reihe Widerstände und ein digitales I/O-Port zur Umschaltung zwischen beiden Schwellen nötig.

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.

ELKO-Kapazitäts-Messer

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.


Programmablauf


Programmlisting


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.


zurück zu Lernbeispiele , PIC-Prozessoren , Elektronik , Homepage
Autor: sprut
erstellt: 15.01.2004
letzte Änderung: 03.08.2004