Kapazitätsmesser mit dem Arduino

Von | 26. Januar 2020

Um mit Hilfe eines Microcontrollers Kapazitäten messen zu können, ist etwas zusätzliche Hardware nötig. Mit Hilfe eines astabilen Multivibrator, dessen primäre Aufgabe es ist, in Abhängigkeit von einem RC-Glied Rechteck-Impulse zu erzeugen. Die Länge dieser Impulse dient in unserem Aufbau, als Basis um die Kapazitäten von Kondensatoren zu bestimmen.

Astabile Kippstufe

Die astabile Kippstufe oder der astabile Multivibrator ist eine selbsttätige Schaltung, die sofort nach dem Einschalten der Versorgungsspannung arbeitet. Diese Schaltung erzeugt in Abhängigkeit der Widerstände R1 und R2, sowie dem Kondensator C1 ein fortlaufendes Rechtecksignal.

Der IC Baustein NE555 eignet sich besonders, um mit nur wenigen zusätzlichen Bauteilen eine derartige Kippstufe zu entwickeln.

Für die Funktionsweise sind im wesentlichen die Bauteile R_1 , R_2 und C_1 verantwortlich. Der Kondensator C_2 sorgt nur dafür, dass die Schaltung nicht schwingt. Die Halbleiterdiode D ist optional und sorgt dafür, dass ein Impuls-Pausen-Verhältnis von 1:1 einstellbar ist.

Im Einschaltmoment ist der Kondensator C1 entladen. Dadurch liegt der Trigger-Eingang des NE555 (Pin 2) auf GND. Der erste Taktimpuls wird gestartet. Der Kondensator C_1 beginnt sich über die Widerstände R_1 und R_2  aufzuladen. Sobald am Kondensator C_1 2/3 von +VCC anliegt, wird das interne RS-Flip-Flop zurückgesetzt.

Die Dimensionierung der Bauteile kann entsprechend dem gewünschten Messbereich angepasst werden. Im vorliegenden Meßaufbau haben wir folgende Werte verwendet: R_1 = 1 k und  R_2 = 10 k. Damit werden ausgeglichene Signallaufzeiten erreicht. Ein nachgeschalteter Schmitt-Trigger (zB SN7414) erzeugt für den nachfolgenden Arduino-Eingang  steile Signalflanken und damit eindeutige Signalpegel.

Die aufgebaute Schaltung mit einem Arduino Uno:

Im ersten Versuch wurde noch die Monitor Funktion als Ausgabe verwendet, in einer weiteren Version dann ein eigenes Display hinzu genommen:

Berechnung der Periodendauer

Die Periodendauer eines astabilen Multivibrators berechnet sich nach folgenden Beziehungen:

>

    \[T = t_i + t_p\]

 Wobei t_i die Dauer für den Ladevorgang des Kondensators C_1 bezeichnet und  t_p die entsprechende Entladezeit angibt.

    \[t_i = \ln(2) \cdot (R_1+R_2) \cdot C_1\]

    \[t_p = \ln(2) \cdot R_2 \cdot C_1\]

Somit ergibt sich für die Periodendauer folgende Gleichung:

    \[T = \ln(2) \cdot (R_1+ 2\cdot R_2) \cdot C_1\]

Das Programm um die Kapazitäten mit dem Arduino zu bestimmen ist sehr übersichtlich. Es beginnt mit der Deklaration der benötigten Variablen. Im Hauptteil werden die Zeiten wo der Impuls auf HIGH und auf LOW steht bestimmt und gemittelt. Die  Kapazität des zu bestimmenden Kondensators ergibt sich dann über die Formel:

    \[C= \frac{1} {\ln(2) \cdot (R_1+ 2\cdot R_2) \cdot f}\]

Der Programmcode für den Testaufbau beinhaltet noch beide Ausgabeformen über den integrierten Monitor der IDE und über ein 4 Zeilen LCD mit I2C Schnittstelle und lässt sich natürlich beliebig an individuellen Vorstellungen anpassen:

Ergebnisse

Die ersten Test ergeben bei Kondensatoren mit kleinen Kapazitäten relativ gute Ergebnisse, wie die Nachfolgende kurze Auswertung zeigt. Bei größeren Kondensatoren kommen dann schon einige Ungenauigkeiten vor. Hier wäre die Verwendung sehr präziser Bauteile und eine entsprechende Vermessung und Anpassung der Werte in der Berechnungsformel eine Möglichkeit die Genauigkeit zu steigern. Aber für den geringen Aufwand kann sich das erreichte Ergebnis schon sehen lassen.

 

Wer die physikalischen Vorgänge beim Laden- und Entladen eines Kondensators über einen Widerstand genauer verstehen möchte, dem seien folgende Zusammenhänge genannt:

    \[U = R \cdot  I(t) +\frac {Q(t)} {C}\]

Da die Stromstärke I(t) der zeitlichen Ableitung der Ladung Q(t) entspricht ergibt sich daraus eine Differentialgleichung erster Ordnung:

    \[U = R \cdot \dot{Q(t)} +\frac{Q(t)} {C}\]

Eine DGL der Form y'+ya=0 hat eine Lösung der Form y=y_0 \cdot e^{-ax} damit ergibt sich folgende Gleichung für den Spannungsverlauf am Kondensator:

    \[U (t) =  U_0 \cdot e^{(-\frac{1} {RC}t)}\]

Im Internet finden sich komplette Ableitungen über die Lade- und Entlade-Beziehungen am Kondensator.