⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beschreibung.txt

📁 AVR单片机实现FFT
💻 TXT
字号:
32 Kanal FFT Spektrum Analyser f黵 32x16 Display

Die eigentliche Auftrennung des Audiosignals in enthaltenen Frequenzkomponenten erfolgt komplett digital.
Dazu wird das Audiosignal mit 44kS digitalisiert und dann digital in 64 Frequenzkan鋖e aufgeteilt.
Durch die 44kS Samplerate kann der Tiefpassfilter entfallen, wenn man den Analyser an einem PC oder CD Player betreibt,
der sowiso nur mit 44kHz arbeitet und somit keine Frequenzen >22kHz ausgeben kann.
Allerdings ist die Aufl鰏ung von 22kHz/64=343Hz vor allem f黵 die niedrigen Frequenzen nicht gerade optimal.
Aus diesem Grund erfolgt eine zweite Messung mit 5,5kS, also etwa 2,7kHz Bandbreite. Die hiermit erreichbare Aufl鰏ung
liegt bei 2750Hz/64=43Hz, was auch bei tiefen Frequenzen eine ausreichende Genauigkeit liefert.
Dadurch entsteht allerdings ein Problem: 
Zeichnet man Daten mit einer geringeren Bandbreite auf, als diese im Signal vorkommen, erscheinen alle Frequnzen gespiegelt.
Hier ein Beispiel: Man zeichnet mit 2kS/s, hat also 1kHz Bandbreite, aber gibt ein Signal von 1,5kHz auf den Eingang.
Dieses erscheint bei 1kHz gespiegelt und erscheint dementsprechend bei 500Hz. Es gibt keine M鰃lichkeit zu unterscheiden,
ob das Signal bei 500Hz jetzt von einem Signal auf 500Hz, 1500Hz, 2500Hz, 3500Hz oder 4500Hz usw. stammt !

Daher ben鰐igt man einen m鰃lichst steilen Tiefpassfilter f黵 den tiefen Bereich, der alle gr鲞eren Frequenzen entfernt.
Am besten geht das mit einem Switched Capacitor Filter, der nicht nur steil ist, sondern auch eine einstellbare Grenzfrequenz hat.
Da der MAX292 leider absolut nirgends (au遝r als Sample bei Maxim) zu bekommen ist, habe ich diesen durch einen 
steilen, diskreten Tiefpass ersetzt. Dieser Filter ist ausreichend steil, und da ich trotz 2,7kHz Bandbreite nur 
1,3kHz verwende, reicht dieses Filter aus. Dieses muss nur sicherstellen, dass bis 1,3kHz das Signal unver鋘dert
durchgelassen wird, aber oberhalb von 4kHz nichts mehr durchkommt. 4kHz erscheinen n鋗lich, gespiegelt an der
2,75kHz Achse, bei 1,5kHz also au遝rhalb des benutzen Bereiches von 1,3kHz.

Der mit dem TLC272 aufgebaute Tiefpassfilter dient also zur Begrenzung des 5,5kS Bereichs.
Jede der beiden Messungen ergibt jeweils 64 Werte, die einigerma遝n logarithmisch zu 32 Werten zusammengefasst werden.
Dies geschieht durch Maximalwertbildung aus bis zu 8 Werten.
Diese 32 Werte werden in Grafikdaten f黵 ein 32x16 Display umgerechnet, und 黚er den UART mit 115,2kBaud versendet.
Vor Beginn der 躡ertragung geht der Sync Pin kurz auf Low, um den Adressz鋒ler des Empf鋘gers zur點kzusetzen.

Zur Geschwindigkeit:
Die FFT Routine arbeitet verdammt schnell und erreicht ca. 70 Messungen pro Sekunde ! Da ich mit zwei Messungen arbeite,
und die langsame Messung zus鋞zlich ausbremst erreiche ich insgesamt 30 Messungen pro Sekunde, was bei weitem ausreicht.

Der interne ADC des mega8 wird mit 44,3kS entsprechned 576kHz ADC Takt. Laut Datenblatt sind f黵 10bit Aufl鰏ung maximal
200kHz erlaubt. Daher erh鋖t man im oberen Frequenzbereich ein leichtes Rauschen, was dazu f黨rt, dass die unterste LED Reihe
leicht flackert, auch wenn kein Signal anliegt. Dies l鋝st sich aber l鰏en, indem man die unterste Zeile ausblendet (make_barsh Routine),
oder das ganze nur mit 22kS betreibt, was allerdings einen zus鋞zlichen 11kHz Tiefpass erfordert.

Der Watchdog dient dazu, den mega8 neu starten, falls sich die FFT Routine aufh鋘gt, was bei sehr starker 躡ersteuerung passiert.
Im Normalbetrieb sollte dies jedoch (fast) nie vorkommen.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -