Hallo zusammen, ich spiele gerade ein wenig mit folgendem Eval Board von TI: https://www.ti.com/tool/AMC3336EVM Der Delta Sigma gibt ein wunderbares PWM Singal. Dieses Signal würde ich aber gerne extern auswerten. Ob am PC, über ein anderes Eval Board mit passender SW, einen µC/FPGA, LogicAnalyzer (z.B. Saleae) etc. ist mir egal. Hauptsache eine "Plug&Play" Lösung. Ich hätte halt ganz gerne eine fertige Lösung, welche man kaufen oder aufbauen kann um das Signal aus zu werten. Was ich nicht möchte ist, das digitale Signal in ein analog Signal umwandeln und dann auswerten. Leider habe ich per google nichts finden können. Habt ihr eine Lösung? Viele Grüße
Was stellst Du Dir unter "auswerten" vor? Ein PWM-Signal ist ein digitales Signal mit genau zwei unterschiedlichen Pegeln - entscheidend ist hier der zeitliche Verlauf. Wenn Du das mit irgendwas "auswerten" willst, musst Du /ausreichend schnell/ die Signalflanken erfassen. Das ließe sich mit simplen Polling machen (ständig nachsehen, wie der Pegel gerade ist), einfacher aber ist es, auf die Hardwareausstattung Deines ungenannten Microcontrollers zurückzugreifen. Hier bietet sich die Verwendung eines Timers im Zusammenhang mit einem Capture-Eingang an; der Timer läuft frei mit ausreichend hoher Frequenz und bei jeder Signalflanke wird der Zählerstand erfasst. Wenn Du diese Zählerstände betrachtest, hast Du Dein Signal "ausgewertet".
Moin, Christian S. schrieb: > Ich hätte halt ganz gerne eine fertige Lösung, welche man kaufen oder > aufbauen kann um das Signal aus zu werten. Da bezweifle ich, ob's da was fertiges fuer genau diesen, deinen Spezialfall gibt. TI empfehlen in ihrem Datenblatt (8.2.1.2) ihre C2000 oder Sitara Prozessoren, haste da schonmal geguckt, ob bei deren Evalboards evtl. was dabei ist? Gruss WK
Es werden ja aus den 20MHz Takt einzelne Pulse ausgeblendet. Man braucht also nur einen Timer im Waveform-Mode, um die 20MHz zu erzeugen und einen weiteren im Counter-Mode zum Zählen. Der µC sollte daher mit mindestens 40MHz laufen. Also irgendwas schnelleres als 8051 oder AVR.
Du musst den CLK sowieso vorgeben, minimum 9 MHz. Das könnte sogar ein AVR der mit 20MHz läuft. Nyquist sollte also erfüllt sein.
Christian S. schrieb: > Der Delta Sigma gibt ein wunderbares PWM Singal. Nur ist das kein PWM, sondern PDM https://en.wikipedia.org/wiki/Pulse-density_modulation Peter D. schrieb: > Der µC sollte > daher mit mindestens 40MHz laufen. und Alfred P. schrieb: > Du musst den CLK sowieso vorgeben, minimum 9 MHz. Das könnte sogar ein > AVR der mit 20MHz läuft. Nyquist sollte also erfüllt sein. Etwas Luft um den Bitstrom zu filtern usw. braucht man auch noch. Weil es offensichtlich ein Einzelstück oder Prototyp werden soll würde ich mit der Taktfrequenz deutlich höher gehen, um mich nicht mit der MCU-Leistung herumquälen zu müssen.
>Der Delta Sigma gibt ein wunderbares PWM Singal. >Dieses Signal würde ich aber gerne extern auswerten. Im einfachsten Fall mit einem RC-Tiefpass und einem ADC-Eingang.
Christoph M. schrieb: > Im einfachsten Fall mit einem RC-Tiefpass und einem ADC-Eingang. Was er EXPLIZIT NICHT wollte!
>Was er EXPLIZIT NICHT wollte!
Hast Recht. Ich habe den letzten Satz übersehen.
Falk B. schrieb: > Was er EXPLIZIT NICHT wollte! Fragt sich, was der TO an dem Signal auswerten wollte. Soll da ein Zähler lustig hoch und runter zählen, soll die Frequenzstabilität bestimmt werden, soll der Flankenjitter bewertet werden oder was ist das Ziel?
Christian S. schrieb: > Dieses Signal würde ich > aber gerne extern auswerten. Steht im Datenblatt drin. "By using a digital filter (such as a sinc3 filter) to decimate the bitstream, the device can achieve 16 bits of resolution with a dynamic range of 85 dB at a data rate of 78 kSPS" https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://ww1.microchip.com/downloads/aemDocuments/documents/FPGA/ProductDocuments/UserGuides/ip_cores/directcores/sinc3_filter_ug.pdf https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.ti.com/lit/pdf/sbaa230 https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.silabs.com/documents/public/application-notes/an1215-sinc3-filter-for-dsm-apps.pdf https://www.skyworksinc.com/en/Products/Isolation/Evaluation-Kits/isolated-analog-and-adc/si8946-evaluation-kit https://docs.broadcom.com/docs/ACPL-C877-UG
Du willst das Signal aus dem AMC3336 z. B. mit einem µC/FPGA auswerten, ohne noch eine weitere Hardware dazwischen zu haben? Kein Problem, es ist nur etwas mehr Aufwand in Software. Ob ein µC den zusätzlichen Rechenaufwand das schafft, hängt von der Applikation und natürlich vom µC ab. Wie schon mehrfach erwähnt, ist das Ausgangssignal kein PWM-Signal, sondern ein PDM-Signal. Der Mittelwert des PDM-Signals entspricht dem ursprünglichen Analog-Wert, deswegen Cristophs Hinweis auf einen Tiefpass. Der ist prinzipiell richtig, nur bitte nicht als analoger Tiefpass + ADC. Nebenbei: Die Auflösung eines PDM-Signals ist, im Gegensatz zu PWM oder PCM, inhärent unendlich. Ein solcher digitaler Tiefpass ist in einem µC oder FPGA natürlich möglich. Ein einfacher, 1-poliger digitaler Tiefpass besteht ja daraus, einen kleinen Teil des Eingangssignals zu nehmen und zu einem großen Teil des Ausgangssignals zu addieren. (So einfach formuliert würde das gleichzeitig zu einer großen "Verstärkung" führen - egal, das ist hier nicht das Thema.) Digitale Tiefpässe höherer Ordnung sind nicht so trivial. Wie man analoge Filter (Bessel, Butterworth, Chebycheff) höherer Ordnung in digitale Filter umrechnet und wie die aufgebaut sind, ist in https://beis.de/Elektronik/Filter/AnaDigFilt/AnaDigFilt.html beschrieben. Alles das geht prinzipiell in µC und FPGA. Ohne externe Hardware. Sinc-Filter sind wohl einfacher, habe aber andere Nachteile.
Rainer W. schrieb: > Fragt sich, was der TO an dem Signal auswerten wollte. Was will man wohl am Ende aus einem PDM Bitstrom rausbekommen der von einem 1 Bit ADC kommt? Ja, richtig, Abtastwerte mit mehr Bits Auflösung. Uwe B. schrieb: > Digitale Tiefpässe höherer Ordnung sind nicht so trivial. FIR Filter sind bereits erfunden.
Gustl B. schrieb: >> Fragt sich, was der TO an dem Signal auswerten wollte. Ja, das könnte wichtig sein. > Was will man wohl am Ende aus einem PDM Bitstrom rausbekommen der von > einem 1 Bit ADC kommt? Ja, richtig, Abtastwerte mit mehr Bits Auflösung. Na ja, ganz das Ende wird es nicht sein, sondern nur ein Zwischenschritt. Das Ende wäre vielleicht einfach nur Speichern, Auswertung des Signals auf bestimmte Vorkommnisse, Kompression und Speicherung, Anzeige des Signalverlaufs... > FIR Filter sind bereits erfunden. Ich muss gestehen, dass ich den Unterschied bzgl. Rechenaufwand zwischen IIR und FIR nicht abschätzen kann. Der hängt sicherlich auch von der Applikation bzw. dem Ziel ab.
Hallo Christian, das sieht nur so aus wie PWM ist aber üblicherweise ein SPI Daten Stream getaktet durch den Clock Eingang. Es gibt auch welche die Manchester Code ausgeben. Ich würde dir einen STM32H750 vorschlagen den bekommst als Board für ca. 15€. https://de.aliexpress.com/item/1005001567462650.htm. Der H753 kostet etwas mehr und hat dafür mehr Flash Speicher Die haben einen "Digital filter for sigma delta modulators (DFSDM)" damit hast du schonmal die Hardware erschlagen und Code-Beispiele dafür findest du auch im Netz...
Christian S. >Ich hätte halt ganz gerne eine fertige Lösung, welche man kaufen oder >aufbauen kann um das Signal aus zu werten. Du könntest einen PiPico und die PDM-Library verwenden, dort ist wohl ein Sinc3 Filter eingebaut: https://github.com/earlephilhower/arduino-pico/tree/master/libraries/PDM
Hannes J. schrieb: > Nur ist das kein PWM, sondern PDM > https://en.wikipedia.org/wiki/Pulse-density_modulation Für die Auswertung ist das wahrscheinlich ziemlich gleich. Falk B. schrieb: > Christoph M. schrieb: >> Im einfachsten Fall mit einem RC-Tiefpass und einem ADC-Eingang. > Was er EXPLIZIT NICHT wollte! Irgendeine Form der Filterung wird benötigt. Auch wenn es kein analoger sein soll. Ein IIR ließe sich einfach auch mathematisch nachbilden. Uwe B. schrieb: >> FIR Filter sind bereits erfunden. > Ich muss gestehen, dass ich den Unterschied bzgl. Rechenaufwand zwischen > IIR und FIR nicht abschätzen kann. IIR sind als Systeme erster Ordnung eigentlich am Einfachsten. Wenn man auf einen BIQAD wechselt wird es aufwändiger und manche FIR sind effektiver. Für solche Aufgaben wie das Auswerten von PWM benuzt man Dezimationsfilter. In der ersten Stufe lassen sich diese sehr einfach mit einem Hogenauer-Filter machen. Das sind praktisch nur einfach ein paar verkette Zähler.
Holger W. schrieb: > Hannes J. schrieb: >> Nur ist das kein PWM, sondern PDM >> https://en.wikipedia.org/wiki/Pulse-density_modulation > Für die Auswertung ist das wahrscheinlich ziemlich gleich. Im Gegenteil. PDM kannst du einfach zählen. Z.B. mit der Counter-Hardware eines µC, der mit dem Takt des Delta-Sigma Wandlers synchronisiert ist. Zum Beispiel ein 8-Bit Counter, und für die Dauer von 256 Taktsignalen zählen. Das reduziert den Datenstrom 256:1 und aus deinem 20 MHz 1-Bit Datenstrom macht dir die Hardware einen wesentlich zivilisierteren 78,125 kHz 8-Bit Datenstrom für die weitere Verarbeitung im µC. PWM musst du timen (Dutycyle messen) oder (keine gute Idee) analog filtern und danach mit dem AD-Wandler eines µC messen. Der Dutycycle von PDM enthält hingegen keine weitere Information die über DT == 0 --> 0 oder DT > 0 --> 1 hinaus geht. Wenn du das timest bekommst du 20000000 Werte/s, die du auf == 0 testen musst.
Hannes J. schrieb: > PWM musst du timen (Dutycyle messen) oder (keine gute Idee) analog > filtern und danach mit dem AD-Wandler eines µC messen. Bitte was? Du kannst das ganz genauso synchronisieren wie eine PDM. Die PWM hat zudem noch eine konstantes Periodenverhalten und ist bei unbekannter Frequenz und Phase einfacher zuverarbeiten.
Hannes J. schrieb: > PDM kannst du einfach zählen. Ja, aber das ist nicht verlustfrei! Das Zählen ist schon ein Filter, Tiefpass. Aber eben auch kein gutes Filter. Ich habe damals für PDM Mikrofone einen FIR genommen weil das Ergebnis nur mit Zählen zu schlecht war. Hannes J. schrieb: > Das reduziert den Datenstrom 256:1 Nein. Die Frequenz. Die Datenrate nur 1:32 Holger W. schrieb: > synchronisieren Was meinst du damit?
:
Bearbeitet durch User
Gustl B. schrieb: > Holger W. schrieb: >> synchronisieren > > Was meinst du damit? Du musst on Phase sein mit dem Signal. Entweder kennst du die Frequenz oder du tastest ab oder du generierst die Frequenz.
Holger W. schrieb: > Du musst on Phase sein Was meinst du denn damit?! PDM liefert einen Bitstrom. Es reicht wenn du jedes einzelne Bit korrekt erkennst. Dazu gibt es üblicherweise noch eine Clock mit der man diese Bits abtasten kann.
Gustl B. schrieb: > Dazu gibt es üblicherweise noch eine Clock mit der man diese > Bits abtasten kann. Eine Clock? Eine coocoo clock? Oder doch eine Glock? Vielcht nur ein Glöckchen?
Man hat üblicherweise einen Takt mit fester Phase zu den Bits. Entweder weil man den Takt verwendet um den AD Wandler zu betreiben oder weil der den Takt als Ausgang mit anbietet. Es ist jedenfalls nicht das Problem die Bits von der PDM zu erfassen. Das Problem ist eher die gut genug zu filtern. Auch das ist schon gelöst.
iht redet hier von verschiedenen Sachen https://www.mikrocontroller.net/articles/Pulsdichtemodulation
Das weiß ich auch nicht. Falk hatte schon sehr weit oben geschrieben dass man das filtern sollte. Sehe ich genauso. Allerdings ist das Zählen auch ein Filter. Kein guter Filter, aber eben ein lausig schlechter Tiefpass.
Moin, Zaehlen ist sowas wie integrieren fuer Haubdschueler. Mit einem Integrator faengt ein Hogenauerfilter an, um eine Dezimation zu erreichen. Deshalb immer dieses zaehlen.
>Das weiß ich auch nicht. Falk hatte schon sehr weit oben geschrieben >dass man das filtern sollte. Und noch besser, es gibt den OpenPDMFilter: https://github.com/earlephilhower/arduino-pico/blob/master/libraries/PDM/src/rp2040/OpenPDMFilter.c
Gustl B. schrieb: > PDM liefert einen Bitstrom. Es reicht wenn du jedes einzelne Bit korrekt > erkennst. Dazu musst du die Phase des Taktes kennen. Also wie ich geschrieben habe, sie selbst erzeugen, oder kennen und dann synchron sampeln, oder asynchron einsampeln. Hast du das noch nie getan? Nochmal: Es ist egal ob PDM oder PWM oder irgend ein anderes digitales Signal, du musst die Flanken erwischen und irgendwie integrieren, zählen oder summieren oder wie immer du es nennen möchstest.
Holger W. schrieb: > Dazu musst du die Phase des Taktes kennen. Nein? Es reicht wenn ich einen Takt habe mit dem ich die Bits abtasten kann. Holger W. schrieb: > Hast du das noch nie getan? Doch, mit mehreren PDM Mikrofonen. Und ja da hatte ich immer einen Takt. Phase war egal, aber das war eben der Bittakt mit dem ich die Bits schön erfassen konnte. Holger W. schrieb: > Es ist egal ob PDM oder PWM oder irgend ein anderes digitales > Signal Nein. Holger W. schrieb: > du musst die Flanken erwischen Wozu die Flanke? Flanke der Bits oder vom Takt? Bei PDM muss man die Bits korrekt erfassen. Keine Flanken. Bei PWM macht Flanke natürlich Sinn, hier geht es aber um PDM. Holger W. schrieb: > irgendwie integrieren, zählen > oder summieren oder wie immer du es nennen möchstest. Das kann man so machen, aber dann ist es bei PDM eben schlecht. Bei PWM kann man das machen um das Tastverhältnis zu bestimmen, dann ist es gut, aber PDM ist etwas Anderes, das muss man tiefpass filtern. Ja, Integrieren oder Summieren ist auch ein tiefpass Filter, aber eben ein sehr schlechter.
www.st.com/resource/en/application_note/an4990-getting-started-with-sigm adelta-digital-interface-on-applicable-stm32-microcontrollers-stmicroele ctronics.pdf Ich lasse diesen Link mal hier.
Wir erfinden also einen Takt und zählen imaginäre Flanken. Gefällt mir
Gustl B. schrieb: > Holger W. schrieb: >> Dazu musst du die Phase des Taktes kennen. > > Nein? Es reicht wenn ich einen Takt habe mit dem ich die Bits abtasten > kann. DAS IST DOCH DASSELBE!
Nein, die Bits kann ich bei ziemlich beliebiger Phasenlage erfassen. Es muss nur sichergestellt sein, dass nicht der Zeitpunkt an dem die Bits ihren Wert ändern können getroffen wird.
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.