Forum: Mikrocontroller und Digitale Elektronik µC für Fast Data Decoding


von Ulrich G. (Gast)


Lesenswert?

Ich möchte gerne mehrere Sensor-Controller-Systeme über eine größere 
Distanz mit einander verbinden und dazu einen zentralen Prozessor 
verwenden. Die Sender sind kleine Module eines Drittanbieters, welche 
eine komplexe Datenerfassung betreiben und ihre fertig prozessierten 
Daten permanent als pseudoanaloges PDM selbständig absenden, um sie in 
analogen Erfassungsfeldern nutzen zu können, sie sind aber auch digital 
auswertbar. Die Module werden hart auf den 10 MHz Labortakt 
synchronisiert und arbeiten intern mit einer eigenen PLL, d.h. ich 
könnte die PDM-Rate einstellen.

Ich würde gerne abschätzen, wieviele solcher Sensoren ich an einen 
Controller anschließen kann und wieviele Kanäle ich benötige. 
Physikalisch sollen bis zu 16 Controller angeschlossen werden. Es ist 
aber immer nur einer wirklich wichtig, nämlich der, der dem "Meßobjekt" 
am Nächsten ist und die Daten mit der größten Amplitude liefert.

Ich möchte daher die 16 Ausgänge mit einigen Multiplexern auf einen 
Prozessor schalten und immer nur einige Kanäle gleichzeitig beobachten. 
Der Prozessor soll immer einen starken auswerten und erkennen, dass ein 
Sensor immer weniger liefert und dann durch Umschalten in der Nähe des 
starken Sensors die anderen testen, ob sie noch mehr liefern. Wegen 
Setup-Zeit ist immer einer tot und 2 werden mindestens zur Verfolgung 
benötigt. MATLAB-Simulation steht!

Ich hätte also einen Prozessor, der 4 PDM-Kanäle erfassen kann. Es 
dürfen gerne mehr sein.

Was wichtig ist: Mit welchen maximalen Raten kann ich da rechnen?
Hätte jemand einen Tipp?

Vielen Dank!

von Ulrich G. (Gast)


Lesenswert?

Nach eines:

Die Senderate der PDM soll möglichst hoch sein, denn sie begrenzt 
bekanntlich Auflösung und Frequenz, mit der der Prozessor den Sensor 
beobachten kann.  Der Prozessor soll die PDM auswerten und später noch 
filtern, wenn er weis, welches der stärkste Kanal ist. So 10-12 Bit bei 
100kHz sollten das am Ende schon sein.

Da wäre noch die Frage, wie hoch die PDM mindestens sein muss. Von den 
Multiplexern her sehe ich kein Problem, weil die statisch umschalten. 
Der PDM sollte es keinen Abbruch tun, wenn ein paar falsche Takte 
eingemischt werden.

Der Prozessor bräuchte jedenfalls eine Anzahl Zähler zur Auswertung und 
Mittelwertbildung, damit überhaupt erst einmal klar ist, welcher Kanal 
dominant ist. Die Daten dieses Kanals müssen dann genau gerechnet 
werden. Eventuell ist es auch sinnvoll mehrere Kanäle genau zu rechen, 
um den Entscheid zu verbessern.

von PittyJ (Gast)


Lesenswert?

Nimm doch einfach ein FPGA, der die Pulse Mikrosekunden-genau misst, und 
dann dem Prozessor nur die High und Low-Zeiten mitteilt.
Ist nicht kompliziert, und auf einem FPGA können dann Dutzende dieser 
Einheiten synthetisiert werden.

von Michael B. (laberkopp)


Lesenswert?

Ulrich G. schrieb:
> Ich hätte also einen Prozessor, der 4 PDM-Kanäle erfassen kann

Das macht man per Hardware, die Einrichtung heisst oft 'input capture 
mode'.

Für 4 Kanäle gleichzeitig tut es also nicht der kleinste uC.

Hier ist erklärt, wie es geht 
https://www.cae.tntech.edu/~mmahmoud/teaching_files/undergrad/ECE3120SP14/slides/Chapter_5.pdf

das ist der Prozessor 
http://www.mosaic-industries.com/embedded-systems/sbc-single-board-computers/freescale-hcs12-9s12-c-language/instrument-control/pwm-pulse-counter-frequency-meter

Natürlich gibt es auch anderen uC die das können. Je nach timer-Takt 
bestimmt sich die Auflösung (z.B. bei 16MHz sind das 62.5ns) und je nach 
PDM Grundfrequenz (z.B. 100kHz) damit die Bitanzahl (z.B. bis 160 also 
7.5 bit).

Wenn du 1MHz PDM Basisfrequenz hast und auf 1ns auflösen willst, 
brauchst du ein mit 1GHz (PLL) getaktetes FPGA und 10 bit Zähler (na 
gut, mit Tricks tun es weniger als 1GHz durch Gatterlaufzeiten und clock 
skewing).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ulrich G. schrieb:
> nämlich der, der dem "Meßobjekt" am Nächsten ist
Wie schnell bewegt sich denn das "Messobjekt" zwischen den Sensoren?
Muss da das gesamte System tatsächlich mit 10MHz abgetastet werden?

> pseudoanaloges PDM
Wie sieht da denn so ein "Datenpaket" aus? Wie ist die Information in 
das Signal eingeprägt?

: Bearbeitet durch Moderator
von Gustl B. (-gb-)


Lesenswert?

Lothar M. schrieb:
> Wie sieht da denn so ein "Datenpaket" aus? Wie ist die Information in
> das Signal eingeprägt?

Eben Pulsdichte. https://en.wikipedia.org/wiki/Pulse-density_modulation
Irre ineffizient weil man für 10 Bit Auflösung wirklich 1024 Takte 
braucht. Aber kann man schon machen ...
Die Daten bekommt man zurück indem man in einem Zeitfenster die Anzahl 
der Pulse zählt. Das kann man auch überlappend machen und man kann auch 
sehr einfach die Auflösung ändern.

Bisher ist mit PDM nur bei MEMS Mikrofonen untergekommen.

: Bearbeitet durch User
von Ulrich G (Gast)


Lesenswert?

Michael B. schrieb:
> Für 4 Kanäle gleichzeitig tut es also nicht der kleinste uC.
Das hatte ich mir schon gedacht. Danke für den Link.

Michael B. schrieb:
> Natürlich gibt es auch anderen uC die das können.
Ich schau, ob ich fündig werde.

> Je nach timer-Takt bestimmt sich die Auflösung (z.B. bei 16MHz sind das
> 62.5ns) und je nach PDM Grundfrequenz (z.B. 100kHz) damit die
> Bitanzahl (z.B. bis 160 also 7.5 bit)
Die Idee ist eigentlich 1en zählen, den Rest als 0 annehmen und 
innerhalb einer definierten Zeit auf diese Weise eine Dezimation zu 
bekommen.

> Wenn du 1MHz PDM Basisfrequenz hast und auf 1ns auflösen willst
Es soll synchron sein, d.h. wirklich genau 1024 Impulse zählen. Genauer 
als 1/f brauche ich es also nicht. Wahrscheinlich brauche ich aber eine 
höhere Frequenz als 1MHz.

Lothar M. schrieb:
> Ulrich G. schrieb:
>> nämlich der, der dem "Meßobjekt" am Nächsten ist
> Wie schnell bewegt sich denn das "Messobjekt" zwischen den Sensoren?
> Muss da das gesamte System tatsächlich mit 10MHz abgetastet werden?
Die 10MHz sind nur für die Daten nötig(?). Es sind ja 1-Bit-Daten.

Gustl B. schrieb:
> Irre ineffizient weil man für 10 Bit Auflösung wirklich 1024 Takte
> braucht.
Die Module arbeiten eben so, da sie mit einem einfachen analogen Filter 
als  Analogpositionsgeber arbeiten.

von c-hater (Gast)


Lesenswert?

Ulrich G. schrieb:

> Die Module werden hart auf den 10 MHz Labortakt
> synchronisiert und arbeiten intern mit einer eigenen PLL, d.h. ich
> könnte die PDM-Rate einstellen.

Auf was maximal? Das ist der eine Punkt.

> Der Prozessor soll die PDM auswerten und später noch
> filtern, wenn er weis, welches der stärkste Kanal ist. So 10-12 Bit bei
> 100kHz sollten das am Ende schon sein

Das bedeutet: die PDM-Abtastung (und natürlich auch: -Generierung) müßte 
mit ca. 100-400MHz Bittakt erfolgen (synchronisierter Aufbau mit 
Laufzeitkompensation vorausgesetzt).

Können das die Sensoren wirklich? Würde mich stark wundern. Falls ja, 
würde mich schon mal interessieren, was das denn für Feenstaub sein soll 
und warum deren Ingenieure ein derart ungeeignetes Signal gewählt 
haben...

Wenn sie es aber wirklich können und du das auch wirklich ausnutzen 
willst/musst, dann wirst du wohl die µC-Idee knicken können. Sowas ist 
dann ziemlich eindeutig ein FPGA-Job.

Der Gesamtaufbau dürfte einigermaßen tricky werden. Bis sowas 
vollständig korrekt läuft, können u.U. Monate in's Land gehen.

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
Noch kein Account? Hier anmelden.