Das Kondensator Meßgerät bekommt ein LCD Display.
Das Programm
// Arduino Kapazität Messgerät 10nF bis 4000uF // und auf einem 2 x 16 LCD Display ausgeben // // Matthias Busse 13.12.2020 Version 1.3 /* LCD Display Anschlüsse: LCD > Arduino ------------- VSS > GND VDD > +5V V0 > 10k Poti + 1kOhm Widerstand > GND RS > Pin 12 E > Pin 11 R/W > Pin 6 D4 > Pin 7 D5 > Pin 8 D6 > Pin 9 D7 > Pin 10 */ #define ladePin A4 // Kondensator lade Pin über einen 10kOhm Widerstand #define entladePin A5 // Kondensator entlade Pin über einen 220 Ohm Widerstand #define messPin A6 // Analog Messeingang #define widerstand 9996.0F // 10 kOhm > gemessen 9,996 kOhm #include <LiquidCrystal.h> LiquidCrystal lcd(12, 6, 11, 7, 8, 9, 10); long startZeit, vergangeneZeit; float microFarad, nanoFarad; void setup() { pinMode(ladePin, OUTPUT); // ladePin als Ausgang digitalWrite(ladePin, LOW); Serial.begin(38400); // Serielle Ausgabe Serial.println("Kapazitaet messen Version 1.3"); lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print("Kap. Meter V1.3"); } void loop() { // 1. Kondensator laden und Zeit messen digitalWrite(ladePin, HIGH); // ladePin auf 5V, das Laden beginnt startZeit = micros(); // Startzeit merken while(analogRead(messPin) < 648){} // bis 647 gemessen wird, das ist 63.2% von 1023 vergangeneZeit= micros() - startZeit - 114; // 0-Messung abziehen (112-116 us) if(vergangeneZeit > 2147483647) vergangeneZeit = 0; // Minuswerte auf 0 setzen (ist long deshalb der hohe Wert) // Umrechnung: us zu Sekunden ( 10^-6 ) und Farad zu mikroFarad ( 10^6 ), netto 1 microFarad = ((float)vergangeneZeit / widerstand); // 2. Werte ausgeben Serial.print(vergangeneZeit); // Zeit ausgeben Serial.print(" nS "); if (microFarad > 1){ lcd.setCursor(0,1); lcd.print(" uF "); if(microFarad < 100) { Serial.print(microFarad,2); // uF.xx ausgeben Serial.println(" uF"); lcd.setCursor(2,1); lcd.print(microFarad); } else { Serial.print((long)microFarad); // uF ausgeben Serial.println(" uF"); lcd.setCursor(2,1); lcd.print((long)microFarad ); } } else { nanoFarad = microFarad * 1000.0; // in nF umrechnen if(nanoFarad > 10) { Serial.print((long)nanoFarad); // nF ausgeben Serial.println(" nF"); lcd.setCursor(0,1); lcd.print(" nF "); lcd.setCursor(2,1); lcd.print(nanoFarad); } else { Serial.println("kleiner 10 nF - keine Messung"); lcd.setCursor(0,1); // Display ausgeben lcd.print("<10nF keine Mess"); } } // 3. Kondensator entladen digitalWrite(ladePin, LOW); // ladePin auf 0V pinMode(entladePin, OUTPUT); // entladePin wird Ausgang digitalWrite(entladePin, LOW); // entladePin auf 0V while(analogRead(messPin) > 0){} // bis der Kondensator entladen ist (0V) pinMode(entladePin, INPUT); // entladePin wird Eingang // 4. warten while((micros() - startZeit) < 500000){} // bis 500ms warten, d.h. max 2 Ausgaben pro Sekunde }
von Matthias Busse @Youtube
Pingback: Kondensator messen mit dem Arduino – Theorie, Aufbau und das Programm. | Shelvin – Elektronik ausprobiert und erläutert
Hallo Matthias,
Die LCD-Erweiterung ist sehr gelungen und macht Deine Schaltung natürlich noch alltagstauglicher.
Als HF-Freunde sind wir ja speziell im Antennenbau auch an Pico Farad Werten interessiert. Gibt es einen Blocker dafür, daß man mit dem Arduino Nano nicht unter 10nF messen kann?
Handbreit / vy73 de Pit
Die Zeit zum Aufladen des Kondensators wird dann zu kurz. Deshalb der größere Ladewiderstand. Aber wie hoch Du gehen kannst, das musst Du einfach ausprobieren.
Danke für die schnelle Antwort!
Ich muss erst noch mit meinem Bread-Board aufholen und die Schaltung wie bei Dir aufbauen. Dann würde ich gerne versuchen, wie weit man runter in Richtung pF kommt.
Wie in meinem anderen Beitrag erwähnt, schaffte das einfache PIC basierte Messgerät von AADE (Leider nun ein Silent Key und bekannt wegen seines Filterberechnungsprogramms) es mit einer Kalibrierung der Messklemmen. Vielleicht wählte er auch ein ganz anderes Messprinzip. Aber das wird sich zeigen, denn am Ende des Tages kocht ja dann doch alles mit Wasser.
Sehr schönes Projekt und extrem praxistauglich. Den ersten Teil (Ausgabe auf Seriellen Monitor) habe ich mal nachgebaut.
Wenn ich nicht schon ein Messgerät auch für Kapazitäten hätte, würde ich das auf Platine in einem kleinen Kästchen realisieren. Der Stromverbrauch dürfte sehr gering sein und eine Batterie müsste locker reichen. Für die LCD-Anzeigen gibt es ein kleines Zusatzmodul, damit kann man die Leitungen auf 4 reduzieren und das Poti für die Kontrasteinstellung ist auch schon drauf.
Hallo Matthias,
Der Nachbau hat mir Freude gemacht und ich konnte so einiege SMD Kondensatoren mal nachmessen, denn da steht nichts drauf.
Ich habe die Schaltung einmal mit einem OLED 0.91″ nachgebaut, dabei ist mir etwas aufgefallen.
Die Auflösung des micros() sind 4 µs , du ziehst auch die 114 µs Laufzeit wieder ab.
Bei der Ausgabe der Zeit (Tau) gibst du aber ns an. Ich meine es müsten µs sein.