Klopf­zei­chen mit einem pie­zo­elek­tri­schen Keramik-Sensor

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

Die Funk­ti­ons­wei­se des Kera­mik-Sen­sors beruht auf der Ent­de­ckung, dass durch den Druck auf die Ober­flä­che von Quarz­kris­tal­len und die dadurch beding­te Ver­for­mung elek­tri­sche Ladung ent­steht (direk­ter Pie­zo­ef­fekt).
Die Ladung, die man erhält, ist pro­por­tio­nal zu der Kraft, die ein­wirkt.
Über eine Elek­tro­nik, einen so genann­ten Ladungs­ver­stär­ker, wird die Ladung in ein ein­fach zu mes­sen­des 0 bis 5 V-Signal gewan­delt. Der Kera­mik­sen­sor ist ein ana­lo­ger Sen­sor, er wird am Anschluss A0 angeschlossen. 

Benö­tig­te Bauteile:

  • LED
  • Wider­stand 220 Ω
  • pie­zo­elek­tri­scher Keramiksensor
  • Laut­spre­cher
  • Lei­tungs­dräh­te

Beach­te die ➨ Vor­wi­der­stän­de ver­schie­de­ner LEDs

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Ana­lo­ger Anschluss A0

Jeder Druck auf den Sen­sor soll die LED kurz auf­leuch­ten las­sen. Gleich­zei­tig wird ein kur­zer Ton wiedergegeben.

Lege die Anschlüs­se und die Varia­ble für den Sen­sor­wert fest.

int LED = 7;
int PIEZO = A0; 
int LAUTSPRECHER = 5;
int SensorWert;

Da es sich um einen ana­lo­gen Sen­sor han­delt, liegt der Sen­sor­wert zwi­schen 0 und 1023. In der Pra­xis bewegt sich der Wert für den „unge­drück­ten“ Sen­sor zwi­schen 20 und 40.

Das muss bei der Fest­le­gung des Aus­lö­se­wer­tes berück­sich­tigt wer­den. Du kannst die­sen Wert im im Seri­el­len Moni­tor abfragen:

Du kannst den Seri­el­len Moni­tor auch mit der Tas­ten­kom­bi­na­ti­on strg+Umschalt+M starten.

Im set­up-Teil müs­sen die Aus­gän­ge zuge­ord­net und der Seri­el­le Moni­tor gestar­tet werden:

void setup()
{ 
  pinMode(LED, OUTPUT);
  pinMode(LAUTSPRECHER, OUTPUT);

  // Seriellen Monitor starten 
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}
}

Im loop-Teil wird der Wert des Sen­sors abge­fragt und im Seri­el­len Moni­tor angezeigt ...

void loop() 
{ 
  SensorWert = analogRead(PIEZO);   
  /* 
    damit der Auslösewert angepasst werden kann 
    Sensorwert anzeigen  
    kann danach auskommentiert werden 
  */ 
  Serial.println(SensorWert);

  /*  
    Wert festlegen an dem LED/Lautsprecher aktiviert werden              
    diesen Wert zwischen 20 und 80 anpassen, 
    wenn Klopfzeichen nicht (oder zu oft) erkannt werden 
  */
  int AusloeserWert = 40; 
  
  // wenn der Wert über dem Auslösewert liegt
  // LED/Lautsprecher einschalten  
  if (SensorWert >= AusloeserWert)  
  { 
    digitalWrite(LED, HIGH);  
    tone(LAUTSPRECHER, 1000);   
  
    /*   
      der Sensorwert braucht einige Zeit, 
      um wieder unter den Auslösewert zu fallen  
      der Wert muss eventuell größer oder kleiner sein  
    */ 
    delay(50); 
  } 
  else  
  { 
    digitalWrite(LED, LOW);  
    noTone(LAUTSPRECHER);
  }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 11. Okt 2023 @ 8:56