PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bandpässe



Che Guevara
22.03.2010, 20:11
Hallo Leute,

um vorab gleich die Frage zu klären, JA ich habe die SuFu benutzt aber habe nichts gefunden, woraus ich schlau wurde. Habe AUCH google benutzt, aber auch damit wurde ich nicht so richtig schlau.
Also zu meinem Problem:

Für eine chillecke in meinen 4 Wänden möchte ich gerne eine Art "Musiklichtorgel". An einem Mega32 oder Mega644P möchte ich einen MP3-Player o.ä. anschließen. Nun soll der Chip die Musik mithilfe softwaretechnischer Bandpässe in 3 Teile zerlegen: Bass, Mitte und Höhe.
Was mich an der ganzen Sache verwirrt:
Hab mir gerade "Musik am Oszi angesehen" und anstatt einer Welle habe ich sehr viele gesehen. Allerdings hatten wir gerade in der Schule, dass, wenn ein Wellenberg auf ein Wellental trifft, sich die Amplitude je nach Größe der beiden verändert. Deswegen wäre ich von einer sehr stark "unnatürlichen" Welle ausgegangen.
Jetzt stellt sich mir die Frage:
Wie soll ich "eine Welle verfolgen"??
Mein Gedanke war, wenn der jetzige ADC-Wert geringer ist als der davor, wird ein Timer gestarten, welcher bis zu dem Punkt läuft, an dem der jetzige ADC-Wert wieder größer ist als der davor.
Jedoch befürchte ich, dass dann z.b. erst eine Basswelle die Messung startet und dann eine Hochwelle daherkommt und die Messung fälschlicherweise beendet.
Jedoch würde das in Wiederspruch mit den vielen Wellen stehen....
Außerdem komme ich nicht darauf, wie lange der GETADC(x) Befehl dauert (bei einem 16Mhz Quarz)??

Ich weiß, das sind sehr viele Fragen, aber ich hoffe, dass wenn jeder einen kleinen Teil dazu beiträgt, ich am Ende um einiges schlauer bin.
Vorerst würde es mir reichen, wenn mir die Werte einfach in Form von Words (etc.) zur Verfügung stehen würden. Diese könnte ich dann auf dem LCD ausgeben usw.....

Ich möchte hier auch keine!!! Musterlösung, sondern nur eine Erklärung / Beschreibung des Vorgangs und eine einigermaßen begründete Antwort auf meine Fragen.

Vielen Dank für eure Mühe
Gruß
Chris

Thomas$
22.03.2010, 20:38
du bist 17 ich denk dann könntest du dich ins thema fft einlesen ist nicht ganz einfach musst das anpassen an deine anprüche wieviel werte zur analyse genutzwerden sollen
aber die analoge löung mit bandpassen wird vileicht sogar einfacher werden

Che Guevara
22.03.2010, 21:07
Hallo thomas,

erstmal danke für deine Antwort.
Naja, also das soll jetzt kein Profi-Teil werden, ich denke das ist klar ;-)
Ich möchte so grob sagen, mit welcher Frequenz der Bass ankommt und wie hoch ca. die Amplitude ist, bzw. ob überhaupt ein Bass vorhanden ist (also ich lege selbst die Grenzwerte für die drei "Unterteilungen" fest).

Mit diesen Werten (also Frequenz und Amplitude) möchte ich dann ein paar leds ansteuern, wie genau und welche usw. darüber hab ich mir noch keine Gedanken gemacht, aber das wird ja relativ einfach.

Zunächst müsste ich die Musik auswerten.

Gruß
Chris

ranke
22.03.2010, 21:53
Hab mir gerade "Musik am Oszi angesehen" und anstatt einer Welle habe ich sehr viele gesehen.


Das ist eine "optische Täuschung". Man sieht viele Kurven, die scheinbar gleichzeitig übereinander geschrieben werden. Tatsächlich werden die Kurven aber nacheinander auf den Schirm geschrieben, kurz nachdem der Elektronenstrahl rechts verschwunden ist, fängt er links wieder an. Unser Auge ist relativ träge und meint, dass die Kurven alle gleichzeitig wären.
Es gehört zu einem definierten Zeitpunkt also nur genau ein Spannungswert (entspricht also im mathematischen Sinne der Definition einer Funktion der Spannung nach der Zeit).
Man kann mathematisch nachweisen, dass sich eine beliebige Funktion (sofern endlich oder periodisch) durch eine Addition von Sinusfunktionen verschiedener Frequenz und Amplitude darstellen kann. Genauso verhält sich die kompliziert geformte Schallfunktion dann auch in der Praxis. Man kann also durch Filter, die bestimmte Sinusfunktionen verstärken oder abschwächen auch die Schallfunktion bearbeiten und z.B. in Bass, Mitte und Höhen zerteilen.
Leider weiss ich kaum etwas von Softwarekonzepten zur Frequenzfilterung, kann Dir also sonst keine konkretere Hilfe anbieten.

Che Guevara
22.03.2010, 22:05
Bedeutet das also, dass Musik "nacheinander" aus dem MP3-Player usw. ausgegeben wird?!?!
Also z.b. erst die tiefen, dann die mittleren und dann die hohen Töne!?
Dann wäre das ganze ja wieder um einiges einfacher...

Gruß
Chris

ranke
23.03.2010, 07:57
Bedeutet das also, dass Musik "nacheinander" aus dem MP3-Player usw. ausgegeben wird?!?!
Also z.b. erst die tiefen, dann die mittleren und dann die hohen Töne!?


Nein, die Ausgabe eines Musiksignals ist eine elektrische Spannung, die sich mit der Zeit ändert. Im allgemeinen sieht man Schwingungen um die Nullinie, die aber nicht unbedingt nach Sinus aussehen. Alle hörbare Information ist in diesem einfachen Spannungssignal enthalten.
(Bei einem Stereosignal haben wir zwei unabhängige Spannungssignale, aber wir können uns erstmal auf ein Monosignal beschränken.)
Interessant ist die Überlegung, dass man das Musiksignal auf eine Addition von Sinusschwingungen zurückführen kann. Wenn man ein Bauteil (z.B. Filter) in den Signalweg einbaut, dessen Übertragungsverhalten man bezüglich Sinusschwingungen kennt, dann ist das Verhalten gegenüber der unbekannten (nicht nach Sinus aussehenden) Musikschwingung ebenfalls vorhersehbar. Solche Filter können in Analogtechnik ziemlich einfach ausgeführt werden, häufig wird z.B. ein Spannungsteiler aus einem Widerstand und einem Kondensator verwendet. Das Verhalten des Widerstands ist unabhängig von der Frequenz, der Kondensator hat für tiefe Frequenzen einen hohen Widerstand, für hohe Frequenzen einen niedrigen Widerstand. Damit kann man schon einen einfachen Hochpass oder Tiefpass bauen.

Felix G
23.03.2010, 08:45
Vielleicht noch etwas das dir helfen könnte, das Grundprinzip zu verstehen...

Wie ranke schon beschrieben hat, enthält Musik viele verschiedene Sinusschwingungen, die aber in der Summe eben nicht mehr wie ein Sinus aussehen. Also zeichne dir doch mal zwei Kurven auf ein Blatt Papier, nämlich einen Sinus mit hoher und einen Sinus mit niedriger Frequenz. Wenn du die dann addierst, wirst du etwas erhalten das zwar einem Sinus noch ähnelt, aber sehr verbeult ist. Macht man das gleiche mit sehr vielen Frequenzen, sieht man dem Signal zwar nicht mehr an daß es aus Sinusschwingungen zusammengesetzt wurde, aber trotzdem ist es so.

Was dich interessiert ist eigentlich, wie groß die summierte Amplitude der Sinusschwingungen in einem bestimmten Frequenzbereich ist. Dafür könnte man z.B. alle unerwünschten Frequenzen rausfiltern (mit einem Tief-, Band-, oder Hochpass). Das geht sowohl per Software (dazu müsstest du einen sog. FIR- oder IIR-Filter implementieren), als auch per Hardware (wie von ranke beschrieben).



Es gibt da allerdings noch ein Problem bei deinem Vorhaben, nämlich das sogenannte Abtasttheorem. Das besagt im wesentlichen, daß man um ein Signal einer bestimmten Frequenz zu messen, dieses mit der doppelten Frequenz abtasten muss. Möchtest du also einen 1kHz Sinus auswerten, muss der ADC mindestens mit 2kHz laufen, sonst kommt nix Vernünftiges dabei raus. Außerdem benötigt man aus dem gleichen Grund auch einen einfachen (Hardware-) Tiefpass vor dem ADC, der dafür sorgt daß eben keine "zu hohen" Frequenzen durch kommen können (denn die kann er eh nicht erfassen). Für dich bedeutet das, daß die Frequenz mit der dein ADC läuft, gleichzeitig auch festlegt, welche Frequenzen du überhaupt auswerten kannst. Möchtest du den gesamten hörbaren Frequenzbereich abdecken, der ca. bei 20kHz endet, muss dein ADC also mit mindestens 40kHz laufen.