-         

Ergebnis 1 bis 6 von 6

Thema: Tonfrequenz zählen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21

    Tonfrequenz zählen

    Anzeige

    Hallo,

    ich habe vor ein Stimmgerät (Instrumente) zu bauen. Da steht mir aber der steinige Weg vom Mikrofon bis zu einem Wert, der der Frequenz enstpricht bevor. Inzwischen bin ich so weit, das ich eine kleine Mikrofonkapsel mit einem ebenso kleinen Verstärker verstärkt habe. Jetzt ist meine Frage, wie ich es weiter anpacken soll. Kann ich jetzt den Verstärker am AD wandler meines Atmega 128L anschliessen und die Nulldurchgänge oder so zählen? Reicht da die Rechenleistung überhaupt aus bei einer Tonfrequenz von über 500 Herz? Oder wie löst man das Problem am besten?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo Simon,

    Nulldurchgänge zählen bringt nichts. Auf alle Fälle musst du eine Hysterese implementieren. Sonst machen dir die Oberwellen deine Messung kaputt. Du musst Softwaremässig so etwas wie einen Schmitt Trigger nachbauen. Das ist aber seehr einfach.

    grüsse,
    Hannes

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo Simon92!

    Dafür baut/nimmt man einen Frequenzzähler, rechnet man alle benötigten Frequenzen aus und weist dennen entsprechende Tonnamen zu.

    Als Referenz wird international A = 440 Hz angenommen und alle Töne (12 Töne in einer Oktave inklusive Halbtöne) lassen sich aus hoffentlich bekannter Formel berechnen, da sie im Verhältnis zueinander wie im Code sind. Fur genaue Messung wird oft für niedrige Frequenzen die Periode (T) gemessen und in Frequenz umgerechnet F = 1 / T.

    MfG
    Code:
                12
          T1    --    ----
         ---- =   \  / 2   ~ 1, 059463094...
          T2       \/

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Töne die man zum Stimmen hat, sind in der Regel nicht besonders lang. Mit dem einfachen Zählen der Perioden kommt man da nicht unbedingt klar. Wenn man ein sauberes Signal hat, kann man die Zeiten der Nulldurchgänge messen und die Frequenz daraus berechenen. Das erlaubt auch bei kurzer Messzeit und eher niedrigern Frequenzen eine sehr hohe Auflösung.

    Wenn man eher viel Hintergrundgeräusche hat, gibt es einen besseren Weg:
    Das Signal wird digital aufgezeichnet und im RAM gespeichert. An das gemessene Signal wird dann per Least square Fit eine gedämpfte Siunsschwingung angepaßt. Mit einem µC hat man da aber 2 Schwierigkeiten: 1) Man hat nur recht wenig SRAM. Bei etwa 5 kHZ Datenrate und 8 Bit Auflösung reicht auch der Mega128 nur für gut 1 Sekunde. Das ist nicht viel sollte aber schon reichen.
    2) Die Rechenzeit kann schon recht lang werden. Man wird also vor allem die Berechnung der Sinusfunktion umgehen müssen. Man wird sich also ein paar Gedanken machen müssen wie man das effektiv programmiert. da gibt es aber einiges was man gegen dem direkten Weg beschleunigen kann. Mit einer Rechenzeit von rund 1-10 Sekunden würde ich aber schon rechnen.

    Wenn man erst man einen groben Schätzwert (ca. +-20%) der Frequenz hat geht der Feinabgleich normalerweise recht schnell. Vor allem wird man auch kaum durch Oberwellen und ähnliches gestört.

    Mit eine AVR Mega128 wird das vom RAM und der Rechenzeit (vermutlich) nicht so ideal. Ein ARM Controller mit mehr RAM wäre für diese Methode die bessere Wahl.


    Edit:
    Es ist sicher eine gute Idee mal das Signal vom Mikrofon per Soundkarte auf dem PC aufzuzeichen. Dann kann man beurteilen, ob man mit der einfacheren Zeitmessung auskommt, oder ob man über den AD-Wandler gehen muß.

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Man könnte es auch umgekehrt machen mit einem Generator von Referenztönen. In der Praxis wird z.B. in Bands meistens ein Keybord als Referenz genommen und z.B. alle Gitarren und Schlagzeug damit gestimmt.

    MfG
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo,

    weils zum Thema passt: Zufällig habe ich in der Vorbereitung auf mein neues Projekt den besprochenen Algorithmus benötigt und am PC programmiert. Er ist sehr genau und so einfach, dass er wenig Speicherplatz braucht.

    http://www.roboternetz.de/phpBB2/vie...=438349#438349

    grüsse,
    Hannes

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •