aktualisier mal Benedikt oben hab ich ja von 40mhz geschrieben !
Hab noch ein paar TMS320BC52 hier liegen, wollte schonmal was mit machen, aber ohne C Compiler oder Assembler und ohne irgendwelche Anleitunge ist der Einstieg ziemlich unmöglich. Die Software kostet irgendwas im 3 oder 4 stelligen Bereich wenn ich das richtig gelesen habe, und eine Demoversion habe ich nirgends gefunden.
sag mir mal den name der soft bzw für ein versuch könnten wir uns ja die soft..........organisieren was möchtest du fü einen tms320bc52
Schau mal bei Pollin, da gibts ein Intel Web Meeting Set für 29,95. Da ist eine NTSC Farbkamera, eine ISA ISDN Karte, Kabel, Mikrofon und eine Audio/Video Karte dabei. Auf dieser sind zwei schnelle 32kB SRAMs als Speicher für den TMS320, ein Video ADC, ein AD8xxx Soundport (ne simple Soundkarte) und noch andere schöne Sachen. Welchen Zweck der TMS320 genau erfüllt kann ich nicht sagen, aber irgendeine Videokompression anscheinend.
benedikt könntest du mir solch einen wie du hast verkaufen ? wenn ja für wieviel - mein ich nun ernst ! das mit dem programmieren könnte ich hinbekommen ! bzw müsstest du nen neuen code machen ?
weil ich denke wenn schon n spec analyzer mit ner fft dann richtig ! und in 1/3 oct schritten
Die 2 oder 3 Stück die ich habe wollte ich eigentlich selbst verwenden (irgenwann mal, wenn ich eine passende Platine für dieses 0,4mm Raster habe. Kauf dir doch die Karte bei Pollin, das ist einfacher. Den Rest kannst du ja bei Ebay verkaufen. Ich habe jetzt doch eine Software auf der TI Seite gefunden: Unter DSP, Getting Startet, How Do I geht Going ?, C5000 Platform Morgen früh werde ich dann hoffentlich die Software haben (227MB über ISDN...)
grundsätzliche Frage an dich Benedikt ! wenn das mit dem DSP klappt wäre dann über eine 1/3 Oct Einteilung wie oben beschrieben zu überlegen ? denn dann wäre halt auch das Bild viel schöner ! weil im Tiefpassbereich deutlich mehr Balken zu sehen wären !
Was is denn, wenn ihr ne Zoom-FFT macht? Habt ihr euch schon mal die dsPic's von Microchip angeschaut? Ach so noch was, die Auflösung der FFT entspricht doch delta_f = fa/N ....? Gruß Björn
Wenn das mit dem DSP klappt, dann sind 10Hz Auflösung kein Problem. Der langsamste aus der TMS320C52 Reihe schafft 20MHz. Da er in einem Taktzyklus eine 16x16 Multiplikation macht, ist er um einiges schneller als der AVR. Eine 4096 Punkt FFT sollte daher kein Problem sein um 11Hz Auflösung zu erhalten.
wäre ja sogar erschwinglich der DSP !!!! bzw ein spezielles Programmierboarboard für den DSP macht mir grad noch Sorgen !
So wie ich das verstanden habe, hat der DSP keinen ROM, sondern das Programm wird bei jedem Programmstart neu in den SRAM geladen. Dies scheint bei diesen DSP häufig der Fall zu sein: Auf meiner DVB-S Karte sitzt auch irgendein TMS320 als MPEG Dekoder. Bei jedem Programmstart wird ein ein paar 100kB großes Prgramm in den DSP geladen.
hi, wie Björn schon schrieb, schaut Euch mal die dsPICs von Microchip an. Die können 30MIPS und haben auch eine MAC usw. - und die gibt's mit Flash. Es ist eigentlich bei allen DSPs so, daß man einen externen Flash o.ä. fürs Programm braucht. 512Pkte. sollten mit dem dsPIC gehen, so aus dem Bauch raus, bei mehr wird der Speicher knapp. cf
bei dem früher VU hatte ich einen 27C512 er Eprom dafür hergenommen 512 punkte wären auch ausreichend viel genauer jedoch die 4096
Hallo, Microchip stellt für den dsPIC30F sogar eine optimierte FFT-Funktion zum download bereit. Eine 256-Punkte FFT (komplex) soll in 635µs gehen. C-Compiler und Simulator gibts kostenlos. Der C-Compiler soll angeblich ne 60-Tage Demo sein, kann ich bisher allerdings nicht bestätigen. Hab ihn schon länger auf dem Rechner, und er läuft immer noch. Hier der Link, falls es interessiert: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010091 Gruß Thorsten
512 Punkt sind nicht ausreichend, wenn man eine FFT macht: Mit 1024 Punkten erreicht man 43Hz Auflösung, so wie ich es gerade habe. Macht man dagegen wieder zwei FFTs (eine mit 44kS, die andere mit 5,5Ks) ist man schon bei 5Hz Auflösung !
wie sieht es denn mit der Soft aus Benedikt hast du was erreicht mit dem DSP den du daheim hast ? Frage @Benedikt wie alt bist n du ? ja 4096 wären schon super... wie programmiert man denn den DSP ? mit nem Board ??? ich habe ihn damals über JTAG programmiert
Leute, folgendes: Ihr wollt eine 4096Punkte fft machen. D.h. Ihr müßt 4096 Abtastwerte vorhalten, die nehmen jeweils 16Bit in Anspruch. Das sind alleine für die Abtastwerte 4096*16Bit=64kb. Dazu kommen dann die Werte für die berechnete fft. Das sind komplexe Ergebnisse, d.h. 32Bit pro Werte, also 128kb. Das ist eine Menge Holz... Ich hab mir da auch mal ein paar Gedanken drüber gemacht, so wie Benedikt es vorschlägt ist es doch super, also das ganze aufteilen in mehrere ffts. Habt Ihr Euch schon mal überlegt, einen digitalen Tiefpaß zu realisieren um das "downsampling" von 44kHz auf 5,5kHz o.ä. zu machen? @Thorsten: Hast Du eine eval board von dem dsPIC? Ich arbeite bei einer Firma mit einem und würde gern privat ein bißchen was mit denen machen. Weiß aber nicht, wo man ein Evaluation Board o.ä. bekommen kann. Letztes Jahr während dem design contest hat man wohl recht günstig ein dsPICDEM1.1 bekommen können, das hab ich leider verpasst... Kennst Du Bezugsquellen? Gruß, cf
@ChristianF Leider habe ich kein Board. Ich bin kürzlich günstig an einige dsPIC30F6014 gekommen und werde mir jetzt selbst ein Minimalboard auf Lochrasterplatine bauen. Den dsPIC hab ich schon auf ne Adapterplatine gelötet. Bisher habe ich nur mit dem Simulator gearbeitet aber was ich da gesehen habe, hat mich schon sehr begeistert. Gruß Thorsten
Thorsten: Ich find die Teile auch ok, aber 30MIPS sind halt nicht die Welt. Aber es ist für einen Hobbyisten schon einiges... Hast Du so ein ICD-2 Teil? Wo hast Du die Prozessoren herbekommen? Was hast Du bezahlt? ;-) Vielleicht versuche ich sogar mal, ein kleines Evaluation Board zu layouten, aber ich hab sooo viele Pläne und wenig Zeit... zu der FFT Geschichte: Sorry, das sind natürlich nur 4096*16Bit=64kbit=8kb, also 24kb für Eingangswerte+Ausgangswerte, wenn die Eingangswerte der fft rein reell vorgehalten werden können. Ist immer noch sehr viel... Gruß, Christian
Ich hab mir einen ICD2 Clone gebaut, hängt mit nem FT232 an USB und funktioniert sehr gut. Habe es allerdings nocht nicht mit den dsPICs probiert, ich gehe aber davon aus das es tut denn bei den PIC10, PIC16 und PIC18 hat es auch problemlos funktioniert. Die Prozessoren habe ich bei eBay erstanden, der Preis lag bei 6 Euro/St. incl. Versand. Hab die dort eher zufällig entdeckt und sofort zugegriffen da ich schon seit längerem überlege, mal was mit 16 Bittern zu machen. Und warum sollen es nicht die dsPICs sein? Thorsten
Hi Thorsten, danke für die Infos, werde mir vielleicht auch so ein ICD 2 nachbauen, ich nehme mal an mit google finde ich da genug... Viel Spaß beim basteln, Christian
Kann man die dsPICs mit der Schaltung programmieren ? Wenn ja, dann bestell ich mir einem DSPIC30F2010-30I bei Digikey. Kostet ca. 11$, also vermutlich so um die 10 Das ist der einzige der ein DIP Gehäuse hat...
Ja, er ist ICSP-tauglich. Funktioniert im Prinzip genauso wie bei allen anderen PICs auch. Bruachst nur ne 5-polige Stiftleiste vorsehen: Pin 1 : /RESET 2 : (VCC) 3 : GND 4 : Data 5 : Clock 4-5 kann auch umgekehrt sein, weiß grad nicht. Hast du ein Programmiergerät dafür?
Ich habe noch garnichts, daher frage ich ja, ob man den ICD2 Nachbau von dem Link für den dsPIC verwenden kann. Ich habe noch nie mit PICs gearbeitet, werde demnächst mit anfangen und dann auch mal die dsPICs testen.
Ich kann dir morgen (oder vielleicht schon heute Abend) sagen, ob der Nachbau funktioniert.
Ich habe gerade mal nachgeschaut: Der dsPIC30F2010 hat nur 512Bytes SRAM. Für eine ordentliche FFT bräuchte man schon den F6010, der hat 8192 Bytes, aber ist warscheinlich nicht ganz billig. An sich ist der AVR ja schnell genug, nur es fehlt an RAM. d.h. man müsste auf den mega8515 mit externem 64kB 15ns SRAM umsteigen, und einen externen ADC verwenden.
Benedikt: Ich weiß, daß man den 6010 für um die 20$ kriegt, in Stückzahlen. EInzelstücke werden vielleicht so 30Euro kosten, wenn man die überhaupt irgendwo beziehen kann. Allerdings würd ich den 6014 nehmen, der hat einen 12Bit-ADU gegenüber 10Bit beim 6010.
währ es net viel besser einfach 2 avrs zu nehmen ? ein für tiefen ein für hochton bereich ?
geht ja nicht hat Benedikt ja schon probiert ! eine FFT (Fast Furier Transformation) digitalisiert ja nur ein Spektrum (von 0 - Samplerate/2 ) Herz da kannst nicht irgendwo anfangen deshalb ja der Filter vor der 2. FFT und du hast immer Übergänge sei es z.b. in der Geschwindigkeit deshalb wäre ein vernünftiger DSP doch schon viel besser habe mit PICs auch noch nichts gemacht ich könnte sie aber in einer Elektronikfirma programmieren
im H-Mpeg (www.h-mpeg.de) Mp3 Player wurde auch ein 8515 er atmel mit einem externen RAM verwendet
Autor: Philip Datum: 09.02.2005 18:31 --------------------------------------------------------------------- für uns alle ;) ? dumme Frage! liese sich machen!
Hallo, die gängigen DSPs muß man bei jedem einschalten neu programmieren. Natürlich kann man sowas machen, aber man brauch noch einen externen Speicher, einen 2. Prozessor der das Programm lädt o.ä. usw. Das ist recht kompliziert... Meiner bescheidenen Meinung nach kann man in der Tat mehrere Atmels nehmen, z.B. einen mit f_s=44kHz für 5...22kHz (oder so) und einen anderen mit f_s2=10kHz für 0...5kHz. Das Problem mit den unterschiedlichen Geschwindigkeiten bekommt man ganz einfach dadurch in den Griff, daß man bei dem Prozessor, der entsprechend "schneller" ist, nicht jedes Ergebnis auf dem Display ausgibt/eine Mittelung durchführt/usw., auf jeden Fall so, daß die Aktualisierungsintervalle ähnlich sind. Bei entsprechend schnellem Prozessor geht sowas auch mit einem, versteht sich, aber so macht es Benedikt ja...
es geht ja nun darum andere Intervalle zu bekommen ! eine exaktere Teilung ! soe wie sie die Studioanalyzer haben (Terzbänder) also 20 25 30,5 40 hz usw... das ist ja grad das problem
und? 512Pkte bei f_s=10kHz macht immerhin 10000/512 Hz=20Hz Abstände. Das müßte man sich halt mal ausrechnen und überlegen, wie man das so aufteilen könnte...
Reicht denn die Lösung von ape nicht ? Ein mega32 mit 2x 512 Punkt FFTs liefert im Bereich 0-2kHz eine Auflösung von 10,8Hz und im Bereich bis 22kHz eine Auflösung von 86Hz. Und das sollte doch reichen, oder ?
Frage: warum nicht 7 sehr steile Filter machen die 1. FFT von 0 bis 2,75 khz Ausgabe auf's Display ! dann die 2. FFT mit nem Bandpass 2,75 bis 22khz starten Ausgabe aufs Display usw... dan hätte mal zwar 8 Schaltungen aber die liesen sich ja durch SMD Technik auf einer 100x160 er Platine unterbringen ! dann könnte man über die paar Herz eine FFT mit 4096 Punkten legen
meinst du jetzt einfach 7 einzelne komplett getrente ? die dann ihre eigenen leds? haben ? sprich jeder FFT hat ein paar leds die er ansteuert.. und sonst keine aufgabe? die anderen machen dann die anderen bereiche ?
Autor: Benedikt Datum: 09.02.2005 20:48 ------------------------------------------------------------------------ -------- Reicht denn die Lösung von ape nicht ? Ein mega32 mit 2x 512 Punkt FFTs liefert im Bereich 0-2kHz eine Auflösung von 10,8Hz und im Bereich bis 22kHz eine Auflösung von 86Hz. Und das sollte doch reichen, oder ? sorry habe deinen Post zu spät gelesen ! das wäre ja fantastisch !!!
zumal ich noch 2 atmega 16 und 32 in smd daheim habe ! gut das machen wir !
problem ! die Samplerate ist wieder bei 22khz oder ? wo gibt es denn den Code ? könnte mal einer Licht ins dunkle schaffen ?
Auch auf die Gefahr hin, dass ich mich wiederhole: Macht doch ne Zoom-FFT und dann am besten noch zwei
ist zwar offtopic, aber erklär mal bitte wie das funzt mit ner Zoom-FFT? ich weiss nicht so genau was das ist-.-
Was ist eine Zoom-FFT ? @Matthias Asselborn Schau mal weiter oben, da gibts den Code von ape. Den musst du nur noch mit meinem mischen um die FFTs auf 512 Punkt anzupassen aber als Ausgabe den UART zu verwenden.
frage ich mich auch schon die ganze Zeit ist das eine FFT die NUR einen speziellen Bereich fasst ? @Benedikt könntest du mir da mal helfen ! weil dein code C und der von Ape ASM ?! assembler kann ich leider nicht bzw hoffe es im Studium noch zu lernen
Ja mit ner Zoom-FFT lassen sich bestimmt bereiche im Spektrum berechnen. Ich hab auch da mal nen Protokoll von mir rangehängt. Das ist zwar ziemlich hektisch mit Abgabetermin im Nacken zusammen geschrieben, aber das Prinzip sollte zu erkennen sein. Ach ja und ich weiß per Definition berechnet die DFT das Spektrum von 0-Fa ;-) Gruß Björn
ja gut mir würde aber trotzdem die von Benedikt angesprochene Variante besser gefallen Ein mega32 mit 2x 512 Punkt FFTs liefert im Bereich 0-2kHz eine Auflösung von 10,8Hz und im Bereich bis 22kHz eine Auflösung von 86Hz. könntest du mirmit dem Code helfen ? c und asm mixen ? evtl hinter die Zeilen schreiben was geschiet ? grüßles matthias
@benedikt hast du nen lauffähigen code für eine 512er FFT? Hab den Thread eben durchgescrollt und nichts gefunden. Aber mit 2 512 Punkte FFTs wär auch ein mega32 speichertechnisch überfordert oder (Ich hab jetzt nich nachgerechnet aber ich denke nichtmal eine würde ohne Probleme passen)?
@ape Hast du nur einen 256er FFT im mega32 ? Du hast doch die Schleifenzähler usw. schon auf 16bit geändert, so dass man eigentlich nur noch auf 512 umstellen muss ? Gena nachgerechnet habe ich nicht, aber eine 128 Punkt FFT braucht ca. 860Byte, und eine 512er sollte daher mit 4kB auskommen.
der mega32 hat aber nur 2kB SRAM :P Hab gerade nachgerechnet: 512 Punkte benötigen 3328 Bytes. Man bräuchte also mindestens einen mega64 oder ein externes SRAM. Und ich benutze sogar nur eine 128er FFT. Die Zähler auf 16 Bit zu erweitern hat leider nicht das gewünschte Ergebnis erbracht, da in der do_fft routine anscheinend noch ein anderer Wert bis FFT_N zählt und mit diesem auch multipliziert wird (Ich vermute es ist das u bzw. XH). Soll heißen man müßte noch eine 16Bit Multiplikation einbauen. Das war mir so auf die Schnelle mit meinen bescheidenen asm-Kenntnissen zu aufwendig. 2 128 Punkte FFTs reichen mir aber auch. Wobei man mit 512 Punkten die gleiche Auflösung (~40Hz) bei der gleichen Bandbreite (0-11kHz) mit einer einzigen FFT erreichen würde.
Stimmt, der mega32 hat nur 2k, hatte das mit dem 64er verwechselt. Ich fasse mal kurz das bisherige zusammen: Im unteren Frequenzbereich wird eine Auflösung von 10Hz benötigt. Dafür benötigt man eine 4096 Punkt FFT für den Bereich 0-22kHz. Eine 4096 Punkt FFT lässt sich mit AVRs also nicht verwirklichen, und andere DSPs die dazu in der Lage wären (also genügend Speicher und Rechenleistung haben), sind nicht gerade günstig, und würden daher kaum einen Vorteil gegenüber eines diskreten Spektrum Analysers bieten. Somit bleibt nur die Lösung mit mehreren 128 Punkt FFTs und dem MAX29x: a) Tiefer Bereich mit 1,385kS/s für 0-500Hz mit 10,8Hz Auflösung b) Mittlerer Bereich mit 5,54kS/s für 0-2kHz mit 40Hz Auflösung c) Hoher Bereich mit 44,3kS/s für 0-22kHz. Warscheinlich wird das ganze auf 2-3uC hinauslaufen: Einer für den mittleren und hohen Bereich, und einer für den tiefen. Im tiefen Bereich benötigt der uC alleine schon 100ms nur um die Daten aufzzeichnen. Der zweite uC macht den restliche Frequenzbereich. Die Daten könnte man auf dem Tiefbereich uC verarbeiten und zusammenfassen, da der sich während der Aufzeichnung langweilt. So hätte man insgesamt 192 Messwerte, die man zu 16-64 Werten mit einigermaßen logarithmischer Verteilung zusammenfassen kann.
hab ich aber schon oft vorgeschlagen z.b. 3 oder am besten 4 ffts zu machen
Problem dabei dürfte aber sein, das, wie du schon selber geschrieben hast, der tiefebereichnur nur gut 10 berechnungen schafft ergo die komplette FFT nur 10mal pro Sekunde refreshed wird. Man könnte zwar die höheren Frequenzen öfter refreshen, aber in den Tiefen kommt man da nich drumrum. Wobei mir gerade doch eine evtl. Lösung einfällt. Möglicherweise könnte man einfach immer die zweite Hälfte des Capture Buffers in die erste kopieren und dann nur die zweite wieder auffüllen, so dass man überlappende Bereiche hätte. Damit ließe sich die Refreshrate verdoppeln oder auch noch mehr wenn man eine noch größere Überlappung nimmt. Und bei dieser niedrigen Samplingrate sollte es auch machbar sein den Buffer shcnelle genug umzukopieren, do dass keine Samples verloren gehen.
was spricht gegen einen externen speicher ? die kosten nichts ! und gibt es in 16..32..64kb..
Gegen einen externen RAM spricht, dass man dann einen externen ADC braucht, da es keine AVRs mit Datenbus und ADC gibt, zumindest nicht in der billigen Preisklasse. Zumindest habe auf die schnelle keine gefunden. Insgesamt wird alles dadurch aufwendiger. Für 3 FFTs sollte der mega32 problemlos ausreichen, eigentlich sogar auch der mega8
ich bin auch dafür das wir das einfach mit mehreren avrs machen, ist billiger und einfacher., was bringt es jetzt teure hardware zu nehmen, wenn man fürs gleiche geld einen komplett fertig aufgebauten bekommt... 3-4 FFts sind da viel praktischer...
@ Björn ich habe mir mal dein script durchgelesen, sehr schön erklärt, mir ist nur aufgefallen das du "Hanning-Fenster" geschrieben hast, ich aber in büchern immer vom Hemming-Fenster lese. Was ist nun richtig ?
@philip: gegen so viele FFTs spricht, das es 1) sau langsam ist 2) wesentlich größerer hardware aufwand, weil mehrere AVRs, die jeder nen tiefpass-filter brauchen 3) damit einhergehend wesentlich mehr platzbedarf (Für nen LED Spec Analyser mag das nich so das Problem sein, aber bei mir ist kleiner = besser) und 4) is das spektrum an den übergängen halt immer irgendwie unterbrochen. Bei Musik fällts i.d.R. nich so auf aber wenn nen sinus durchläuft sieht mans doch recht deutlich. und 5) hör ich gerade von dir immer ich will, ich will, ich will und meistens nichts konstruktives...
ja mei ape, ich kann in dem bereich nicht viel dazu bei tragen, weil mir die möglichkeiten fehlen, ich helfe Matze so weit ich kann, wir kennen uns scho recht lange, aber mehr als ein paar ideen kann ich nicht beitragen... naja was soll ich sonst machen, wenn du dich jetzt darüber auf regst tja sorry kann ich nix machen, dann ignorier mich oder so... ich werds überleben
@ape Den Übergang sieht man nur, wenn man die Werte 1:1 anzeigt. Bei meiner Anzeige sieht man den Übergang bei weitem nicht so deutlich wie bei deinem LCD, das ich versuchte eine einigermaßen logarithmische Anzeige zu bekommen, indem ich mehrere Werte zusammenfasse um so bei hohen Frequenzen die Auflösung zu verringern.
folgendes erst mal ne Streiten !! es war nur eine Idee mit dem externen Speicher da der halt im Mp3 Player damals auch recht hilfreich war die Daten der CD dort zwichenzuspeichern ect.... andererseits habt ihr schon recht @externer AD weil der von analog devices n 24 bitter gleich mal 30 euro kostet oder bin ich da nicht mehr auf dem laufenden ganz am anfang hab ich schon vorgeschlagen das ganze mit mehreren filtern bzw atmels mit fft dahinter zu schalten also 4 ffts dürften ja reichen .... oder von CS weis nicht Crystal glaub ich hatte ich mal n DA für 12 euro da ... es kommt halt dann auf die Filter drauf an ...denke ich wenn die net exakt sind ist das alles nicht so optimal @ape wie wirkt sich das auf die Geschwindigkeit aus ? müsste ich mal aufbauen und guggen
@ape :is das spektrum an den übergängen halt immer irgendwie unterbrochen. Bei Musik fällts i.d.R. nich so auf aber wenn nen sinus durchläuft sieht mans doch recht deutlich. ja gut das wusste ich nicht ist das echt so extrem ? also liegt es an den filtern .......
Die Unterbrechung kann man per Software vollständig kompensieren, denn die FFTs liefern alle dasselbe Ergebnis (nur mit unterschiedlichen Auflösungen für unterschiedliche Bereiche). Egal ob mal die Gleichung 5*5+5*x=5*10 löst, oder 5+x=10, es kommt dasselbe raus. Dasselbe ist bei FFT: Dies ist ja im Prinzip eine umkehrbare, mathematische Berechnung.
@Benedikt: Sofern es noch von Interesse ist, der dsPIC30F6014 lässt sich problemlos mit dem ICD Nachbau programmieren und auch debuggen. Sollte mit anderen Typen also auch funktionieren. Gruß Thorsten
Für das FFT Projekt vielleicht nicht, aber da ich sowiso mit PICs demnächst arbeiten werde, werde ich mir die dsPICs auf jedenfall mal anschauen und testen.
Ich habe gerade mal die letzen Fehler aus meinen 32MS/s DSO mit einem AVR behoben und dabei mal alle möglichen Signale am Spektrum Analyser gemessen. Eigentlich hätte die Schaltung garnicht funktionieren dürfen, denn ich hatte ein paar schlimme Softwarefehler drin. Der mega8 schiebt die Daten zum Display mit rund 30fps raus, also rund die Hälfte der Orginalsoftware. Immerhin muss der uC jetzt ja auch 2 128 Punkt FFTs machen. Fazit: Die 5,5kS bremsen kaum was aus, wenn man z.B. die Zusammenfassung und die Übertragung der Daten in die Samplingphase für die 5,5kS legt. Werden allerdings 3 FFTs verwendet, sollte man für die ganz langsame doch einen 2. uC verwenden. Ich denke ich werde daher mal die Idee von ape ausprobieren, immer nur eine Hälfte des Samplingpuffers neu aufzufüllen. Allerdings benötigt man dazu zwei Samplingpuffer, da während der FFT die Aufzeichnung unterbrochen wird und so eine Lücke entstehen würde. Es wäre ja ungünstig, wenn sich während der FFT die Daten ändern...
also um n 2. µC wäre es nicht ! ist doch egal ein oder 2 Smd Atmels auf der Platte ?! würde fast 4 FFT s machen ! was hältst du davon ?
@matthias: Also der Preis wär bei nem externen AD noch das geringste Problem, es gibt auch welche für 3 und 24 Bit wäre nu wirklich etwas übertrieben (abgesehen davon das die Software nur mit 16 Bit rechnet und da ich mir noch nich die Mühe gemacht habe die Berechnung genauer zu untersuchen könnts auch sein das nichtmal mehr als die 10Bit des internen ADs gehen, da sonst möglicherweise Variablen überlaufen könnten) @benedikt: wenn man die FFTs nacheinander auf einem AVR macht sind sie eben nicht genau gleich, da sich das Spektrum ja ändert, die FFTs also das Spektrum zu unterschiedlichen Zeiten darstellen. Außerdem wird das Spektrum am Ende des Frequenzbereiches einer FFT durch die einsetzende Dämpfung des Filters verfälscht. Und ich denke man würde mit einem Sampling-Buffer auskommen, wenn man diesen als Ring-Buffer auslegt. Vor Beginn der FFT werden die Samples ja in den Butterfly-Buffer geladen, das geht ja recht schnell. Der AD-Wandler sampled dann halt die ganze Zeit durch und im Buffer liegen immer die letzten 128 Samples.
ja also was spricht dann gegen n externen rom bzw ad ? die 3 sachen wären doch dann die hauptbestandteile der fft platine ! @ape welcher 16bitter AD z.b. @3-4 euro
Wer redet von 16 Bit? Der Interne macht 10 Bit und das ist vollkommen ausreichend. z.B. Microchip MCP320x mit dem hab ich sehr gute Erfahrungen gemacht. Das ist ein 12 Bit Wandler. Preis auf der Microchip Seite: 1,91$ (für den zweikanaligen) Wird im Einzelstück wahrscheinlich noch ein bisschen mehr sein und ich weiß auch nich ob man den hier irgendwo kaufen kann, aber 10 bis 12Bit Wandler gibs wie Sand am Meer und die kosten alle nich so viel. Aber bei den externen Wandlern ist das Ergebnis auslesen etwas aufwendiger und es ist wieder ein Bauteil mehr. Abgesehen davon hat man halt immernoch das Problem, das man auch mit externem Speicher nich beliebig viele FFTs in einem AVR machen kann, weil das dann einfach zu langsam wird.
@ape >Außerdem wird das Spektrum am Ende des Frequenzbereiches einer FFT >durch die einsetzende Dämpfung des Filters verfälscht. Wenn man nicht alle Werte verwendet, sondern nur die unteren 2/3, dann hat mand amit keine Probleme. Bei 3 FFTs kann man das auch bedenkenlos machen. Meine Idee wie ich das ganze machen würde: Ein mega8 macht die FFT für die 5,5kS/44kS und sendet die Daten an den zweiten mega8. Dieser macht die langsame FFT und setzt alle 3 FFTs zu einem logarithmischen Gesamtspektrum zusammen, bei dem man keine Übergänge sieht.
@Benedikt wenn du die zeit hättest, ich hätte ein lied, das du vielleicht mal drüber laufen lassen könntest, würde es dir per mail schicken oderwo hochladen, bitte mal wenn du zeit hast mit cam apfilmen, mich würde mal die leistung des spectrums interessieren die wir gerade haben... falls du zeit hast meld dich doch kurz..
Ich habe ein kleines Problem mit der Software im mega8: Mein LED Display hat jetzt eine getrennte Spannungsversorgung (6V, max. 3A über LM2576) von der restlichen Elektronik bekommen. Beides läuft an einem 12V Netzteil. Je nachdem wieviele LEDs an sind, zieht das ganze bis zu 3A (auf der 12V Seite). Wenn ich zu laut mache, bricht anscheinend die Spannung zusammen, und der mega8 hängt sich auf. Eigentlich sollte der Watchdog ihn dann nach einer viertel Sekunde resetten. Kann man jemand über den Code schauen, ob irgendwo ein Fehler bei der Watchdogroutine ist? Ich bin eigentlich der Meinung, dass der Watchdog funktionieren müsste.
> in r16, WDTCR > ori r16, (1<<WDCE) | (1<<WDE) > out WDTCR, r16 > ldi r16, (1<<WDE) | (1<<WDP2) > out WDTCR, r16 Mhmm du schreibst zuerst das WDE und WDCE in den control-register und gleich danach nochmal WDE und WDP2. Ich hab das Datenblatt jetzt nur überflogen aber wenn ich das richtig verstanden habe brauchst du zum aktivieren des watchdog timer nicht das WDCE-Bit setzen. Nichts desto trotz sollte es eigentlich funktionieren :)
Ich hatte es erst anderst, also WDT aktiviert und gleichzeitig den Rest gesetzt, dann ging es nicht. Ich habe alles mal extrem übersteuert, so dass die Spannung wirklich total zusammenbricht, dann erkennt man den Reset (wenn 1/4s lang alles steht). Manchmal bleibt aber alles trotzdem hängen. Keine Ahnung warum.
So hab jetzt meine Version auch mal in der Codesammlung veröffentlicht: http://www.mikrocontroller.net/forum/read-4-159757.html
Endlich hat es Reichelt geschafft die fehlenden Platinen zu liefern, und nach einem weiteren Nachmittag LEDs bestücken ist nun der 32x16 Spektrum Analyser fertig. Im Bereich >3kHz tut sich echt eine Menge. Auch der Bereich >10kHz ist interessant, denn man erkennt sofort ob die mp3 auf 10kHz Bandbreite beschränkt ist, oder nicht. Leider ist der internde ADC des AVR mit 44kHz Samplerate (ca. 570kHz ADC Takt !) doch etwas überfordert, so dass die unterste LED Zeile konstant leicht flackert. Die Auflösung im unteren Bereich liegt bei 40Hz, am oberen Ende sind es rund 3,8kHz. Die Stromaufnahme liegt bei etwa 1A bei 12V wenn ich den Analyser mit Musik so ansteuere, dass die Peaks etwa in den gelben Bereich gehen. Bei Vollaussteuerung (alle LEDs an) zieht die Schaltung ca. 40-50W, aber das schafft der LM2576 nicht lange. Der LED Strom liegt bei rund 150mA bei 1/16 Tastverhältnis.
dachte du wolltest : Somit bleibt nur die Lösung mit mehreren 128 Punkt FFTs und dem MAX29x: a) Tiefer Bereich mit 1,385kS/s für 0-500Hz mit 10,8Hz Auflösung b) Mittlerer Bereich mit 5,54kS/s für 0-2kHz mit 40Hz Auflösung c) Hoher Bereich mit 44,3kS/s für 0-22kHz. das erreichen ? grüßles matthias
Ohne eine Bezugsquelle, bei der man auch als normalsterblicher den MAX29x zu einem vernünftigen Preis bestellen kann, oder einen anderen, einfachen Tiefpass, habe ich eigentlich keine Lust an der jetzigen Schaltung was zu ändern.
:) kannst du mal sagen wie du das mit den bandpass filtern gelöst hat? bekommt man den auf normalen weg bzw die teile ? oder ist das echt son dummes ding was man nur alsfirma oder so bekommt....
Es gibt keine Bandpassfilter. Das ganze läuft (außer einem 2kHz Tiefpass für den unteren Bereich) komplett digital in einem mega8 mit 18,432MHz. Ich habe mal ein Video angehängt, das ganz gut die große Auflösung des Analysers zeigt. Vor allem am Anfang erkennt man (auf dem Video nicht ganz so gut), dass bei jedem, Bing (keine Ahnung wie man diese Geräusche bezeichnet), ein anderer LED Balken aufleuchtet, da die Bings immer eine unterschiedliche Frequenz haben.
das is im untereren bereich auf jedenfall schon mal nach meinen ansprüchen, nur was ich jetzt ihrgend wie dumm finde, das es nur 32 leds sind, 64 währen jetzt ganz erlich gesagt viel geiler.... das ist ihrgend wie im unteren bereich zwar okay, aber hmm kann man das erweitern ?
Natürlich kannst du das erweitern. Du kannst sogar eine 64x64 LED Matrix aufbauen, aber glaub mir: 512 LEDs zu löten ist genug Arbeit.
@ape Könntest du mal etwas für mich ausprobieren ? Den Analyser mit Musik stark übersteuern, denn bei mir hängen sich dann die FFTs auf, obwohl ich den Watchdog laufen lasse. Einmal hat sich sogar nur der 44kS FFT aufgehängt (die rechte Bildhälfte hat sich nichtmehr verändert), die 5,5kS FFT lief aber ganz normal weiter.
hmm eine frage hab ich noch dazu wieso sind wenn s steile balken gibt die nachbar balken nicht davon betroffen ? könntest mal n sinus drüber laufen lassen ?? aber an und für sich schon ok wieso was kostn son max ?
der max 29x is doch son bandpassfilter 3 kanal stimmt und ich überlegte mir damals diesen zum analyzer zu verwenden ich glaube beim electronicpool gibt es denn für glaub mal 5 euro mal guggen
Ich verstehe nicht ganz was du meinst mit steilen Balken. Einen Sinus hatte ich vor einiger Zeit schonmal laufen lassen, auch mit den restlichen 160 LEDs die damals noch fehlten hat sich nicht viel verändert: http://www.mikrocontroller.net/attachment.php/152417/fftsinus.avi Was ein MAX29x kostet weiß ich nicht, denn man bekommt ihn ja nirgends (außer als Sample von maxim). Zumindest nicht bei den "normalen" Elektronikversandhändlern (Reichelt, Spoerle, RS, Farnell, Bürklin, Digikey usw.)
also bei segor gibt es den MAX 275 ,280, 297 der 280 is n 5 . ordnung lowpass der 297 ein 8. ordnung lowpass gruß matthias
einfach bei segor unter halbleiter im onlinekatalog ics nach hersteller m dann m/max typen bis max499 dann kommen die ganzen filter
Bei dem Preis kann man das ganze vergessen. Da kommt ein diskreter Tiefpass um einiges billiger, selbst mit 1% Widerständen und guten Kondensatoren. MAX 297 CPA Bestelltyp, nicht ab Lager lieferbar 8.Ord.Elliptic LPass DIP8 Lieferzeit 10Wochen (VE: 1 St.) : 14.20 EUR MAX 296 CPA Auslauftyp 8.Ord.Clk-Tun.LPass DIP8 Nicht mehr lieferbar (VE: 1 St.) : nicht lieferbar MAX 280 CPA Bestelltyp, nicht ab Lager lieferbar 5.Ord. Lowpass DIP8 (VE: 1 St.) : 11.15 EUR ab 10 VE: 8.92 EUR
liesse sich da noch was im tiefpass verbessern? frage: wie isn das mit dem flackern ? mit den balken meinte ich ich sehe auf dem video das z.b. einr vollausschlägt der nebendran nichts macht aber der nächste wieder aussteuert... das meinte ich ...
Meinst du das Flackern der rechten paar LEDs in der untersten Zeile, auch wenn kein Signal anliegt, oder allgemein das Flackern ? Ersteres habe ich jetzt dadurch behoben, dass ich nur Werte >2 anzeige, und alles darunter (also 1 und 2) zu Null mache. Ansonsten flackert nichts, in der Software wird der Spitzenwert gebildet und langsam auf Null gefahren, also so wie bei einem echten Spitzenwertgleichrichter. Das ist ja das schöne an der FFT: Wenn ein reiner Sinuston anliegt, erhält man wirklich nur einen Peak. FFT ist eben schon nahe dran an der idealen Durchlasskurve mit fast unendlicher Steilheit.
@Matthias: Es hängt halt vom Eingangssignal ab, Wenn da nunmal 2 laute Sinustöne drin sind deren Frequenzen etwas auseinanderliegen, sieht man das in der FFT an Hand von 2 Balken die auftauchen, wenn die Frequenzen dazwischen nicht vorkommen leuchten auch die Balken nicht auf... @Benedikt: Habs mal probiert, bei mir ist nichts abgeschmiert. Ich denke aber das liegt bei dir tatsächlich an den vielen LEDs, und die auftretenden recht großen Ströme die ja doch recht schnell geschaltet werden. Kann gut sein das das ganze auch einfach ganz ordentlich strahlt und damit den AVR lahm legt. Ich hab neulich 24 super helle LEDs (3,3V; ins Gesamt 500mA) mit einer 30kHz PWM angesteuert und damit meine Funkt-Tastatur lahm gelegt. Im Zweifelsfall den AVR in ne geerdete Blechbüchse tun :P Als ich nach dem MAX297 geguckt hatte gabs den bei Segor noch nicht. Aber 10 Wochen Lieferzeit is ja ganz schön übel und 15 sind auch nich wenig.
dann baut den doch einfach ohne diese teile auf und dann mit OPS oder so mit mehreren einfach... das der richtig schön steil wird...., warum so einen stress dann lieber so ! was istn wenn man den avr in ne blechbüxe packt und die spannung noch mit ein paar GoldCap Kondensatoren sichert ? die hätten genug leistung und kosten auch nicht mehr die welt zb für 5-6V.... bei reichelt gibt es die für 3-7 euro.... 2 stück und gut ist^^
@ape Danke, ich habe das Problem zwar nicht gefunden, aber umgangen: In jeder Routine wird jetzt ein Bit gesetzt, und wenn am Ende nicht alle Bits gestzt sind, gibt es kein WDR -> Reset Mit voller Lautstärke lief das das ganze fast zwei Stunden ohne Probleme, dann hat sich mein Netzteil verabschiedet. Das Display braucht verdammt viel Leistung. Jetzt läuft das Display an einem 15V 2A Netzteil. Störungen kann ich eigentlich ausschließen: Ich habe getrennte Spannungen für die LEDs und den AVR und auch getrennte Massen auf der Platine, die nur an einem Punkt verbunden sind. Außerdem ist der mega8 bei mir etwa 50cm von der LED Treiber Platine weg, über eine 10 adriges Kabel ausgelagert um genau diese Störungen nicht im Audiosignal zu haben.
nun benedikt wollte ich dich wegen dem code und den 2 schaltplänen fragen so dass ich da n vernünftiges layout entwerfen kann grüßles matthias
dann kann ich die schaltpläne von ape verwenden und den code von dir ?
ah da hast ja die pläne gleich implementiert könntest du mir die eagle ? datei per mail senden ? das wäre toll ! gruß matthias
benedikt könmntest du mir ein paar infos über den asm fft code geben wie ich ihn verändere denn ich bekomme in nächster zeit doch nen max bzw wenn nicht bastle ich mir n filter oder ist das dann 3 mal der selbe code aber wie verändere ich die frequenzen ? den ehrlich gesagt sind mir 40hz auflösung doch etwas zu wenig wenn ich da die frontplatte des audioscope angugge.... grüßles matthias
Eine Version mit 3 FFTs wird um einiges komplizierter, da man entweder mit einem zweiten mega8 arbeitet, oder mit 5fps zufrieden sein muss. Und das ist mir ehrlich gesagt zu viel Arbeit. Bei der Initialisierung wird an OC1B ein 444kHz Takt ausgegeben. Dieser muss an die jeweilige Samplerate entsprechend angepasst werden. Im Flags Register dient Bit3 zur Unterscheidung ob gerade der hohe oder Tiefe Frequenzbereich berechnet wird, damit werden die entsprechenden Routinen ausgewählt und die neuen Messungen gestartet. Die Routinen do_window und do_fft benutzen beide. Bei make_bars gibt es eine High und eine Low Routine in denen aus den Komplexen Werten de Betrag der jeweiligen Frequenz ermitteln. In der rfsh_bars Routine werden die Werte dann zusammengefasst: Dazu gibt es die ganzen makexp Routinen In rfsh_bars werden aus jeweils x Werten der Maximalwert herausgesucht. Das ganze funktioniert folgermaßen (am Beispiel von ds_hl2): CL bestimmt die Anzahl an erzeugten Werten, hier 16: Ist CL >=12, werden die Werte unveränder übernommen. Ist CL >=9, werden 2 Werte zu einem zusammengefasst Ist CL >=6, werden 3 Werte zu einem zusammengefasst Ist CL >=4, werden 4 Werte zu einem zusammengefasst Ist CL >=2, werden 6 Werte zu einem zusammengefasst Ansonsten werden 8 Werte zusammengefasst Insgesamt stehen 64 Werte zur Verfügung, von denen aber nur 59 verwendet werden, da die unteren 5 (daher oben bei der Zweisung des Y Pointers die +5) schon durch den tiefen Bereich abgedeckt wurden. Vielleicht werde ich irgendwann die Software mit 3 FFTs schreiben, aber im Moment habe ich weder einen Grund, noch Lust dazu, da mir die Auflösung ausreicht, und mein PC die tiefen Frequenzen auf einem getrennten Kanal ausgibt, sie also sowiso nicht dargestellt werden. PS: brauchst du noch meine Eagle Dateien ? Warscheinlich werden die aber wenig hilfreich sein, da ich die Bauteile nur für einen ordentlichen Schaltplan, nicht aber fürs Layout ausgewählt habe. Die Größen passen also nicht.
ja bitte um die Eagle Dateien ! das erspart mir einige Zeit! kann mich also mit dem Code nun endlich mal auseinandersetzen! studiere ja nächstes Jahr Informatik da werde ich dan wohl etwas mehr über Assembler lernen oben schreibst du: "es stehen 64 Werte zur Verfügung" ist das eine 64 Punkt FFT ? grüßles Matthias
Nein, es ist eine 128 Punkt FFT, denn es werden 128 Sample Werte in 64 Real und 64 Imaginärteile für die Amplitude umgerechnet, so dass man im Prinzip 64 Beträge und 64 Phasenwinkel für die Amplituden bekommt.
Ob ein Informatikstudium so viel bei Assemblerprogrammierung weiterhilft, bezweifle ich. Das ist alles sehr theoretisch, und für meinen Geschmack zu wenig Praxisbezogen.
ach ja klar ich vergas geteilt durch 2 ... ja dann sind wir bei 128 :-) danke dir für die eagle Dateien ! grüßles Matthias
anbei mein Vorschlag der FFT Platine werde beide (FFT und Steuerplatte) auf eine 160x100 Eurokarte routen!
ich denke mal die Spannung ist 5V bei den Led Zeilen hast du mal 6V geschrieben.... wie kamst du auf den TLC272 ?
Die 5V sind für die gesamte Elektronik (also die beide uC, die HC4094 usw.), die 6V brauchen die MOSFETs für die Gate Source Spannung um die 5A verlustfrei zu schalten. Ich habe keine P-Kanal Logik Level MOSFETs bei Reichelt gefunden, die bei 5V Gate Source Spannung 5A schalten können. Anfangs dachte ich an irgendwelche MOSFETs im DIP-4 Gehäuse, aber die meisten können keine 5A schalten, zumindest die wo man bei Reichelt bekommt. Du kannst die LEDs zwar auch mit 5V betreiben, musst dann aber darauf achten, möglichst keine Verluste in den Leitungen, MOSFETs oder sonst wo zu haben, denn die LEDs brauchen alleine schon 4,3V ! Den TLC272 hatte ich rumliegen. Abgesehen vom LM358 war es der einzige der mit 5V auskommt den ich da hatte.
gibt es ne möglichkeit eventull nen schalter einzu bauen wo man von baar auf dot mode umstellen kann ? oder reicht der platz nicht mehr..
frage wieso so overkill transistoren ??? mein analoger spektrumanalyzer multiplext schneller und zwar die volle matrix 12x31 hat pro zeile n multiplex strom von nem ampere den ich mit den BC517 und BC518 schalte
Bei mit fließen 150mA pro LED. Ich multiplexe 1/16, also fließen 32*150mA=5A. Da gehen BC517 aber schenll in Rauch auf...
ja gut bei mir mit 2ma leds 20ma pro led dann bei 31 multiplex 31*20ma = ca 620ma die zeile da ich aber 4 multiplex anzeigen habe geteilt durch 4 das ganze und das machen die 517 er und 16 er locker mit
matthias hast du die eagel datein schon fertig ? so das ich mir das alles ätzen kann ? oder wie machen wir das jetzt?!
ich weis nicht mir gefällt die FFT nicht ! die Frequenzscala ist mir zu ungenau und die Stärke des Ausschlages passt in keiner Weise zu der db Norm dann gefallen mir die 5A Transistoren nicht bei meinem Bandpassanalyzer multiplexen 4 Atmels das Display so dass ich so Teile gar nicht erst brauche aber ich mach das Layout trotzdem für die FFT hast ja schon erhalten !
meine 16x16 er Matritzen möchten mal arbeit ! so baue ich ihn doch mal mit der FFT zum Test evtl bau ich ihn um - hat ja noch AD Wandler frei so dass ich 4 Filter machen kann und dadurch eine höhere Auflösung erziele Gruß Matthias
@ Benedikt du hast ja den einen Adc mit dem Filter versehen den anderen mit einem 100nf Kondenator in Reihe ? was bringt der ?
bzw was ist das für ein Filter ? n Tiefpass ? oder Bandpass ? oder n Hochpass ?
Das ist ein Hochpass mit einigen 10 bis 100Hz, der mir die Gleichspannung entfernt. Meine Soundkarte liefert ein aus Masse bezogenes Signal ohne Gleichspannungsanteil, der ADC benötigt aber ein Offset von ein paar Volt, da der AVR keine negative Eingangsspannung verträgt. Den selben Zweck haben auch C11 und C5.
was ist der große Filter ist das ein bp hp oder tp ? weil ich möchte nun 4 von den filtern einsetzen
mir ist das Prinzip noch nicht ganz klar du sprachest von einer 5,5khz Trennung ?! du sendest das volle Audiosignal in den 1.ADC der Filter sieht mir wie ein Bandpass aus der dann von 5,5khz bis Ende den 2.ADC versorgt nun bekommt aber der 1. ADC das volle Programm ? rechnet also das gesamte Spektrum das macht das doch langsamer ? wie wäre es man würde 3 oder 4 Bandpassfilter nehmen der FFT klare Bereiche zuteilen oder wie schneidest du das Signal am 1. ADC ab ? oder ist die 1.FFT im Atmel eine mit nur 11khz Samplerate die dann bis 5,5 khz den Bereich abdeckt ? so könnte ich es mir erklären ich versuche demnächst wenn ich von dir erfahre wie man den Filter berechnet das Ganze nur bis 2,5khz gehen lassen also die 1.FFT nur 5 khz Samplerate so müsste dann schon wieder ein paar Herz weniger in den Zwischenräumen gehen könntest du mir mal die entscheidenden Stellen im Code zeigen ? bzw mal ne Info über den großen Filter geben :-) das wäre Klasse Gruß Matthias
nochmal ne Frage bevorzugst du keinen Halb oder Vollwellen Ggleichrichter vor dem ADC ? oder erledigen das die Kondensatoren ..c11...c5 usw..
anbei mal die Bandpassfilter eines orginal Audioscope Spectrum Analyzers die PNG zeigt den 1. und letzen Filter unten in der Tabelle sind die verschiedenen Werte aufgeführt
anbei noch einige Simulationsprogramme oder kennst du Benedikt etwas besseres? http://www.modul-bus.de/compas/compas25/simulat.html
Wenn du Low Current LEDs verwendest, und den Strom etwas reduzierst, dann geht es auch mit BC547. Bei 150mA ist ein BC547 etwas überfordert. Die ganzen Kondensatoren am Eingang und direkt vor den ADC dienen nur als Koppelkondensatoren um das DC Offset zu beseitigen. Das große Filter ist ein Tiefpass mit etwa 2kHz Grenzfrequenz (etwas unter der halben Samplerate: 5,5kS/s -> 2,275kHz Bandbreite -> 2kHz Tiefpass. Berechnet habe ich das ganze damit: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010007&part= Es ist eines der besten Programme die ich gefunden habe, das mir die einfachsten und auch steilsten Filter liefert. Wenn du also noch eine weitere FFT, z.B. mit 1,4KS/s machen willst, dann ist ein 500Hz Filter hilfreich.
Wenn du also noch eine weitere FFT, z.B. mit 1,4KS/s machen willst, dann ist ein 500Hz Filter hilfreich. wieso dann nicht 700hz bei 1,4KS/s ? dann bräuchte ich ja einen Tiefpass z.b. mit 500-700hz oder tiefer danach einen Bandpass wieder einen Bandpass und am Schluss einen Hochpass dann wären es 4 Filter die ich in die 4 ADC Eingänge eintreten lasse Frage: der Tiefpass Filter bei dir muss ja die 1. FFT sein ! und das normale Line die 2. richtig ?
andere Frage wenn ich da nun 4 Filter hinklemme genügt dann die Rechenleistung des Avrs ?
Anscheinend hast du immer noch nicht verstanden, wie das ganze funktioniert: Jede FFT erzeugt 64 Frequenzen von 0Hz bis SampleRate/2 mit SampleRate/2/ 64Hz Abstand Der Tiefpassfilter muss sicherstellen, dass keine Frequenzen größer als SampleRate/2 an den ADC kommen. Da braucht man keinen Bandpass, sondern es reicht ein unendlich steiler Tiefpass mit SampleRate/2 Grenzfrequenz. Da man sowas aber nicht bauen kann, verwendet man einen Tiefpassfilter mit einer etwas niedrigeren Grenzfrequenz, damit die höheren Frequenzen auch wirklich unterdrückt werden. Man kann daher aber nicht alle 64 Werte, sondern eben nur 50 oder 60 davon verwenden. Ich verwende nur die unteren 30 Werte, um mit einem einfachen Tiefpass mir nur 2 Opamps auszukommen. Ich habe mal die FilterLab Datei angehängt, mit dem ich das Filter berechnet habe.
anbei ein Bild ! ich sehe gerade ! es würden 2 Filter reichen ein Tiefpass von 0 - 250hz in 10hz Schritten dann ein Bandpass von 300hz bis 2,5khz mit 100 hz Schritten dann ab 3khz bis 20khz die normale fft verwenden in 1khz schritten das wäre doch machbar ?
achso ja dann wären es 2 tiefpässe einer bis 250 hz und einer bis 2,5khz das wäre aber doch machbar ?
also fang ich mal an ! 1. Tiefpass bis 640hz 1. FFT Samplerate 1,28hz 64 Werte kann ich bis 250hz entnehmen bei einem 4. Ordnung Filter entnehme ich die ersten 25 Werte also 640hz /64 = 10 Herz Schritte 10hz 110hz 210hz 20hz 120hz 220hz 30hz 130hz 230hz 40hz 140hz 240hz 50hz 150hz 250hz 60hz 160hz 70hz 170hz 80hz 180hz 90hz 190hz 100hz 200hz diese lass ich an den folgenden Frequenen darstellen 30 40 50 60 80 100 120 160 200 250 2. Tiefpass bis 6,4khz 1. FFT Samplerate 12,8khz 64 Werte kann ich bis 6,4khz entnehmen bei einem 4. Ordnung Filter entnehme ich die ersten 25 Werte also 6,4khz /64 = 100 Herz Schritte 100hz 1,1khz 2,1khz 200hz 1,2khz 2,2khz 300hz 1,3khz 2,3khz 400hz 1,4khz 2,4khz 500hz 1,5khz 2,5khz 600hz 1,6khz 700hz 1,7khz 800hz 1,8khz 900hz 1,9khz 1000hz 2,0khz diese lass ich an den folgenden Frequenen darstellen 300 400 500 600 800 1000 1200 1600 2000 2500 3. normales Audio Signal FFT 16khz 1. FFT Samplerate 32,0khz 64 Werte kann ich bis 16khz entnehmen bei einem 4. Ordnung Filter entnehme ich die vollen 64 Werte also 16khz /64 = 250 Herz Schritte 250hz 2,75khz 5,25khz 500hz 3,00khz 5,50khz 750hz 3,25khz . 1000hz 3,50khz . 1250hz 3,75khz . 1500hz 4,00khz 16,0khz 1750hz 4,25khz 2000hz 4,50khz 2250hz 4,75khz 2500hz 5,00khz diese lass ich an den folgenden Frequenen darstellen 3000 4000 5000 6000 8000 10000 12000 16000 die Filter zu berechnen wären kein Problem ! 2 Filter an ADC 2 und 3 an ADC 1 das Line Signal @Benedikt könntest du mir ein wenig mit dem Code helfen ? ich kann C aber bin noch nicht soo fit @Assembler
anbei die komplette Analyzer Schaltung so wie ich es mir vorstelle mit den 2 Filtern evtl könnte ich auch 8. Ordnung aufbauen ! die paar Bauteile... was meinst du dazu Benedikt ? also meiner Meinung nach müsste das doch realisierbar sein vom Code her!
Das ganze zu realisieren ist kein Problem, nur etwas Arbeit. Bei 1,28kHz Samplerate und 128 benötigten Samples benötigt diese FFT alleine schon 10ms nur zum Daten aufzeichnen -> kontinuierlich Daten in einen Ringpuffer schreiben und für die FFT nur die neuesten 128 Werte entnehmen. Dies erfordert aber einen eigenen uC.
um das wäre es mir nicht aber mein problem liegt an 2 sachen 1. problem - assembler ist mir fremd 2. problem meine demo eagle version macht nur die kleine board und mit ner gecrackten naja du weist schon @fehler 290 die orginale ist mir ehrlich gesagt zu teuer ... über 1000 euro für das geld würde ich den obigen audioscope spec analyzer bekommen :-) ähm gibt es denn nicht für ein paar hundert euro eine schüler /studentenversion bin dieses jahr noch schüler (bos bayern) nächstes jahr bzw ab juni dann student ... könntest du mir ein wenig helfen @code ..... aber du hast doch auch einen filter drinnen oder weil es nun 2 filter sind ?
ja gut 230 euro für die 100x160 er verison naja.... und 450 für die volle ... ist auch schon viel .... für nen schüler/studenten....
naja 125 euro für die non profit könnte man sich überlegen ... aber dann auch nur 160x100 hmmmmmmmmmmmm
Benedikt wenn ich 2 µC verwende wie kann ich dann die Leitungen Sync und Daten ? multiplexen ?
Die uC müssten dann die Daten untereinander austauschen: Der erste mega8 macht die ganz schnelle FFT und die mittelschnelle abwechselnd. Sobald eine FFT fertig ist, werden die Daten an den 2. mega8 gesendet. Dieser macht die langsame FFT, hat also an sich nicht viel zu tun außer die Audio Daten sehr langsam aufzuzeichnen und dann eine FFT zu machen. Wenn diese fertig ist, und die Daten vom ersten mega8 da sind, werden die 3x 64Bytes zu den Daten für die LED Matrix zusammengefasst und übertragen.
Ich bin gerade an der Software. Die 1,28kHz Samplerate sind kein Problem, aber die 32kHz werden nicht einfach: Du nutzt den vollen Frequenzbereich bis 16kHz. Da musst du entweder den Tiefpass sehr steil machen, oder eine höhere Samplerate verwenden. Mit 42,67kHz Samplerate hätte man den Bereich bis 21,33kHz mit 333Hz Auflösung. 3 Stück zusammengefasst und man hat genau das 1kHz Raster. Der Tiefpass kann dann auch einfacher werden, da er nur bis 16kHz alles ungehindert durchlassen muss, dann aber bis über 25kHz abfallen kann.
und bis wie viel mhz müsste man den avr dann jagen damit man 42khz sampel rate hat?
konntest du die Dateien in der Email öffnen Benedikt ? denn wenn ja mache ich die komplette Platine ! den neuen Schaltplan und das Layout ! wie mache ich das nun eine 2. FFT genau so wie die erste und wo verbinde ich die Atmels ?
Mit 42,67kHz Samplerate hätte man den Bereich bis 21,33kHz mit 333Hz Auflösung. 3 Stück zusammengefasst und man hat genau das 1kHz Raster. Der Tiefpass kann dann auch einfacher werden, da er nur bis 16kHz alles ungehindert durchlassen muss, dann aber bis über 25kHz abfallen kann. wie gesagt das wäre ja schon mal super ! aber ich dachte einen 3. Tiefpass brauch ich garnicht ? oder doch ? hab ja nun 2 Filter und einen kompletten Signalgang
Die Software muss ich dann erstmal testen. Dazu muss ich erstmal die Schaltung auf dem Steckbrett aufbauen und das LED Display am PC simulieren. Den 3. Tiefpass kannst du weglassen, wenn du sicherstellst, dass keine Frequenz > halbe Samplerate vorkommt. Das ist bei mir dadurch gegeben, dass die Soundkarte im PC einen 22kHz Tiefpass eingebaut hat. Verwendest du dagegen 16kHz brauchst du einen Filter.
also ich möchte ien line in signal am ende anschliesen ... also einen 3. Filter für 16khz ? evtl den auch bis 20 khz laufen lassen den Filter so dass die 16khz noch gut im Bereich sind ? ging da nicht so wie bei dir auch nur n Kondensator ?
wie sieht das dann mit dem atmels aus also der 2. fft aus ? wo klemm ich welchen filter hin ?
Die Dateien konnte ich problemlos öffnen. Aber das Layout ist nicht dein Ernst oder ? Du hast doch alle Bauteile einfach nur auf die Platine geschmissen, und dann den Autorouter drüber gelassen, oder ? Wenn die Schaltung laufen sollte, dann kann man den AT89C2051 als absolut stabil gegen alle Arten an Störungen bezeichnen. Die Transistoren werden kaum warm, sagen wir mal 40° maximal für die Treiber der untersten LED Reihe, die immer an ist. Versuch mal das ganze etwas zu ordnen, und die Spannungen von LED Matrix und Digital ICs zu trennen. Zur FFT, das ganze wird folgendermaßen ablaufen: Der AVR der die beiden schnelleren FFTs macht bekommt die 20kHz an ADC0 und die 6,4kHz an ADC1. Dessen TXD Pin geht zu dem RXD des zweiten AVR, und der Sync Pin ist an INT0 angeschlossen. Der zweite AVR bekommt an ADC0 das 640Hz Signal. Eigentlich benötigt jeder ADC Eingang einen eigenen Tiefpassfilter. Da ich meine Anzeige aber nur am PC betreibe, kann ich mir den Filter für die 22kHz sparen, da dieser auf der Soundkarte eingebaut ist.
Benedikt es ging mir nur darum, ob du die Dateien lesen kannst! denn wenn nicht wäre die Mühe eines 100%igen Layouts umsonst gewesen und bis ich das Tip Top geroutet habe rechne ich mal 1-2Std klaro ist das nicht mein Ernst ich habe die Bauteile nur rübergeschoben um zu sehen ob das neue Eagle auch mit größeren Platinen > 100x160 zurecht kommt ! Werde die Schaltung so anpassen wie du sagst und Posten ! Gruß Matthias
frage du hast ja chebychev filter genommen ?! warum? weshalb? ich hab mich für butterworth entschieden
Bei Chebychev ist der Übergang viel steiler als bei Butterworth oder Bessel. Ich benötigte einen Filter mit möglichst abruptem Übergang von <+/-1db auf den entsprechenden Abfall. Bei Butterworth gibt es noch einen Übergangsbereich, der etwas störend ist.
Ich bin heute nicht mehr dazugekommen die Software zu testen. Werde das aber morgen machen. Bis auf die Zusammenfassung der 3x 64 Werte müsste aber jeder uC alleine schon funktionieren. Aber so wie ich meine Software kenne, werde ich noch eine Menge Fehler drin haben...
die Schaltung ist nun soweit fertig ich hoffe ich bekomme alles auf eine 100x160 oder 200mm Platine :-) es fehlen halt noch die Pforstenstecker für die LED Matritzen die ich ja schon fertig geätzt gebaut habe könntest du das mal kritisch anguggen Benedikt ?
Zur FFT, das ganze wird folgendermaßen ablaufen: Der AVR der die beiden schnelleren FFTs macht bekommt die 20kHz an ADC0 und die 6,4kHz an ADC1. Dessen TXD Pin geht zu dem RXD des zweiten AVR, problem : da ist ja schon der display atmel dran ? oder soll ich den an den 2. fftatmel klemmen ? und der Sync Pin ist an INT0 angeschlossen. Der zweite AVR bekommt an ADC0 das 640Hz Signal.
TXD von mega8 1 -> RXD von mega 8 2 Sync von mega8 1 -> INT0 von mega 8 2 TXD von mega8 2 -> RXD von 89C2051 Sync von mega8 2 -> INT0 von 89C2051
mega8 1 -> 20khz und 6,4khz Filter mega8 2 -> 640hz Filter Sync = SCK dann wäre er nun außer den Pforstenbuchsen für die LEDs und Masse an den Transistoren fertig
Bei dem Sync Pin passt was nicht, den habe ich versehentlich doppelt belegt. Der Sync Ausgang ist der Int1 Pin (PD3) und der Eingang für Sync ist INT0 (PD2). Allerdings muss ein AVR warscheinlich durch einen mega32 ersetzt werden, da 1k RAM nicht ausreichen. Ich benötige wegen dem extra Ring Samplebuffer für die tiefen Frequenzen 256Bytes RAM mehr, also 1,25kB... Eine Alternative wäre, den Ringpuffer wegzulassen, was die Refreshrate aber auf etwa 10fps bei den tiefen Frequenzen reduzieren würde. Der Code für die beiden schnelleren FFTs in einem mega8 ist soweit fertig.
also kein thema @mega32 dann nehmen wir für die 640 herz geschichte einen mega32 hab sowas noch daheim werde sofort den schaltplan ändern ! könntest du mir die software des schnellen mega 8 noch ausbessern @ sync pins ? eilt ja nicht
anbei mal den plan ! frage: kann ich das so machen mit den ISP anschluss an dem atmel dass ich den drann lasse ! an allen atmels oder streite sich da die spannung reset z.b. mit dem isp ??? gruß matthias
du Benedikt ! kann ich den ISP Adapter, so wie ich ihn auf dem Board 2 mal habe dran lassen oder muss ich den mit einem 9 poligen Dil Schalter trennen ? Gruß Matthias
klaro sind es 2x 9 polige sub d buchsen aber ich meine zurzeit sind sie ja immer dran also mit den atmels verbunden bekomme ich da durch den reset pin oder andere keine probleme ? da der ja auf +ub ist ? deshalb dachte ich mir die schaltungen mit dip schaltern zu trennen ? gruß matthias
ich denke so wie es ist wird es einen Kurzschluss am Reset Pin geben ! anbei mein Schaltplan vom Programmer ! das ISP Teil hab ich integriert in den Schaltplan ! da ist noch ein Taster auf GND und der Transistor schaltet nach GND wenn nun also Vb+ am Reset Pin des Atmels so wie du ursprünglich ihn angebracht hast anliegt gibts n kurzen ! hast du mir n Rat Benedikt ? das ganze Zeug weglassen und außerhalb vom Analyzer programmieren ?
hab ihn nun rausgeschmissen !!!!! weil es vermutlich einen kurzen gegeben hätte ! mit dem reset und isp muss ich den reset pin durch einen dil schalter von der +ub trennen wenn ich den atmel programiere ?
Hier der Code für die langsame FFT im mega32 Getestet habe ich nur teilweise, mangels vorhandener Hardware
wurde die 640hz FFT durch den Mega 32 nicht schneller oder wieso schreibst du "langsame"
vielen Dank erst mal für deine Hilfe weist du wie ich in Eagle mittels ULP die Bibliotheken der zu klein geratenen Widerstände ändern kann so dass die mit den wirklichen Größen übereinstimmen
Das langsame bezog sich auf die Samplerate. Der mega32 sollte sich eigentlich die meiste Zeit langweilen: Er wartet auf die Daten vom mega8, die rund 30-40 mal pro Sekunde übertragen werden. So hoch ist dann auch die Aktualisierungsrate des Displays, also 30-40fps was eigentlich schnell genug sein sollte. Mit Eagle kenne ich mich nicht gut aus, ich bin froh wenn entweder das Layout oder Schaltplan gut aussieht. Beides gleichzeitig gut zu machen habe ich noch nicht geschafft. Kannst du mir mal das Layout schicken, wenn du damit fertig bist ? Verwendest du die IRF9531 MOSFETs, oder hast du entsprechend starke logik Level MOSFETs gefunden ?
wollte dich gerade auf die IRF9531 MOSFETS ansprechen wo hast du die denn gekauft ? da ich sie beim Reichelt garnicht finde nun habe mich noch nicht auf die Suche eines anderen Typen gemacht wenn der Schaltplan zu 100% fertig ist mach ich das Layout ! ich muss noch die Pforstenstecker für die LED Displays anklemmen dann die 200 Widerstände auf ein anderes Package bringen so dass ich mit dem Board loslegen kann klar poste ich das dann ! welche günstigen MOSFETS bieten sich denn an wir brauchen ja P Channel !
ich sehe dass der IRF9530 baugleich mit dem 31 ist nunja 0,65 Euro beim Reichelt wären ja bei 16 Stück 10,4 euro ginge ja noch ich denke du hast da keine soo große Auswahl an den P-channel Transistoren auf einen IRF wird es rauslaufen !
ich denke aber auch.... nun 5 V für die Transistoren wären Super... aber so ist halt doch die Spannung des Displays getrennt ... bzw ich suche mal nach einem logik Level MOSFET
es gäbe da schon... den FDD5202P zum Beispiel ... aber woher bekommen ?
ich habe eine Bitte Benedikt ! bitte poste mir mal DEINE Eagle Bibliothek wo DEINE Widerstände die du genommen hast drin sind ! bitte !
Bibliothek müsste "discrete" heissen! bitte sei so lieb ! sonst kann ich die Packages nicht ändern! und das Board net 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.