DIY Auto-Ranging Kapazitätsmesser (10 pF – 10 µF) – Einfacher Arduino-Nano-Bau
Komponenten und Zubehör
| Bauteil | Menge |
|---|---|
| Arduino Nano R3 | 1 |
| Alphanumerisches LCD 16×2 (HD44780-kompatibel) | 1 |
| Widerstand 10 kΩ | 1 |
| Widerstand 1 kΩ | 1 |
| Widerstand 1 MΩ | 1 |
| Potentiometer 10 kΩ (LCD-Kontrast) | 1 |
Werkzeuge
- Lötkolben & Zubehör
Software
- Arduino IDE
Funktionsprinzip
Einfache Digitalmultimeter können oft keine Kapazität messen. Dieses Projekt realisiert ein auto-rangierendes Kapazitätsmessgerät auf Arduino-Basis, das Kapazitäten von 10 pF bis 10.000 µF misst. Die Messung erfolgt vollautomatisch: Der zu messende Kondensator wird lediglich an die Messkontakte angeschlossen.
Messverfahren
Der Arduino lädt den unbekannten Kondensator über einen bekannten Widerstand (R) auf und misst die Zeit, bis die Kondensatorspannung einen bestimmten Schwellenwert (hier ca. 63 % der Versorgungsspannung = 1 τ) erreicht. Aus der Ladezeitkonstanten τ = R × C wird die Kapazität C berechnet.
Zwei Messbereiche werden automatisch umgeschaltet:
- nF-Bereich: Laden über 1 MΩ (Pin 8). Geeignet für kleine Kapazitäten (pF bis niedrige µF).
- µF-Bereich: Laden über 1 kΩ (Pin 7). Wird aktiviert, wenn die Ladezeit im nF-Bereich > 1 s beträgt (d. h. Kapazität zu groß für 1 MΩ).
Vor jeder Messung wird ein Nullabgleich (Offset-Kompensation) durchgeführt. Beim Einschalten darf kein Kondensator angeschlossen sein. Alle Testkondensatoren müssen vorab entladen sein.
Genauigkeit
Die Genauigkeit liegt bei ± wenige Prozent und hängt primär von der Toleranz der verwendeten Widerstände (1 %, 0,1 % empfohlen) und der Stabilität der Versorgungsspannung ab. Für präzisere Messungen sollten Präzisionswiderstände und eine stabile 5-V-Referenz verwendet werden.
Schaltplan
Der Schaltplan zeigt die minimalistische Beschaltung:
- Messkontakte an Arduino A0 (Analogeingang) und GND.
- Pin 7 und Pin 8 schalten die Ladewiderstände (1 kΩ bzw. 1 MΩ) auf den Kondensator.
- LCD an Pins 12 (RS), 11 (E), 5, 4, 3, 2 (D4–D7). Kontrast über Potentiometer an Vo.
Arduino-Code
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7
void setup() {
lcd.begin(16, 2);
pinMode(A0, INPUT);
}
unsigned long time0, time1, time2;
float capacitance, nullOffset;
byte rangeMode, rangeSwitch, initDone;
void loop() {
lcd.setCursor(15, 0);
lcd.print("*"); // Herzschlag-Indikator
// Bereich wählen: 0 = nF (1M), 1 = µF (1k)
if (rangeMode == 0) {
pinMode(8, OUTPUT);
pinMode(7, INPUT);
digitalWrite(8, HIGH); // Laden über 1M an Pin 8
} else {
pinMode(7, OUTPUT);
pinMode(8, INPUT);
digitalWrite(7, HIGH); // Laden über 1k an Pin 7
}
time0 = micros();
// Warten bis Schwellenwert ~63% (ADC-Wert 644 von 1023 bei 5V)
while (analogRead(A0) < 644) {
time2 = micros() - time0;
// Timeout 1s im nF-Bereich -> Umschalten auf µF-Bereich
if (time2 >= 1000000 && rangeMode == 0) {
rangeMode = 1;
time0 = 100000000; // Force break
break;
}
}
time1 = micros() - time0;
// Entladen über beide Pins auf LOW
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
while (analogRead(A0) > 0) { /* warten bis vollständig entladen */ }
// Zurückschalten auf nF-Bereich, wenn µF-Messung sehr schnell war
if (rangeMode == 1 && time1 < 1000) {
rangeMode = 0;
}
// Anzeige
lcd.setCursor(1, 0);
capacitance = time1 / 1000.0 - nullOffset; // Zeit in µs -> Skalierung
capacitance = abs(capacitance);
if (time1 >= 10000000) {
lcd.print(" TEST uF ");
} else {
lcd.print(capacitance);
if (rangeMode == 0) lcd.print(" nF ");
else lcd.print(" uF ");
}
// Einmaliger Nullabgleich beim ersten Durchlauf
if (initDone == 0) {
initDone++;
nullOffset = capacitance + 0.02;
}
delay(100);
}
Aufbau & Gehäuse
Die Schaltung wird auf Lochrasterplatine oder eigener PCB aufgebaut und in einem passenden Gehäuse untergebracht. Die Messkontakte (z. B. zwei Bananenbuchsen oder Schraubklemmen) sollten gut zugänglich sein. Das Gerät ist ein nützliches, kostengünstiges Werkzeug für jede Elektronik-Werkstatt.
Erweiterungsideen
- Serielle Ausgabe für Logging am PC.
- Automatische Erkennung von Kurzschluss/Defekt (ESR-Messung).
- Batteriebetrieb mit Low-Power-Modi.
- Erweiterung auf Induktivitätsmessung (RL-Verfahren).
Herstellungsprozess
- Smart Thirst Alert: DIY Pflanzen-Alarm für optimale Bewässerung
- 20-kHz-Arduino-Oszilloskop mit Nokia 5110 LCD – Einfacher DIY-Bau
- DIY ADXL335 Erdbeben-Detektor – Low-Power 3-Achsen-Beschleunigungsmesser-Projekt
- Italienische Word Clock mit Arduino Nano, NeoPixel, LCD & RTC
- Einfachen Hindernissensor mit Arduino bauen – IR-LED & Photodiode Tutorial
- Zuverlässiger Sigfox-kWh-Zähler mit Arduino MKR Fox 1200
- DIY-Frequenzzähler – Bis 6,5 MHz mit Arduino Nano messen
- Bluetooth-Temperaturmonitor mit Arduino Nano
- Isolierter Analogeingang für Arduino: Spannung/Strom galvanisch trennen
- Präziser Reaktionszeit-Test mit Arduino UNO