Kondensator messen mit dem Arduino – Theorie, Aufbau und das Programm.

Der Arduino misst die Kapazität eines Kondensators.
Die Theorie, der Schaltungsaufbau und das Arduino Programm.

Die Schaltung:

Der Arduino Aufbau:

Das Programm:

// Arduino Kapazität Messgerät 10nF bis 2000uF
//
// Matthias Busse 12.12.2020 Version 1.2

#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

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.2");
}

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){
    if(microFarad < 100) {
      Serial.print(microFarad,2);         // uF.xx ausgeben
      Serial.println(" uF");
    }
    else {
      Serial.print((long)microFarad);     // uF ausgeben
      Serial.println(" uF");
    }
  }
  else {
    nanoFarad = microFarad * 1000.0;      // in nF umrechnen
    if(nanoFarad > 10) {
      Serial.print((long)nanoFarad);      // nF ausgeben
      Serial.println(" nF");
      }
    else
      Serial.println("kleiner 10 nF - keine Messung");  
  }
  // 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
}

> zum 2. Teil

von Matthias Busse @Youtube

Ein Gedanke zu „Kondensator messen mit dem Arduino – Theorie, Aufbau und das Programm.

  1. Pingback: Arduino Kondensator Messgerät mit LCD – Teil 2 | Shelvin – Elektronik ausprobiert und erläutert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.