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