Hallo, ich will mir eine Schaltung aufbauen, mit der es möglich ist, mit einem analogen Signalen (Sinusschwingungen) verschiedene Aktionen mit einem Atmega32 durchzuführen. Dabei stellt sich bei mir die Frage, wie ich einem Atmega eine Sinusschwingung auswerten kann. Der wichtige Parameter in meine Anwendung ist nur die Frequenz der Schwingung. Alles andere ist nebensächlich. Ich habe fest vorgegebene Frequenzen (z.B. 1000Hz,1500Hz,2000Hz) zum Auswerten. Letztenendes braucht ich nur z.B. für jede Frequenz ein Bit, das gesetzt wird, solange die dazugehörige Frequenz anliegt. Danke für eure Hilfe. Gruss Matthias
Zeit zwischen 2 Nulldurchgängen messen. Dafür gibt es mehrere Strategien. Die einfachste ist wohl der Einsatz der Input Capture Unit. Suche in der Codesammlung nach Frequenzzähler. Denn genau das machst du letztenendes.
Vielleicht einfach mit einem RC-Glied. Den Spannungsabfall mit einem AD-Wandler auswerten, falls die Amplitude gleich bleibt.
Reine Sinusschwingungen, oder eher ein wildes Frequenzgemisch, aus dem du deine Töne raushören willst? => Goertzel-Algorithmus Sozusagen FFT für wenige Frequenzen in billig. Gibt auch einige AVR-Umsetzungen davon z.B. zum DTMF-Dekodieren.
Die Lösung mit dem RC-Glied sieht für mich am einfachsten aus. Nur frage ich mich, ob der Kondensator schnell genug entladen ist. Ein Bit wird in einer Zeit von ca. 0,8ms übertragen. Danke schon mal für die Ideen. Matthias
>Ein Bit wird in einer Zeit von ca. 0,8ms übertragen.
Das passt mit 1000Hz (1ms) aber nicht zusammen.
Was willst du eigentlich wirklich machen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.