Forum: Mikrocontroller und Digitale Elektronik Flaschenhals ausrechnen


von Michi (Gast)


Lesenswert?

Hallo Zusammen


Ich stehe vor folgedem technischen Problem:


Ein externer Datenlogger hat eine gegebene Eingangsdatenrate. Sagen wir 
z.b. der Datenlogger kann aufgrund seiner technischen Möglichkeiten 100 
Samples per Sekunde aufnehmen.

Nun könnte per "Trick"  (LOGGER<- DAC - MCU <- ADC) das Messignal 
"vorgegaukelt" werden. Ein MCU misst mit einem ADC ein Analogsignal und 
gibt das gemessene Signal am DAC wieder aus.

Gehen wir davon aus der MCU kann nimmt nun 200 Samples per Sekunde auf, 
speichert diese zwischen und gibt diese dann mit einer Frequenz von 100 
Samples wieder an den Logger weiter.

So kann der Logger theoretisch mit 200Samples/s befüllt werden.

Also der MCU würde dann mit 200 S/s den ADC auslesen, die Daten in einen 
Speicher schieben, und eine Routine liest dann den Speicher aus und 
setzt den DAC mit dem Speicherinhalt.

Nun meine eigentliche Frage:

Wie kann ich berechnen wieviel Speicher ich benötige?
Wie kann ich herausfinden wie schnell der MCU sein muss das es 
funktioniert (STM32).

Ich suche hier nach dem Lösungsweg, nicht nach einem Endergebnis :) die 
200/100 Angaben sind nur zur Erklärung

Vielen Dank

von KreiselKompass (Gast)


Lesenswert?

Verstehe ich das richtig, daß eingangsseitig mehr Daten reinkommen, wie 
ausgangsseitig verarbeitet werden können? Dann braucht man (um in diesem 
Beispiel zu bleiben) Speicher für 100 Samples pro Betriebssekunde

von Achim S. (Gast)


Lesenswert?

Michi schrieb:
> Nun könnte per "Trick"  (LOGGER<- DAC - MCU <- ADC) das Messignal
> "vorgegaukelt" werden. Ein MCU misst mit einem ADC ein Analogsignal und
> gibt das gemessene Signal am DAC wieder aus.

Ein etwas kruder Trick um die Abtastrate hoch zu bringen. Wenn die Daten 
eh schon in einer MCU digital vorliegen würde ich sicher versuchen, den 
Umweg über DAC und erneute ADC-Umsetzung zu umgehen, um sie in einen 
Rechner zu bringen.

Michi schrieb:
> Wie kann ich berechnen wieviel Speicher ich benötige?

Das hängt davon ab, über wie lange Zeiträume/über wie viele Samples der 
"Trick" funktionieren soll. Wenn es für eine dauerhafte Messung gedacht 
ist, dann geht der benötigte Speicher gegen unendlich. Wenn die Messung 
nur über bestimmte Zeiträume stattfindet, dann ist eine sichere 
Abschätzung des Speicherbedarfs:
Dauer der Aufzeichnung * 200 Samples/s * Zahl der Bytes pro Sample

In der Realität reicht dann auch weniger Speicher, weil du ja schon 
wieder Speicher freigeben kannst während noch Werte mit 200S/s 
aufgenommen werden. Bei deinen konkreten Zahlen (200S/s zu aufnehmen, 
100S/s zum wieder ausgeben) wäre das theoretische Limit 50% des oben 
berechneten Werts. Eni praktisches Limit würde ich nicht angeben wollen, 
weil ich es praktisch nicht so lösen würde wie von dir beschrieben.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Michi schrieb:
> Wie kann ich berechnen wieviel Speicher ich benötige?

Natürlich durch die Datentiefe der Samples (8 Bit, 16 Bit oder gar 32 
Bit). Diese multiplizierst du dann mit der Anzahl der gewünschten 
Samples. Für 200 Samples/s bei 16 Bit werden also pro Sekunde 400 Bytes 
benötigen.

> Wie kann ich herausfinden wie schnell der MCU sein muss das es
> funktioniert (STM32).
Das hängt doch davon ab, wie viel Samples du pro Sekunde sammeln willst, 
wie schnell die Peripherie (der ADC) arbeiten kann und wie schnell der 
Speicher ist.
200 Samples/s kann jedenfalls der schnarchlangsamste AVR-8, der auf dem 
Markt ist, da ist ein STM32 schon Overkill.

von Michi (Gast)


Lesenswert?

> Ein etwas kruder Trick um die Abtastrate hoch zu bringen. Wenn die Daten
> eh schon in einer MCU digital vorliegen würde ich sicher versuchen, den
> Umweg über DAC und erneute ADC-Umsetzung zu umgehen, um sie in einen
> Rechner zu bringen.

Leider ist der Datenlogger gegeben. Es handelt sich prinzipell um eine 
Software welche den Audiokanal eines PC's (44khz,48khz,96khz,192khz, jeh 
nach Karte) verwendet. Somit muss man also tatsächlich am Audioeingang 
einen Wert X liefern. Mein Zwischenstück soll mit einem Dip-Switch auf 
die Eingangsrate gestellt werden können, und dann ca. 1MHz am MCU 
aufzeichnen.

von Clemens S. (zoggl)


Lesenswert?

Michi schrieb:

> Leider ist der Datenlogger gegeben. Es handelt sich prinzipell um eine
> Software welche den Audiokanal eines PC's (44khz,48khz,96khz,192khz, jeh
> nach Karte) verwendet. Somit muss man also tatsächlich am Audioeingang
> einen Wert X liefern. Mein Zwischenstück soll mit einem Dip-Switch auf
> die Eingangsrate gestellt werden können, und dann ca. 1MHz am MCU
> aufzeichnen.

du putzt dir die zähne auch mit einer langen Klobürste durch den hintern 
oder?

-es gibt billige UART / USB Wandler die die Datenrate spielend schaffen, 
für den weg über die Audio Karte gibt es keinen Grund
-warum ist der Logger gegeben?
-welchen DAC willst du bei 192 khz einsetzen? - das ist gar nicht mehr 
so trivial
-beschreib doch bitte dein Problem ordentlich und nicht die 
Zwischenschritte zu deiner Murkslösung

ansonsten steht die Antwort bereits oben:

Achim S. schrieb:
> Wenn es für eine dauerhafte Messung gedacht
> ist, dann geht der benötigte Speicher gegen unendlich.

sg

: Bearbeitet durch User
von Michi (Gast)


Lesenswert?

Clemens S. schrieb:

> -es gibt billige UART / USB Wandler die die Datenrate spielend schaffen,
> für den weg über die Audio Karte gibt es keinen Grund

Ja und dann? Wie bringe ich die Daten vom UART auf die 
Audioschnittstelle die die Software auswertet? Ich muss ja die Software 
benutzen um die Daten zu verarbeiten. Diese akzeptiert nur den 
Audiokanal oder ein WAV File.

von Niklas Gürtler (Gast)


Lesenswert?

Michi schrieb:
> Diese akzeptiert nur den Audiokanal oder ein WAV File.

Ach. Dann erstelle doch einfach eine WAV Datei. Das ist einfach. Die 
Daten kannst du dann per USB zum PC schaffen. Siehe z.B. mein
USB-Tutorial mit STM32, das bezieht sich aber nur auf Full Speed mit 
Max 12MBit/sec, falls das für dich reicht. Auf PC-Seite baust du ein 
kleines Programm welches die Daten in Empfang nimmt und als WAV Datei 
speichert.

von Clemens S. (zoggl)


Lesenswert?

Michi schrieb:
> Ich muss ja die Software benutzen

warum musst du genau diese eine hochgeheime Software benutzen?
welche hochgeheime Software musst du benutzen?

Michi schrieb:
> Audiokanal oder ein WAV File.

dann bau doch einfach ein wav file das ist bedeutent einfacher als der 
rotz, den du vor hast.

sg

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Neben den schon von anderen Teilnehmer genannten Kritikpunkten solltest 
Du auch berücksichtigen, dass keineswegs sichergestellt ist, dass eine 
exakte Übereinstimmung von DAC-Ausgabewerten und Soundkarten-Samples 
vorliegt. Hierfür müssten nämlich beide mit einem geeignet gewählten 
konstanten zeitlichen Versatz synchronisiert werden. Außerdem hat eine 
Soundkarten natürlich auch noch Tiefpässe am Eingang, vor allem als 
Aliasing-Filter. Aus einer Samplerate von z.B. 192k/s kann man nicht 
etwa schließen, damit bis zu knapp 96kHz abtasten zu können, sondern der 
Übergangsbereich des Tiefpasses wird schon knapp über 20kHz beginnen. 
Durch entsprechend flache Filterverläufe vermeidet man halt einen 
ungünstige Phasengänge im Durchlass- und Übergangsbereich.

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.