PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Prinzip elektronisches Stimmgerät



Fr4nk
11.02.2010, 06:44
Hallo zusammen,

wollte mir ein elektronisches Stimmgerät bauen. Gibt es mittlerweile sehr kostengünstig für ca. 15 €.

Am WE hatte ich so ein Ding in der Hand, da war fast nur ein Mikrocontroller und ein Mikrofon drauf, deshalb meine Idee so ein Gerät mit dem RN Control nachzubauen.

Hat jemand eine Idee was ich machen müsste um Frequenzen zu analysieren!?

Also der Kammerton-A mit dem Musikinstrumente gestimmt werden hat eine Frequenz von 440 Hz. Damit ist klar, mein Interesse gilt zuerst der 440 Hz-Frequenz.

Meine erste Idee war ein Lautsprecher/Mikrofon an einen Transistor zu schließen. Wenn dann ein Ton/Geräusch erklingt, müsste die Membran schwingen und der Transistor mit der Schwingung Ein-/Ausschalten.
Dieses Ein-/Ausschalten dürfte/könnte ausreichen um einen Interrupt(Extern oder ICM) zu füttern.

Weiß da jemand mehr?
Was haltet ihr von der Idee?

Beste Grüße
Frank

Hessibaby
11.02.2010, 08:27
Der einfachste Weg ist einen 440Hz Sinus zu erzeugen, dieser wird invertiert und mit der Eingangsfrequenz des Mikrofons gemischt. Wenn beide Frequenzen gleich sind wird die Ausgangsspannung am Mischer 0 Volt. Die selbe Übung machst Du mit 880 , 1760, usw..

Besserwessi
11.02.2010, 09:12
Es könnte sinnvoll sein das Signal vom Mikrofon (alternativ auch eine als Mikrofon genuzter Lautsprecher) mit einem transistor zu verstärken. Wenn es laut genug ist geht es auch ohne. Das Signal könnte man dann entweder an einen Komeratoreingang legen und den anderen Komeratoreingang so einstellen das man etwa 50 % tastverhältnis bekommt. Der Komperator könnte dann z.b. den ICP Interrupt für eine Frequenzmessung auslösen.

Die andere Möglichkeit wäre es das Signal vom Mikrofon über den AD-wandler einzulesen.

Bei einem Sauberen Signal sollte der Weg über die ICP Funktion ausreichen. Wenn man viel Störungen oder obertöne hat wäre der AD Wandler vermutlich besser. Da wird dann die Auswertung in Software gemacht. Die Mathematisch aber nicht ganz einfach zu verstehen. Die "Brute force" Methode wäre es an den aufgenommen Ton eine ggf. gedämpfte Sinusschwingung anzupassen nach der Methode der kleinsten Fehlerquadrate. Von der Rechenzeit und Speicher bedarf ist das aber eher was für den PC.

Eine mehr µC compatible Methode geht duch mischen, allerdings nicht so einfach wie Hessibaby vorgeschalgen hat. Das Mischen kann man gut digital im µC machen, durch Multiplicationen. Man braucht dabei 2 Mischer Kanäle die um 90 Grad phasenverschoben sind. Das Verfahren geht wirklich recht gut, ist aber mathematisch etwas schwer zu erklären.

Hessibaby
11.02.2010, 09:36
Die von mir beschriebene "Frequenzauslöschmethode" wir in der professionellen Messtechnik verwendet.
Dein Receiver für´s Fernsehen ( egal ob analog oder Digital ) arbeitet auch nach diesem Prinzip. Indem Du den Träger durch ein 180° phasenversetztes Signal "auslöschst" bleibt nur das Nutzsignal über.

Besserwessi
11.02.2010, 09:53
Das Auslöschen setzt aber voraus, das Frequenz , Phase und Amplitude stimmen - nur dann kreigt man wirklich Auslöschung. Mit 3 freien Parametern ist das ein echtes stochern im Heuhaufen.

Bei Trägern mit bekannter Phase, Amplitude und Frequenz ist das was ganz anderes. Wobei bei einer Trägerfrequenz auch mehr mit multiplikativer Mischung gearbeitet wird.

Der einfache Weg ist die ganz alte Methode über ein geübtes Gehöhr. Die Abweichung in der Frequenz hört man dann als Schwebung, als eine Art Auslöschung. Der µC ersetzt dabei die Stimmgabel, bzw. ein gut gestimmtes Instrument als vergleich.

Fr4nk
11.02.2010, 10:32
Schonmal schönen Dank für die ausführlichen Antworten.

Ich würde mich auch mit der mathematischen Seite beschäftigen, in welchem Buch schau ich nach?

Beste Grüße

Frank

Hessibaby
11.02.2010, 10:39
http://de.wikipedia.org/wiki/Signalanalyse

Besserwessi
11.02.2010, 15:38
Ein etwas besserer Link im Wikipedia, aber leider nur auf Englisch:

http://en.wikipedia.org/wiki/Pitch_detection_algorithm

Die Frequenzmessung ist leider kein so gängiges Problem in der digitalen Signalverarbeitung. Entsprechend findet man da oft nicht viel in normalen Büchern.

Hinzu kommt ja auch noch, das ein AVR µC nicht gerade super schnell ist, und eher wenig RAM hat. Dadurch fallen einige der Algorithmen schon wieder raus.

Das Verfahren das ich oben angedeutet habe, hab ich mal am PC programmiert, und es sollte vom Speicher und Rechenzeit auch zum µc passen. Das Programm hat sehr gut funktioniert. Im Web kommte ich allerdings auch schon damals keine Referenz darauf finden.

Die Idee ist eigentlich ganz einfach: Durch multipilkatives mischen wird die unbekannte Frequenz auf eine sehr kleine Frequenz um 0 verschoben.
Durch 2 Mischkanäle mit 90 Grad Phase hat man dann ein Complexes Signal mit Real und Imaginärteil. Die Frequenz kann in dieser Darstellung negativ und positiv sein. Ein Tiefpaßfilter kann so andere Frequenzen ausblenden und die Datenrate kann reduziert werden, sodaß die Rechnung danach nicht mehr so Zeitkritisch ist.

Für jeden Zeitpukt kann aus Real-und Imaginärteil über den ARCTAN die Phase bestimmt werden, und aus der Geschwindigkeit mit der sich die Phase ändert kreigt man die Frequenz. Zum Glück brauch man diese Rechnung nur noch mit einer sehr niedreigen Abtastrate ( z.B. 20/s), denn der Arcustangens ist eine ausgesprochen langsam zu berechnende Funktion.