Forum: Digitale Signalverarbeitung / DSP / Machine Learning Rechteck mit DPW-Algorithmus


von Maik W. (werner01)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe das Problem das ich bei der folgend geschilderten Methode einen 
Rechteck zu erzeugen versuche, dieser aber alles andere als eine 
Aliasingreduzierte Pulswelle ist.

Wie nach DPW wird erstens der Modulo-Counter qudriert und der alte Wert 
vom neuen abgezogen. Danach wird durch "c" verstärkt (c=fs/(4f)).
Ich erzeuge halt zwei Sägezähne unterschiedlicher Phasenlage und diese 
beiden Sägezähne hören sich einzeln sehr sauber an .Auf dem Oszie sehen 
die auch super aus halt bandlimitid.

Wenn ich nun aber den einen Sägezahn vom anderen abziehe (laut 
DPW-Algorithmus), dann kommt da zwar ein Rechteck heraus welcher aber 
sehr unsauber klingt. Samplingfrequenz beträgt 62,25 kHz und der 
erzeugte Rechteck soll eine Frequenz von 0 bis 2500 Hz haben 
(einstellbar).

Im Anhang habe ich mal die Assemblerroutine im ASM30-Format für DSPIC's.

Wer kann mir da einen Ratschlag geben was ich da Falsch mache?

Vielen Dank schon mal im Voraus...

von Filterer (Gast)


Lesenswert?

Wenn man 2 Sägezähne von einander abzieht, die gleich Steigung haben, 
kommen 2 Rechtecke raus: Eines oberhalb und eines unterhalb der 
Nulllinie.

von Maik W. (werner01)


Lesenswert?

Servus,

ja das kann schon sein, aber jetzt stelle Dir mal die Sägezähne unsigned
vor ,dann kommt da ein Rechteck raus. Der Dac in dem DSPIC ist auf 
signed konfiguriert und ein unsigned in Signed wird in einer extra 
Routine gemacht kurz bevor die Samples and den DAC übergeben werden.

Danke für deine Hilfe

von Gerd (Gast)


Lesenswert?

Warum muss man Rechtecke mit Sägezahnkurven zusammensetzen?

von Maik W. (werner01)


Lesenswert?

Gerd schrieb:
> Warum muss man Rechtecke mit Sägezahnkurven zusammensetzen?

-damit man einen bandbegrenzten Puls rausbekommt.Die Sägezähne sind 
nämlich schon bandlimitiert. verstehsde

von Sascha (Gast)


Lesenswert?

Sind die beiden Sägezähne exakt 180° auseinander? Der eine muss ja nach 
unten gehen, während der andere rauf geht (bei 'signed' würden sie sich 
im Nullpunkt treffen). Dann hättest Du ein Rechteck mit 50% Pulsweite. 
Ist dem so, oder hast Du eher eine Pulswelle?

von Sascha (Gast)


Lesenswert?

Ach sorry, 50% war glaub ich Käse. Sollte die Differenz nicht pi/2 oder 
so sein? Verschieb mal den invertierten in der Phase, addiere beide und 
schau Dir den Plot an. Wenn beide bandlimitiert sind, muss die Addition 
das auch sein.
Wenn Du aber eher einen Nadelimpuls hast, und die Sägezähne waren nicht 
wirklich bandlimitiert, wird das mit abnehmender Pulsweite 
offensichtlicher.

von Maik W. (werner01)


Lesenswert?

Mensch Sascha,

danke erstmal für deine Teilnahme und Hilfe, aber ich habe den Fehler
gefunden. und Zwar die Sägezähne müssen beide positiv sein aber 
phasenverschoben. Mein Fehler war die letztendliche Verstärkung des 
Signales. Das Ding war einfach übersteuert (c=fs/(4f)).
Das scheint so nicht zu stimmen oder mein Prog ist fehlerhaft.


Jungens danke noch mal

von Werner (Gast)


Lesenswert?

Maik Werner schrieb:
> Das Ding war einfach übersteuert ...

Deswegen ist schon mal eine Ariane 5 Rakete runtergekommen.
Und das, obwohl die Routine bewährt war und bei der Ariane 4 immer zur 
vollsteb Zufriedenheit funktioniert hat.

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.