Signaltransformation

OP #7382728
Lesenswert?
• ▲
▼

Hallo,

ich muss über DAC ein Signal ausgeben. 16 bit, 2Khz Updaterate.

2 Bilder sind eigefügt. So ähnlich geht es auch weiter. Signal 1 ist bei ADC 0V, Signal 2 bei ADC 1V, Signal 3 bei 2V und so bis 5V. Die Länge und Form der Signale sind unterschiedlich. Es gibt nicht wirklich einen (rechnerischen) Zusammenhang. Wie kann ich die Signale aneinander anpassen? Es soll ein fließender Übergang stattfinden. Wie die Signale dazwischen (bei 0,33V z.B.) aussehen ist nicht relevant.

Was wäre der richtige Weg?

Herzlichen Dank

Angehängte Dateien:
#7382737
Lesenswert?
• ▲
▼

Du willst also in Abhängigkeit eines gemessenen ADC-Wertes eine arbiträre Wellenform per DAC ausgeben?

Dann musst du dir Punkte auf der auszugenden Wellenform suchen und diese in der richtigen Geschwindigkeit ausgeben. Wenn da kein rechnerischer Zusammenhang zwischen ADC und DAC zu finden ist, wüsste ich nicht, wie man es sonst machen sollte.

OP #7382744
Lesenswert?
• ▲
▼

Du willst also in Abhängigkeit eines gemessenen ADC-Wertes eine arbiträre Wellenform per DAC ausgeben? Korrekt. Es muss kein ADC Wert als Abhängigkeit sein. Zähler funktioniert auch. Ändert nichts an der Lösung der Aufgabe. Alle 10.000Punkte Zählerstand neues Signal. Dabei sind die Signale willkürlich. Das ist die Herausforderung.

Dann musst du dir Punkte auf der auszugenden Wellenform suchen und diese in der richtigen Geschwindigkeit ausgeben. Bitte noch einen Satz zu dem Verfahren.

#7382756
Lesenswert?
• ▲
▼

Nehme N Zähler. Wenn der Zähler >= Anzahl Samples des Signals ist, subtrahiere die Anzahl Samples vom Zähler. Zähle alle Zahler parallel, egal ob sie Teil des Mischsignals sind oder nicht.

Jetzt zur Interpolation. Nimm deinen Wert. Runde ab. das, und das + 1 ist dein Signalindex. Hol dir das Sample das zum Zähler des jeweiligen Signals gehört, nennen wir die a und b. Jetzt definieren wir noch t=(wert mod 1). Damit kann man nun interpolieren. Linear interpolieren wäre: a*(1-t) + b*t.

Und schon hast du dein interpoliertes Mischsignal! Ist aber nicht garantiert, dass das eindeutig ist. Aber davon wieder zum Anfangswert zu kommen, war ja keine Anforderung.

(Der Grund für mehrere Zähler ist, dass sonst die Perioden anders sein können, und dann das kgv grösser als der Wertbereich des Zählers werden könnte, und man Probleme mit Overflows bekäme. Wobei, da gibt es einen netten Trick. Wenn man einen 64bit Zähler nimmt, und den immer nur um 1 erhöht, kann man ihn nicht so schnell erhöhen um jemals den Overflow zu sehen).

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.