Forum: Mikrocontroller und Digitale Elektronik Signalerkennung


von Bruno F. (hdt)


Lesenswert?

Hallo,
ich suche eine Anregung, wie man eine Signalerkennung mit wenigen 
Bauteilen machen könnte.

Das (Ton)Signal stammt von herkömmlichen Digital-Timern (Kurzzeit-Timer, 
Küchen-Timer, Kitchen-Timer) Die haben überwiegend den gleichen 
Prozessor und entsprechend ist das Ton-Signal gleich.

- - - - kurze Pause - - - - kurze Pause - - - - längere Pause  usw.
Eine Signalfolge wie oben mit 3 x 4 Tönen und den zwei kurzen Pausen 
dauert geschätzt 3 Sekungen. Dann kommt die längere Pause von 1 Sekunde. 
Danach wieder von vorn.

Das Signal soll von einem Ton-Sensor mit Electret-Mikrofon erkannt 
werden.

Es geht mir hier nur um die Signalerkennung. Alles andere, Tonverstärker 
und Schaltstufe, ist nicht die Frage. Die Signalerkennung muß nicht 
unbedingt sofort bei der ersten Tonfolge schalten.

Hat jemand eine Idee? Mit Digital-ICs oder Mikrocontroller?

Gruß hdt

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Bruno F. schrieb:
> Mit Digital-ICs oder Mikrocontroller?

Mit ICs wohl kaum, dann schon eher FPGA. Aber am besten fährst du mit 
einem uC. Jetzt so aus der Hüfte wirds wohl ein Automat und was mit 
timern.

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


Lesenswert?

Bruno F. schrieb:
> Die haben überwiegend den gleichen Prozessor
Sicher?

> und entsprechend ist das Ton-Signal gleich.
Da würde ich aber noch ein paar Messungen machen, wenn da mit allen 
möglichen Geräten funktionieren soll...
BTW: was ist mit sonstigem Lärm?
Du hörst dank ausgefuchster Signalverarbeitung im Gehirn mämlich noch 
Sachen, die sind mit überschaubaren Mittlen schnell nicht mehr 
automatisch auffindbar. Du hörst und erkennst(!) den Piepser nämlich 
auch noch, wenn da ein Radio läuft und 5 Leute in der Küche diskutieren.

> Electret-Mikrofon ... Digital-ICs oder Mikrocontroller?
Mein Tipp aus der Praxis: ERST mal die Aufgabe genauer analysieren und 
spezifizieren. DANN nach einer Lösung suchen.

> Hat jemand eine Idee?
Tondecoder mit dem NE567.

Oder einer DFT für die gesuchte (wenn immer gleiche) Frequenz mit dem 
Goertzel-Algorithmus auf einem uC:
https://de.wikipedia.org/wiki/Goertzel-Algorithmus

: Bearbeitet durch Moderator
von Bruno F. (hdt)


Lesenswert?

Ich denke auch, daß es mit einem Mikrocontroller am einfachsten sein 
wird. Meine eigene (simple) Grundidee ist, das Signal "als Referenz" im 
Mikrocontroller zu speichern. Und sobald es ein gleiches von außen über 
den Ton-Sensor gibt, kann das mit UND-Gattern zum Schalten dienen.

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


Lesenswert?

Bruno F. schrieb:
> Ich denke auch, daß es mit einem Mikrocontroller am einfachsten sein
> wird. Meine eigene (simple) Grundidee ist, das Signal "als Referenz" im
> Mikrocontroller zu speichern.
Und dann mit einer Kreuzkorrelationsfunktion drüber zu gehen? Du kennst 
dich mit Signalverarbeitung gut aus?

> Und sobald es ein gleiches von außen über den Ton-Sensor gibt, kann das
> mit UND-Gattern zum Schalten dienen.
Lies mal meinen Post nochmal durch. Und wenn dir etwas unklar ist 
bezüglich der Fremdgeräusche, dann fragst du einfach nochmal.

Du stellst dir das mit dem µC offenbar ein wenig romantisch und simpel 
vor. Es gibt in einem µC keine Funktion im Sinne von 
is_signal_stored_in_ram_equal_with_real_world_signal(), die dann true 
oder false zurückgibt.

Ich hatte dir schon die einfachsten Lösungen genannt. Sieh sie dir 
einfach mal an...

: Bearbeitet durch Moderator
von Bruno F. (hdt)


Lesenswert?

Hallo Lothar
Selbstverständlich habe ich Deinen Beitrag gelesen. Ich kam nur noch 
nicht dazu, zu antworten.

Also das Signal ist immer gleich, davon muß man einfach mal ausgehen. 
(Man findet kaum einen solchen Digital-Timer, der anders "tönen" würde. 
Ich habe hier einige liegen.)

Und NEIN, ich kenne mich mit Programmierung überhaupt nicht aus.

Mit dem Tondecoder NE567 habe ich das Projekt vor einigen Jahren schon 
mal versucht. Es gab damals dafür keine vernünftige Schaltung im Web, 
hatte mich auch bei den Funk-Amateuren umgehört. Und dort sagte man mir 
schon, daß der NE567 nicht einfach sei. Das ist auch so. Hab dann selbst 
was gebastelt. Sehr umständlich zu justieren. Funktioniert hat es. Und 
Störungen durch Fremdgeräusche gab es nie. Aber es mangelt an einem 
professionellen Schaltplan. Ansonsten reicht die Auswertung der 
Tonfrequenz für diese simple Aufgabe völlig aus. Ich greife das gern 
wieder auf, aber es muß ein anständiger Schaltplan her.

Wenn es andere ICs für die Erkennung der Tonfrequenz gibt, versuche ich 
auch das gerne. Wie gesagt, das reicht völlig. Ich kann ja noch einen 
Zähler dahinter schalten, so daß es nicht gleich beim ersten Piepser 
schaltet.

Meine Vorstellung ist, daß sich mit einem Mikrocontroller der 
Schaltungsaufwand wesentlich reduzieren ließe.

Das Programmieren werde ich dann einem anderen übergeben, der solche 
Sachen  (gegen Bezahlung) macht. Wenn ich den hier über dieses Forum 
finde, wäre mir das recht. Aber ich werde das in der Vorplanung NICHT 
einem Fachmann überlassen. Der baut mir irgendwas, was ich nicht will.

Gruß
hdt

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bruno F. schrieb:
> Also das Signal ist immer gleich, davon muß man einfach mal ausgehen.

Das mag für das ausgegebene Signal zutreffen, d.h. das, was elektrisch 
am Schallwandler ankommt.

Aber das aufgenommene Signal ist mit recht hoher Wahrscheinlichkeit 
nie komplett gleich, sondern sich nur mehr oder weniger ähnlich.

Bereits atmosphärische Schwankungen (Luftdruck und -Feuchtigkeit) können 
sich auswirken, und eine geänderte Raumbedämpfung erst recht. Und die 
hast Du, wenn in dem Raum, in dem das Signal abgegeben wird, ein Mensch 
herumsteht, oder ein Vorhang etwas anders drapiert ist als sonst.

Auch ein gekipptes Fenster wird das Reflexions- und Dämpfungsverhalten 
in Deinem Raum beeinflussen, so daß das aufgezeichnete Signal nicht 
"gleich" ist.

Und sobald die geringsten Störgeräusche auftreten, ist eh gar nix mehr 
"gleich".



Du solltest stattdessen folgendermaßen vorgehen:

Audiosignal "anhören" und dabei das Frequenzspektrum analysieren. Wenn 
die Grundfrequenz des Piepens erkannt wird, und ein gewisser Signalpegel 
überschritten wird, kannst Du das als "erkannt" ansehen.
Das Stichwort lautet hier FFT.

Das kombinierst Du noch mit dem Zeitverhalten, so daß Du das ganze auf 
etwas wie

kein signal - 5 Sekunden Signal - 2 Sekunden kein Signal - 5 Sekunden 
Signal - kein Signal

herunterbrechen kannst.

von Bruno F. (hdt)


Lesenswert?

Danke Rufus!

Rufus Τ. F. schrieb:
> Bereits atmosphärische Schwankungen (Luftdruck und -Feuchtigkeit) können
> sich auswirken, und eine geänderte Raumbedämpfung erst recht. Und die
> hast Du, wenn in dem Raum, in dem das Signal abgegeben wird, ein Mensch
> herumsteht, oder ein Vorhang etwas anders drapiert ist als sonst.
>
> Auch ein gekipptes Fenster wird das Reflexions- und Dämpfungsverhalten
> in Deinem Raum beeinflussen, so daß das aufgezeichnete Signal nicht
> "gleich" ist.
>
> Und sobald die geringsten Störgeräusche auftreten, ist eh gar nix mehr
> "gleich".


Das ist ja alles richtig. Aber ebenso auch "für diese Anwendung" 
nebensächlich.
1. ist und bleibt das sagen wir mal "nur eine abschaltende Eieruhr". 
(auch wenn das nicht exakt die Anwendung ist)
2. wird das ausschließlich in ruhigen Umgebungen angewandt.
3. ist die Empfindlichkeit des Tonsensors sehr gering vorgesehen, da nur 
ein Abstand von maximal 1 Meter nötig ist.

Bei meinen Vorversuchen mit dem NE567 funktionierte das ohne jeglichen 
Störfall und sogar ohne eine extra Schallöffnung für das 
Electret-Mikrofon. Also durch das Gehäuse hindurch. So sollte es auch 
sein. Es war nur immer eine exakte Abgleichung nötig. Ich hätte es gern 
mit Festwerten ohne Trimmer gehabt. Aber das ging nicht.

Zur Sicherheit könnte ich einen Zähler nachschalten, CD4017 z.B. und 
damit verhindern, daß bei zufälligen Geräuschen gleicher Tonhöhe sofort 
reagiert.

Ich muß die Schaltung auf wenige Bauteile reduzieren. Wenn sich hier 
jetzt keine Vorschläge mit Mikrocontroller ergeben, werde ich die 
Versuche mit dem NE567 wieder aufnehmen. Den gibt es ja immer noch 
reichlich. Sogar in SMD.

Gruß
hdt

von Axel S. (a-za-z0-9)


Lesenswert?

Bruno F. schrieb:
> Hallo Lothar
> Selbstverständlich habe ich Deinen Beitrag gelesen. Ich kam nur noch
> nicht dazu, zu antworten.

Wirklich? Dein Post vor Lothars Nachfrage war keine Antwort?

> NEIN, ich kenne mich mit Programmierung überhaupt nicht aus.

Dann fang damit nicht mit diesem Projekt an. Sieh eher zu, daß du dein 
Mikrofon nahe genug an die Quelle bekommst - damit das Signal stark ist 
und Nebengeräusche schwach. Und dann bau eine analoge Lösung dahinter. 
NE567 wurde ja schon genannt. Etwas aufwendiger, aber dafür auch 
lehrreicher wäre ein aktives Bandfilter, gefolgt von Gleichrichter und 
Schwellwertdetektor. Wenn du keine Nebengeräusche hast, kannst du sogar 
den Bandfilter weglassen.

> Meine Vorstellung ist, daß sich mit einem Mikrocontroller der
> Schaltungsaufwand wesentlich reduzieren ließe.

Für jemand, der sich damit auskennt, durchaus.

> Das Programmieren werde ich dann einem anderen übergeben, der solche
> Sachen  (gegen Bezahlung) macht. Wenn ich den hier über dieses Forum
> finde, wäre mir das recht.

Das kannst du vermutlich knicken. Oder nicht bezahlen.

> Aber ich werde das in der Vorplanung NICHT einem Fachmann
> überlassen. Der baut mir irgendwas, was ich nicht will.

Du wandelst auf schmalen Pfaden. Je mehr du vorgibst, desto weniger 
Hilfe wirst du für die fehlenden Teile finden. Und es besteht die reale 
Chance, daß deine Vorgaben das Projekt praktisch unmöglich machen. Wenn 
du Vorgaben machen willst, dann mach Vorgaben nichttechnischer Natur. 
Einfacher gesagt: gib vor, was du haben willst. Nicht, wie es 
realisiert sein soll.

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


Lesenswert?

Bruno F. schrieb:
> Wenn sich hier jetzt keine Vorschläge mit Mikrocontroller ergeben
Ich würde es natürlich mit dem µC machen. Aber ich habe auch schon 
einige Designs mit µC gemacht und einige FFT/DFT implementiert (und 
dabei gelernt, das effizient zu machen).

Du wirst also ein wenig Zeit brauchen und dich in diese beiden 
Themenfelder (µC und Frequenzerkennung) einarbeiten müssen. Dann reicht 
letztlich auch ein relativ kleiner µC mit überschaubarer Rechenleistung.

von Michael W. (Gast)


Lesenswert?

toll, dass heute bei jeder einfachen Aufgabe gleich einen FPGA einsetzen 
wollen, am Besten noch mit CPU-Kern und Echtzeitsystem.

So eine einfache Ausgabe macht man mit zwei/drei Schwingkreisen, die den 
Ton detektieren, daraus gleichgerichtete Signale ausleiten und einem 
kleinen Schaltwerk, dass die Reihenfolge der Signale abtastet und 
meldet.

Vergleich Elektorhefte der 80er und 90er

von Philipp K. (philipp_k59)


Lesenswert?

Markus W. schrieb:
> am Besten noch mit CPU-Kern und Echtzeitsystem.

Kann man doch gleich Alexa reengineeren,hacken, anpassen und auf einen 
Raspi aufspielen :D :D

Sehr günstig!

von Karsten U. (herr_barium)


Lesenswert?

Ich würde ein Filter mit OPV vorschlagen, welches die Frequenz der 
Pieptöne herausfiltert. Mit dem Ausgangssignal würde ich einen 
Mikrokontroller zur Sicherheit bis 4 zählen lassen (damit die 
Gerüstbauer, die den Mädelz hinterherpfeifen nicht mitgezählt werden)

Den Zähler auf Null setzen, die gewünschte Aktion (Relais ansteuern 
etc.)
ausführen und dann bis zum nächsten Mal lauern.

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


Lesenswert?

Herr B. schrieb:
> würde ich einen Mikrokontroller zur Sicherheit bis 4 zählen lassen
> Den Zähler auf Null setzen, die gewünschte Aktion ausführen
Und natürlich den Zähler auch auf 0 setzen, wenn sich für 3 Sekunden 
nichts mehr getan hat... ;-)

von Karsten U. (herr_barium)


Lesenswert?

Lothar M. schrieb:
> Und natürlich den Zähler auch auf 0 setzen, wenn sich für 3 Sekunden
> nichts mehr getan hat... ;-)

Ja, natürlich.
:)
Praktisch so, wie man es bei einer Tastenentprellung auch machen würde.

von ElKo (Gast)


Lesenswert?

Bruno F. schrieb:
> Mit dem Tondecoder NE567 habe ich das Projekt vor einigen Jahren schon
> mal versucht. Es gab damals dafür keine vernünftige Schaltung im Web
> [...] Ich greife das gern wieder auf, aber es muß ein anständiger
> Schaltplan her.
Der Schaltplan im Datenblatt gefällt dir nicht? Was fehlt dir? Siehe 
Figure 16.
http://www.experimentalistsanonymous.com/diy/Datasheets/NE567.pdf

Bruno F. schrieb:
> Bei meinen Vorversuchen mit dem NE567 funktionierte das ohne jeglichen
> Störfall und sogar ohne eine extra Schallöffnung für das
> Electret-Mikrofon. Also durch das Gehäuse hindurch. So sollte es auch
> sein. Es war nur immer eine exakte Abgleichung nötig. Ich hätte es gern
> mit Festwerten ohne Trimmer gehabt. Aber das ging nicht.
Du kannst doch die Bandbreite für den zu detektierenden Ton sehr breit 
wählen. Lt. Datenblatt sind bis zu 14%, real vielleicht eher 10% BW 
möglich. Siehe Fig. 6. Ich hätte jetzt erwartet, dass man da etwas Spiel 
für die Bauteiltoleranzen bekommt.

Geht es eigentlich um große Stückzahlen, wenn händisches Trimmen ein 
Problem darstellt?

FFT kannst du natürlich auch machen. Wird auf keinen Fall einfacher. Und 
das Problem der Fertigungstoleranzen verlagerst du hier (in geringerem 
Maß) auf den Quarz.

von Holger (Gast)


Lesenswert?

Oh je, da verrenken sich wieder mal einige!

"....in ruhiger Umgebung".. nimm einen Klatsch- Schalter (tolle 
Schaltpläne im I-Net !!).

Der entspricht auch Deinem Wissensstand und benötigt keinerlei 
Programmierung!

von Georg (Gast)


Lesenswert?

Bruno F. schrieb:
> Aber ich werde das in der Vorplanung NICHT
> einem Fachmann überlassen. Der baut mir irgendwas, was ich nicht will

Wo du recht hast hast du Recht, die meisten Fachleute weigern sich Murks 
zu konstruieren, auch gegen Geld. Und es liegt ja sowieso im Trend, 
Fachleuten kein Wort zu glauben. Für die Rekrutierung von 
Nichtfachleuten bist du hier schon richtig, du musst nur alle Beiträge 
ignorieren, die sich vernünftig anhören.

Allerdings dürftest du sowieso die Kosten um Grössenordnungen 
unterschätzen, sowas geht nicht an einem Nachmittag und auch nicht für 
ein paar Flaschen Bier (aber falls doch spricht das für die gewünschte 
Nicht-Qualifikation, also sofort zuschlagen).

Georg

Beitrag #5100907 wurde von einem Moderator gelöscht.
von Joe F. (easylife)


Lesenswert?

Dieses Projekt hier wäre vielleicht ein Ansatzpunkt:

http://www.seattlerobotics.org/encoder/200112/elik.htm

Den Ausgang des Frequency-to-Voltage Converters würde man dann wieder 
mit einem Mikrokontroller mit ADC einlesen.

Vorteil: Der uC hat nur noch wenig zu tun (kein Audiosampling, FFT 
etc.).
Er muss nur noch den sehr niederfrequenten Spannungsverlauf auswerten.

Mit entsprechenden Toleranzgrenzen für Timing und Spannung (=Frequenz) 
kommt man dann vermutlich auch mit unterschiedlichen Signalgebern klar.

Bruno F. schrieb im Beitrag #5100907:
> Bin dann mal weg!

zu früh...

: Bearbeitet durch User
von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Tonsignal aufnehmen, gleichrichten, tiefpassfiltern und dann 
https://www.youtube.com/watch?v=rmcymjqFCDw

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.