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
:
Bearbeitet durch User
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.