Sinus mit AVR erzeugen

Gast #339682
Lesenswert?

Hallo,

ich brauche mal ein paar Tips von der AVR-Fraktion:

Kann man mit einem Atmega 16 einen sauberen Sinus von 120kHz direkt
erzeugen?

Kann man mit eienm Atmega 16 zwischen den Frequenzen 120kHz und 130 kHz
ohne Unterbrechung hin- und herschalten (Wechsel in der Nullstelle) und
das in einem Takt von 1kHz?
#339683
Lesenswert?

Wie "sauber" soll es denn werden? Du kannst z.B. 8 Ausgänge über eine
Widerstandskaskade als DA-Wandler zusammenschalten. Ich bin kein
Assembler-Freak, aber ich denke, Minimum 4 Take braucht man für eine
Schleife, die Werte aus einer Tabelle auf den Port ausgibt. Noch die
Abfrage des Wechsels zwischen den Frequenzen, dann bist du sicher bei
6-7 Takten pro Durchlauf. Gehen wir mal von 16 MHz Takt aus, dann
bleiben vielleicht 3MSamples/s Ausgabe - vermutlich weniger. Da sind
dann schon einige Zacken im Sinussignal drin. Allerdings könnte man die
Kurve über einen Tiefpass wieder etwas abrunden - aber ein sauberer
Sinus wird es dadurch natürlich nicht. Die Frage bleibt also: Wie genau
soll das Sinussignal sein?
Gast #339684
Lesenswert?

Statt Widerstandsdekade gleich PWM nehmen, Sinustabelle mehreren Werten
erstellen und darein PWM-Werte von 0 bis Pi/2 schreiben, diese Tabelle
einmal hoch, einmal runter, dann wieder hoch und runter mit
gewechseltem Vorzeichen "durchfahren"->eine Sinusperiode. PWM-Ausgang
mit Tiefpass glätten.
Je nachdem wie schnell man die Tabelle durchgeht ist dementsprechend
auch die Frequenz. Wechsel der Frequenz nach dem 4. Mal durchfahren(im
Nulldurchgang nach 2xPi).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren