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
|
| <syntaxhighlight lang="matlab" style="background-color: #EFF1C1; font-size:small">
//----------------------------------- //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 |