Forum: Mikrocontroller und Digitale Elektronik Flaschenhals ausrechnen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michi (Gast)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.