[Arduino Uno] Piezo Analogread/Beat Led-Detector

Moin Leute,

Also, ich muss ein Projekt für dei Schule machen und hab mir dafür eine Art "Beat Detector" ausgewählt, das ganze soll später so funktionieren, dass wenn ich ein Lied laufen lasse sollen eine LED-Reihe von 8 Leds aufleuchten, jenach Stärke vom Beat, leuchten mehrere Led's auf. Dafür benutze ich folgendes Piezo-Element: http://puu.sh/7w6F4.jpg

Meine Steckplatine sieht folgendermaßen aus: Natürlich werde ich bei meinem Projekt mehrere Led's anschließen, dies ist jetzt nur zur Darstellung geeignet: http://puu.sh/7w3R7.png

Und hier noch mein Code:

int ledPin = 8;
int piezoSensor = A2;               
byte value = 0;
int statePin = LOW;
int THRESHOLD = 10;  // if it's too sensitive then change this value

void setup() 
{
 pinMode(ledPin, OUTPUT); 
}

void loop() 
{
  value = analogRead(piezoSensor);     
  if (value >= THRESHOLD) {        // check the piezo
    statePin = !statePin;       // sets the pin to the opposite state
    digitalWrite(ledPin, statePin); // turn on or off the LED
  }
}

Benutzte Hardware:

  • 1x CEM 1203(42) Piezo
  • 1x MegaOhm Widerstand
  • 1x 330 Ohm Widerstand
  • 1x Red-LED
  • 1x 5.1V Diode

Also mein Problem ist, dass ich, egal wie tief ich die "THRESHOLD" Variable stelle, die Led nicht aufblinkt, ich vermute dass mein Piezo falsch angeschlossen ist oder er generell nicht funktioniert... Könnt ihr mir vielleicht dabei helfen,

Vielen Dank im Vorraus,
UnoSnap:)

Lass Dir mal die Werte von analogread im Serial Monitor anzeigen.

Ja, gute Idee:)
Also habs jetzt mal anders angeschlossen, und den SerialMonitor ma in den Code reingepackt, und jetzt immer wenn ich etwas an der Diode wackel, blinkt die led immer wieder kurz auf und im SMonitor bekomm ich auch eine Meldung ("Knock")...:confused:

Danke,
UnoSnap

So hab die Werte vom analogread im Monitor ausgeben lassen, und hab dann wieder das gleiche Probleem, die Werte steigen erst, wenn ich an der Diode fuchtel...:confused:

UnoSnap

Dann kommen wir mal zum nächsten Part: wozu ist der 220R Widerstand parallel zum Piezo gut?
Mach den mal in Reihe vor die Diode, also zwischen Piezo und Diode.

Oh Sorry, das sollte ieg ein 1Mega Ohm Widerstand sein:/
moment ich zeig mal, wie ich es jetzt angeschlossen hab, warte nur 5 Minuten:)

UnoSnap

So hab ich es jetzt angeschlossen: http://puu.sh/7wa9L.png

UnoSnap

Ok, und jetzt noch den letzten Sketch bitte.

UnoSnap:
So hab ich es jetzt angeschlossen: http://puu.sh/7wa9L.png

UnoSnap

mit dem 1MOhm Widerstand in serie zum Eingang wirst Du nichts essen. Der Widerstand ist zu hochohmig damit der interne Sample and Hold Kondensator geladen werden kann.
Ich habe aber leider keinen Vorschlag wie die Schaltung funktionieren könnte.
Grüße Uwe

Hab mir mal das Datenblatt für den CEM1203 angeschaut. Das ist ja ein Buzzer, der wird als Micro kaum die nötige Spannung bringen um den arduino aus der Ecke zu locken.

Nimm ein Kristallmikrofon oder ein Elektret mit 1-Transistor-Vorverstärker, spätestens mit dem letztgenannten wirst Du glücklich.

Erstmal danke an euch alle für eure Antworten!:slight_smile:

@Klaus_ww(1): Den Sketch hab ich nicht geändert, der ist der gleiche wie oben schon gepostet:)
@Klaus_ww(2): Naja bei mir wurde der als "Piezo" mitgeliefert und dachte mir das müsste reichen, weil ich eben schon öfters gleiche Projekte mit einem (anderen) Piezo gesehen hab. Ich frag dann einfach mal mein Lehrer ob ich mir dann noch ein Mikrofon dazu kaufen kann, meinst du etwas in der Art?: Recommendations For You - DealeXtreme
@uwefed: Hab das mit dem 1MegaOhm Widerstand im Internet gelesen, anscheinend bräuchte man einen solchen um genaue Werte vom Piezo messen zu können?!:confused:

Danke nochmals!
UnoSnap

UnoSnap:
@Klaus_ww(1): Den Sketch hab ich nicht geändert, der ist der gleiche wie oben schon gepostet:)

... meinst du etwas in der Art?: http://dx.com/p/arduino-microphone-sound-detection-sensor-module-red-135533#.UyQrKYXg97o

Der Sketch kann nicht der gleiche sein, wenn Du serielle Ausgaben eingebaut hast. Aber das spielt jetzt keine größere Rolle, es wäre aber nicht das erste Mal, dass beim rumfummeln sich andere Fehler einschleichen.

Das Modul ist fein, da hast Du analoges wie digitales Signal. Sehr universell einsetzbar.

Achja, aber das waren ja nur 2 Zeilen mehr;)

Ok, ich bestell mir das Modul dann mal, vielen Dank! Ich werd es auch hier bekanntgeben, wenn alles funktioniert und vielleicht ein kleines Tutorial machen für die, die Ähnliches vorhaben.:slight_smile:

UnoSnap

Hallo,
der Piezo müsste eigentlich in beiden Richtungen funktionieren, wenn du einen 1MOhm Widerstand Parallel zum Piezo schaltest, müsste bei lauten Geräuschen ein messbares Signal am Wiederstand abfallen. Evtl. lege die interne Referenz auf 1V.
Was mir noch aufgefallen ist, du hast deinen Wert Value als Byte deklariert, somit diesen Wert auf 0 bis 254 begrenzt, analogRead gibt eigentlich Werte von 0-1023 aus, deswegen wären die Ergebnisse von Serial.print(Value) recht aufschlussreich.

So hey Leute:)
Also ich hab das Piezo jetzt auf der Seite gelassen und anstatt dafür einfach ein Klinkenkabel genommen, das durchgeschnitten und das Left Kabel am Analogen 0 angeschlossen und Grnd natürlich auf Grnd. Das ganze funktioniert super, zb wenn ich ein Lied aufm Handy abspiele dann reagieren die LED's jenach Lautstärke anders.Hab auch noch ein kleines Video gemacht und gebe euch dann auch nochmal den Code, wenn vielleicht ein anderer noch daran interessiert ist:)
Danke euch allen,

UnoSnap

Video: www.puu.sh/7Bm5L.wmv
Code: VU Meter Project 2014 - Pastebin.com
Schaltung/Tutorial: What happened to the old ZXQ website? | ZXQ

Gut zu erfahren, dass so ein Kopfhörerausgang bei mittlerer Lautstärke ca. +- 1 V liefert.
Ist zwar etwas ausserhalb der Spezifikation, sowas direkt auf einen Analog-Eingang zu geben, aber man kann sich offensichtlich viele elektrische und Software - Klimmzüge sparen, wenn man Vertrauen in die Robustheit eines atmega chips hat..

Danke.