mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 1kHz (+-100hz) detektieren mit NE567 und Arduion leiten


Autor: SWL DE8MSH (Firma: http://de8msh.blogspot.com/) (de8msh) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gerne ein 1kHz Ton Signal mit dem NE567 detektieren und das 
Ergebnis an den Arduino Uno weitergeben. Sinn und zweck soll CW Decoder 
sein.

Leider finde ich im Netz keinerlei Info zu so einer Schaltung. Wie muss 
ich das Setup bemessen?

Ich danke Euch für eine Info.

73

Autor: Einer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte der Arduino das nicht ohne Hilfe schaffen.

Autor: SWL DE8MSH (Firma: http://de8msh.blogspot.com/) (de8msh) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einer schrieb:
> Sollte der Arduino das nicht ohne Hilfe schaffen.

Vieleicht. Aber ich habe keinen Denkansatz.

Autor: Einer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aktiver Gleichrichter Tiefpass Komparator.
oder
Zu Rechteck verstärken Pulslänge auswerten.

Autor: Aldinator (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such mal nach "FFT" (Overkill wenn nur eine Frequenz erkannt werden 
soll)
oder nach "Goerzel"(-Algorithmus).
Der wird z.B. auch bei manchem DTMF-Dekoder verwendet (=>Suchen, alle 
Frequenzen bis auf eine aus dem Quelltext entfernen, auf 1kHz 
einstellen)

Autor: Aldinator (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, "t" verschluckt.
Hier ist ein Link:
http://de.wikipedia.org/wiki/Goertzel-Algorithmus

Autor: de8msh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

d.h. ich kann das relative leicht implementieren wenn ich

#define PI 3.14159265358979323844
// change the defines if you want to
#define SAMPLERATE 44100
#define BUFFERSIZE 8820
#define FREQUENCY 6000
#define NOISE 0.05
#define SIGNALVOLUME 0.8

setzte und diese Funktion

float goertzel(float *x, int N, float frequency, int samplerate) {
    float Skn, Skn1, Skn2;
    Skn = Skn1 = Skn2 = 0;

    for (int i=0; i<N; i++) {
    Skn2 = Skn1;
    Skn1 = Skn;
    Skn = 2*cos(2*PI*frequency/samplerate)*Skn1 - Skn2 + x[i];
    }

    float WNk = exp(-2*PI*frequency/samplerate); // this one ignores 
complex stuff
    //float WNk = exp(-2*j*PI*k/N);
    return (Skn - WNk*Skn1);
}

einbaue? Entnommen aus http://www.musicdsp.org/archive.php?classid=0#107

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.