WS2025 - Sensortechnik - Trimmerkondensator

| Dozent: | Prof. Dr.-Ing. Schneider |
| Modul | Mechatronik, Antriebs- und Sensortechnik (Wahlpflichtprofil „Systems Design Engineering“), Wintersemester |
| Modulbezeichnung: | MTR-B-2-5.12 |
| Modulverantwortung: | Ulrich Schneider |
| Lehrveranstaltung: | Sensortechnik |
| Lektion: | 5: Kapazitive Sensoren |
Einleitung
siehe Artikel Trimmerkondensatoren
Aufgabe
- Bauen Sie die Schaltung entsprechend dem Wiki-Artikel auf.
Demo
DemoTrimmKondensator5pF.ino
|
//-----------------------------------
//Trimmkondensator auslesen
// Vcc (5V)
// |
// R = 5MΩ
// |
// +----> Arduino digital Pin D2 (Input)
// |
// C_trimmer (1.5..5 pF) --- GND
//
//
//
//
//
// arduino Uno Pin D2 Input
// Kabel miteinander verdrillen und kurz halten.
// Leitung und Steckbrett ergeben etwa 15-16pF Offset
//
//
//https://wiki.hshl.de/wiki/index.php/Trimmerkondensatoren#Prinziperkl%C3%A4rung
//22.10.2025
//-----------------------------------
const int measPin = 2; // Pin zum Messen
const unsigned int N = 200; // Mittelungsanzahl
const float C_pf_Leitung = 14.5; //Kapazität des Messaufbaus muss am Anfang gemessen werden und dann eingetragen werden.C_pf muss minimal1,5pF ergeben
const float C_pf_max =6.2; // Maximale Kapaziät des Kondensators
const float C_pf_min =1.5; // Minimale Kapazität de Kondensator
const unsigned int Drehwinkel =360; //Drehwinkel des Kondensators
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(measPin, INPUT);
}
//-----------------------------------
unsigned long measureTime()
{
// Entlade: Pin als Ausgang LOW kurz
pinMode(measPin, OUTPUT);
digitalWrite(measPin, LOW);
delayMicroseconds(20);
// Schalte auf INPUT (High-Z) und starte Zeitmessung bis HIGH
pinMode(measPin, INPUT);
unsigned long t0 = micros();
while (digitalRead(measPin) == LOW)
{
if (micros() - t0 > 1000000UL) return 0; // Timeout (sicher)
}
return micros() - t0;
}
//-----------------------------------
void loop() {
// put your main code here, to run repeatedly:
unsigned long sum = 0;
for (unsigned int i=0;i<N;i++){
unsigned long dt = measureTime();
if (dt==0) { Serial.println("Timeout"); break; }
sum += dt;
delayMicroseconds(100); // kurze Pause
}
float avg = (float)sum / N; // avg time in microseconds
// Näherung C = avg / R (R in seconds -> R [ohm] * C [F] = seconds)
float R = 4.96e6; // Ohm
float tau = avg * 1e-6; // s
float C = tau / R; // Farad
float C_pf = C * 1e12; // pF
float C_pf_mess = C_pf - C_pf_Leitung; // abzug der Kapaziät des Messaufbaus
//Umrechnung in Drehwinkel
float winkel=((C_pf_mess-C_pf_min)*Drehwinkel/(C_pf_max-C_pf_min))/2;
Serial.print("t_us="); Serial.print(avg);
Serial.print(" C_pf="); Serial.print(C_pf_mess, 3);
Serial.print(" Winkel="); Serial.println(winkel);
delay(200);
}
SVN Abgabeordnerhttps://svn.hshl.de/svn/SDE_Sensortechnik_MTR/trunk/Pruefung/WS2025/ → zurück zum Hauptartikel: WS2025 - Sensortechnik |