Hallo zusammen Ich würde gerne automatisch ein Bodediagramm eines Filters erzeugen. Dazu würde ich gerne die Messung mit z.B. einem STM32 automatisieren. Filter Grenzfrequenz: 50kHz Meine Idee: Messung von: 1kHz bis 200kHz STM32F105RBT6 hat einen DAC der bis zu 1MSPS schafft. Da ich ja aber auch noch eine Sinustabelle ausgeben muss, genügt dies nicht. Bei 200kHz wären nur noch 5 Sinuswerte möglich. Deshalb die idee: Array mit Sinuswerten. Timer kickt DMA an. DMA schreibt werde in das PWM Timer Register. So sollten wohl ca. 200kHz möglich sein. Die Messung soll wie folgt ablaufen: STM gibt definierte Frequenz an Ausgang IO1 aus. Dieses Signal muss jedoch noch Entkoppelt werden. Daher 1uF? Dieses geht nun auf das Filter. Die Ausgangsspannung des Filters wird während. z.b. 10ms mit dem ADC eingelesen und mittels Berechnung der RMS Wert gebiltet und abgelegt. Nun zum Problem. Der STM hat nur single ended ADC. Was gilt es zu berücksichtigen, wenn ich den ADC Eingang mittels Spannungsteiler auf VDD halbe lege und mittels Kondensator das Ausgangssignal des Filters dort einspeise? Habe noch ein Bild angehängt. Danke!
Es so günstige 3€ Bausteine die Sinus mit einstellbarer Frequenz ausgeben, dass man da wirklich nicht selbst herum basteln muss. https://de.aliexpress.com/item/CJMCU-9833-AD9833-Modul-Signal-Generator-Modul-STM32-STM8-STC-Mikroprozessoren-Sinus-Quadrat-Welle-DDS-Monitor/32907216793.html
Den AD9833 hab ich auch schonmal genutzt. Bei hohen Frequenzen kommt da auch kein wirklicher Sinus mehr raus. Das hat was mit dem DDS Prnzip zu tun, umso höher die Ausgangsfrequenz umso mehr Sinuszwischenwerte in der Tabelle werden übersprungen. Also genau das was der TO mit dem DAC des STM32 auch machen muss. Daher brauchts hinter dem DAC eh nochn Tiefpassfilter und dahinter einen Buffer. Bei meinem AD9833 Projekt gabs da nen schönen 3fach PI Filter dahinter: http://www.fritzler-avr.de/gallery/main.php?cmd=imageview&var1=Projekte%2FSignalgenerator+2%2FIMG_2115k.jpg
Ich würde eher externe ADCs und DACs verwenden. Die sind meist von höherer Qualität, Du fängst Dir weniger Störungen ein, und Du kannst dir die geeigneten Bausteine aussuchen. Als Idee hier mal ein Vorschalg mit einem I2S-Codec bis 192kHz. https://statics.cirrus.com/pubs/proDatasheet/CS4271_F1.pdf Ist halt für Audio gedacht, d.h. bis DC kommst Du nicht runter. Dafür eben mit differentiellen Ein- und Ausgängen und 16 Bit Wortbreite. Ansonsten gibts auch ADCs und DACs für höhere Abtastraten bis in den GHZ-Bereich hinein, wenn Du das brauchst. Oder ganz anders: - ein einstellbarer Sinusgenerator als Signalquelle - ein einstellbarer Sinusgenerator als Referenz für den Mischer - ein Mischer mit Tiefpass, der das Empfangssignal auf eine Zwischenfrequenz runtermischt - ein guter DAC mit niedriger Abtastrate, der die ZF einliest. - ggf die letzten beiden Punkte noch ein zweites Mal für einen zweiten Empfänger als Referenz Siehe auch https://www.youtube.com/watch?v=IpI-cGU6-FY, wo ein kommerzielles Produkt auseinander genommen wird. Da siehst Du, wie das gemacht wird. fchk
Mw E. schrieb: > Den AD9833 hab ich auch schonmal genutzt. > Bei hohen Frequenzen kommt da auch kein wirklicher Sinus mehr raus. > Das hat was mit dem DDS Prnzip zu tun, umso höher die Ausgangsfrequenz > umso mehr Sinuszwischenwerte in der Tabelle werden übersprungen. Das Springen ist immer der Fall. Man erkennt es nur bei kurzen Perioden stärker. Mit einem DAC ist es grundsätzlich aber nur dann besser, wenn man auch auf höheren Auflösungen rechnet. Die DDS chips gehen immerhin schon bis 4MHz/n @ 24Bit
Mw E. schrieb: > Bei hohen Frequenzen kommt da auch kein wirklicher > Sinus mehr raus. Das hat was mit dem DDS Prnzip zu > tun, [...] Nein. Das hat damit zu tun, dass Analogtechnik dem normalen Arduino-Bastler Teufelswerk und ein Gräuel ist. Dass man in einem Abtastsystem -- und ein DDS ist ein solches -- einen Tiefpass braucht, ist nicht zu vermitteln.
Holger K. schrieb: > STM32F105RBT6 hat einen DAC der bis zu 1MSPS schafft. > Da ich ja aber auch noch eine Sinustabelle ausgeben > muss, genügt dies nicht. ??? > Bei 200kHz wären nur noch 5 Sinuswerte möglich. Und? Das Signal wird, wenn ich das richtig sehe, an der halben Abtastfrequenz gespiegelt; die niedrigste Nebenlinie tritt also bei 800kHz auf. Da genügt schon ein relativ simples Filter für ein brauchbares Signal. > Die Ausgangsspannung des Filters wird während. z.b. > 10ms mit dem ADC eingelesen und mittels Berechnung > der RMS Wert gebiltet und abgelegt. Naja... leicht unclever. Wenn Du schon eine zeitaufgelöste Messwertfolge im Mikrocontroller hast, kannst Du auch einen anständigen Quadraturdemodulator programmieren (Lock-in-Prinzip; Faltung mit sin/cos). Das macht die Messung nochmal unempfindlicher für nichtharmonische Nebenwellen.
Vielen Dank für eure Antworten. Frank K. schrieb: > Oder ganz anders: > - ein einstellbarer Sinusgenerator als Signalquelle > - ein einstellbarer Sinusgenerator als Referenz für den Mischer >... Mit Mischern etc. habe ich leider keine Erfahrungen. Egon D. schrieb: > Naja... leicht unclever. > > Wenn Du schon eine zeitaufgelöste Messwertfolge im > Mikrocontroller hast, kannst Du auch einen anständigen > Quadraturdemodulator programmieren (Lock-in-Prinzip; > Faltung mit sin/cos). > > Das macht die Messung nochmal unempfindlicher für > nichtharmonische Nebenwellen. Klingt interessant. Habe ich noch nicht gehört bisher. Bzw. keine Erfahrungen damit. Was verliere ich denn, wenn ich einfach die Samples in eine RMS Spannung umrechne? Danke
Holger K. schrieb: > Was verliere ich denn, wenn ich einfach die Samples in eine RMS Spannung > umrechne? S/N! Du rechnest dein komplettes Rauschen mit.
Egon D. schrieb: > Das Signal wird, wenn ich das richtig sehe, an der > halben Abtastfrequenz gespiegelt; die niedrigste > Nebenlinie tritt also bei 800kHz auf. Da genügt schon > ein relativ simples Filter für ein brauchbares Signal. Das glaubst aber auch nur du. Designe dir mal ein "relativ simpls" Filter und guck dir dann das damit gefilterte Ausgangssignal an. Mit dem DAC vom STM32 schaffst du bestenfalls 1 MSPS, der AD9833 verträgt (wenn ich mich recht erinnere) maximal etwa 30 MHz und die AD9850 sind mit 120 MHz zwar taktmäßig besser, aber bei all diesem Kruscht ist das Ausgangssignal nur 10 Bit breit. OK, für's Grobe sollte das ausreichen, aber damit wirklich Filter ausmessen ? Ich würde für NF-Zwecke mir entweder die Mühe machen, einen abstimmbaren rein analogen Sinusoszillator zu bauen (Wien oder Phasenschieber) und ihn nachträglich zu kalibrieren oder es so zu machen wie früher die Wobbler: einen Cursor in Form eines besonders hellen Leuchtpunkts in der dargestellten Kurve per Poti, und dann zwischen den Durchläufen den Oszillator auf eben diese Frequenz setzen und Frequenz ausmessen. Oder: gleich einen DDS-Chip mit möglichst großer DAC-Bitbreite zu nehmen. Für die Pegelmessung muß sich der TO dann sowieso was ausdenken, denn die üblichen logarithmischen Detektoren taugen für NF nicht sonderlich. Da wäre dann ein Spitzenwertdetektor und etwas Rechnen angesagt. W.S.
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.