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!
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.
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.
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?
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.
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.
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.