Forum: Analoge Elektronik und Schaltungstechnik Sound Detektor mit High/Low Ausgabe (Mems Mic + OpAmp)


von Horst G. (juiced_iz)


Angehängte Dateien:

Lesenswert?

Hallo liebe Leute,

da ich über die Suche nicht zu dem fündig geworden bin, was ich brauche,
schreibe ich hier mal meine Gedanken.

Worum geht es:

Ich brauche einen Schall-Sensor, der nur auslöst wenn ein
überschwelliger Schallpegel auftritt. Das ganze soll dann als High/low
Signal an ein Arduino übermittelt werden, um hier einen Interrupt
auszulösen.

Das analoge auslesen mit softwarseitigem def. Schwellenwert ist
einfacher und naheliegender, aber die Schallsignale können sehr kurz
sein, so dass die Loop unter 100ms laufen müsste um die Signale sicher
zu detektieren.

Da noch andere Sachen in der Loop passieren ist es etwas unpraktisch.

Dazu soll das ganz so kompakt wie möglich bei 3.3V aufgebaut werden. Aus
diesem Grund kommt ein Mems-Mikrofon und ein Op-Amp mit DFN6 footprint
zum Einsatz.

Nach einigem belesen habe ich die im Anhang befindliche Schaltung
zusammengestellt.

Es wäre wunderbar, wenn mir hierzu jemand Kritik geben könnten, ob das
hardwareseitig funktionieren würde? - Der Schwellenwert soll per Poti
einstellbar sein.

Vielen Dank - Horst

: Verschoben durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Horst G. schrieb:
> die im Anhang befindliche Schaltung
Wieder so ein viereckiger Kasten.... :-/

Warum nimmst du nicht das allseits weltweit erkennbare und zudem 
leserliche Symbol für einen OPAmp?

Aber zur Beruhigung: die Schaltung wird funktionieren wenn du unterhalb 
vom C4 noch einen Punkt reinmalst. Und den C4 entfernst. Und auch den C2 
entfernst. Und statt des falschen Textes "J-FET" einfach BC847 o.ä. 
dranschreibst.

Warum machst du da eigentlich noch Widerstände an den Ausgang des 
MEMS-Mikros? Das Datenblatt verlangt die nicht. Lass also den R1 und R2 
auch noch weg.

> aber die Schallsignale können sehr kurz sein, so dass die Loop unter 100ms
> laufen müsste um die Signale sicher zu detektieren.
Warum läuft deine Hauptschleife so derartig langsam? Wenn meine 
Hauptschleifen länger als 10ms brauchen, dann suche ich den Fehler, der 
sie so langsam macht.

Wenn du das derzeit noch nicht hinbekommst (mit ein wenig mehr Übung und 
Nachdenken geht das leicht, weil der 16MHz-AVR-µC in dieser Zeit ja 1,6 
Millionen Maschinenbefehle ausführen kann), dann bastel noch ein 
Monoflop hinter deinen Pegelerkenungsmechanismus, das jeden auch noch 
so kurzen Impuls auf >100ms verlängert.

> Ich brauche einen Schall-Sensor, der nur auslöst wenn ein
> überschwelliger Schallpegel auftritt.
Ich würde da gar keinen großartigen externen Kladderadatsch ranbasteln, 
sondern den MEMS-Ausgang an den Anlaogeingang des µC anschließen, dann 
den Pegel mit einem ADC schnell genug einlesen und in der Software 
auswerten.

: Bearbeitet durch Moderator
von Sebastian R. (sebastian_r569)


Lesenswert?

Horst G. schrieb:
> Das ganze soll dann als High/low
> Signal an ein Arduino übermittelt werden, um hier einen Interrupt
> auszulösen.
>
> Das analoge auslesen mit softwarseitigem def. Schwellenwert ist
> einfacher und naheliegender, aber die Schallsignale können sehr kurz
> sein, so dass die Loop unter 100ms laufen müsste um die Signale sicher
> zu detektieren.

Je nach Controller hättest du dafür sogar einen Analog-Komparator mit 
Komparator-Interrupt oder ein ADC-Interrupt bei überschreiten eines 
bestimmten Wertes. Komplett in Hardware gegossen im Controller, die 
Software muss nichts machen, außer ab und an mal die Interruptflags 
anschauen.

Horst G. schrieb:
> Nach einigem belesen habe ich die im Anhang befindliche Schaltung
> zusammengestellt.

Nimm nen Dual-OP-Amp. Dann kannst du einen zum Verstärken des Signals 
(s. Datenblatt S. 3, Application Circuit) und einen als Komparator 
nehmen.

von Michael B. (laberkopp)


Lesenswert?

Horst G. schrieb:
> Nach einigem belesen habe ich die im Anhang befindliche Schaltung
> zusammengestellt.

Welcher J-Fet ist NPN ?

Die (Bipolartransistor) Schaltung ist abhängig von der Stromverstärkung 
des Exemplars, daher baut man so was seit 40 Jahren nicht mehr so auf, 
man müsste mit einem Trimmpoti justieren. Auch dein Pot1 ist Unsinn, 
wenn man es gleich richtig aufbaut.

Heute gibt es OpAmps.

von Klaus H. (hildek)


Lesenswert?

Lothar M. schrieb:
> Und den C4 entfernst. Und auch den C2 entfernst.
Mich würde interessieren, was der TO mit den beiden Cs bezwecken wollte.

von Horst G. (juiced_iz)


Lesenswert?

Vielen Dank für die schnellen Antworten.

Ich bitte um entschuldigung, wenn die Schaltung fehlerhaft ist. Wie Ihr 
bemerkt bin ich noch Anfänger und versuche mich Stück für Stück weiter 
zu entwickeln, was mir offensichtlich mit dieser Schaltung nicht 
gelungen ist.

Mir war es wichtig die Loop freizuhalten und wirklich nur mit einem 
Interrupt zu schalten.

Dass das auch im controller möglich ist war mir nicht bewusst. Ich 
dachte, dass jeder analoge Wert in der loop "geprüft" werden muss.

Mir ist es nur wichtig, dass jedes Signal sicher detektiert wird und 
hierbei die loop möglichst wenig beansprucht, (u.a. da das ganz so 
energiesparend wie möglich aufgebaut sein soll).

Ich werde versuchen die Schaltung nach Euren Anmerkungen zu optimieren 
und die Bezeichnungen zu korrigieren

von Horst G. (juiced_iz)


Lesenswert?

Klaus H. schrieb:
> Lothar M. schrieb:
>> Und den C4 entfernst. Und auch den C2 entfernst.
> Mich würde interessieren, was der TO mit den beiden Cs bezwecken wollte.

Ich habe die Schaltung von einer Vorlage abgewandelt, daher habe ich die 
drin gelassen.

von Robert M. (r0bm)


Angehängte Dateien:

Lesenswert?

Horst G. schrieb:
> Mir war es wichtig die Loop freizuhalten und wirklich nur mit einem
> Interrupt zu schalten.

Ein passender Vorschlag wurde schon weiter oben genannt, nämlich 
Vorverstärker und Komparator (Schmitt-Trigger) wie im Ahhang zu sehen. 
Der Controller hat wenig zu tun und muss nur die ankommenden Interrupts 
(3,3V Pegel) auswerten. Auch sehr kurze Tonbursts werden erkannt. Die 
Ansprechschwelle kann über den Vorverstärkungsfaktor und/oder Breite der 
Komparator-Schalthysterese festgelegt werden.

von Klaus H. (hildek)


Lesenswert?

Horst G. schrieb:
> Ich habe die Schaltung von einer Vorlage abgewandelt, daher habe ich die
> drin gelassen.

Dann würde mich die Vorlage interessieren - oder hast du 100pf mit 100nF 
verwechselt?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Vermutlich Abblockkondensator schlicht falsch eingezeichnet.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Horst G. schrieb:
> Ich habe die Schaltung von einer Vorlage abgewandelt, daher habe ich die
> drin gelassen.
Kannst du mal einen Link oder ein Foto zu dieser Schaltung posten?

: Bearbeitet durch Moderator
von Horst G. (juiced_iz)


Lesenswert?

Klaus H. schrieb:
> Horst G. schrieb:
>> Ich habe die Schaltung von einer Vorlage abgewandelt, daher habe ich die
>> drin gelassen.
>
> Dann würde mich die Vorlage interessieren - oder hast du 100pf mit 100nF
> verwechselt?

Sehr gerne, die Schaltung habe ich von dieser Seite abgewandelt:

https://www.electronicshub.org/interfacing-sound-sensor-with-arduino/

von Horst G. (juiced_iz)


Lesenswert?

Robert M. schrieb:
> Horst G. schrieb:
>> Mir war es wichtig die Loop freizuhalten und wirklich nur mit einem
>> Interrupt zu schalten.
>
> Ein passender Vorschlag wurde schon weiter oben genannt, nämlich
> Vorverstärker und Komparator (Schmitt-Trigger) wie im Ahhang zu sehen.
> Der Controller hat wenig zu tun und muss nur die ankommenden Interrupts
> (3,3V Pegel) auswerten. Auch sehr kurze Tonbursts werden erkannt. Die
> Ansprechschwelle kann über den Vorverstärkungsfaktor und/oder Breite der
> Komparator-Schalthysterese festgelegt werden.

Super, vielen Dank. Ich werde Die Schaltung mit den von mir benötigten 
Bauteilen modifizieren.

von Horst G. (juiced_iz)


Angehängte Dateien:

Lesenswert?

Anbei nun die neue Version mit den Änderungen. Wo müsste der Poti hin, 
damit ich die Schwelle einstellen kann? Direkt hinter Mic-Output?

von Purzel H. (hacky)


Lesenswert?

Die Schaltung sollte am Q1 ienen Spannungsteiler an der Basis haben, 
sinst in der Betriebspunkt unbestimmt.
Zudem ist die Schaltung zu schnell. Das sollte ein Tiefpass fuer die 
erwartete Frequenz sein. Es gibt kein Schallereigniss, welche zB nur 
10us kurz ist. Das waere eher ein Glitch, oder Einstrahlung.

von Steve van de Grens (roehrmond)


Lesenswert?

Horst G. schrieb:
> Anbei nun die neue Version mit den Änderungen.

Jetzt hast du Q1 mit einer Drahtbrücke außer Funktion gesetzt.

Unabhängig davon mehlt mir da eine vernünftige Einstellung des 
Arbeitspunktes von Q1. Die Schaltung hängt sehr von dessen 
Verstärkungsfaktor ab, die man vor dem Kauf nur erraten kann.

Bevor wir hier weiter übe die Schaltung diskutieren würde ich gerne 
sehen, wie das Ausgangssignal des Mikrofons aussieht und wie du das 
gewünschte Signal von unerwünschten Störungen trennen willst. Denn 
einfach nur auf eine simple Spannungs-Schwelle zu reagieren, klappt 
erfahrungsgemäß meistens nicht. Es gibt zu viele andere Geräusche, die 
dann unerwünscht erfasst werden.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.