Forum: Mikrocontroller und Digitale Elektronik uC Sinus DAC


von frager (Gast)


Lesenswert?

Wie gibt man am besten über einen uC eine möglichst genaue 
Sinusschwingung aus?
Wie kann ich davon wiederum viele Sinus mit unterschiedlichen Amplituden 
übereinander legen?
Hat jemand ein (anschauliches) Beispiel?
Vielen Dank!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

frager schrieb:
> Wie gibt man am besten über einen uC eine möglichst genaue
> Sinusschwingung aus?
Am besten mit einem entsprechend potenten Rechenknecht und einem DAC 
mit hoher Auflösung.

Zu allgemein?
Dann sag doch mal genauer, wofür du das brauchst?

von M. K. (sylaina)


Lesenswert?

frager schrieb:
> Wie gibt man am besten über einen uC eine möglichst genaue
> Sinusschwingung aus?

Was ist den "möglichst genau? Ich hab das die Tage erst gemacht mit ner 
PWM und nem Tiefpass dahinter.

frager schrieb:
> Wie kann ich davon wiederum viele Sinus mit unterschiedlichen Amplituden
> übereinander legen?

Wie man es mit allen anderen Signalen macht: Einfach überlagern.

frager schrieb:
> Hat jemand ein (anschauliches) Beispiel?

Was willst du denn genau machen? Das ist sinnvoller als hier ein 
Beispiel zu posten, dass deinen Anforderungen nicht gerecht wird.

von H. S. (Gast)


Lesenswert?

>Re: uC Sinus DAC
Der verstümmelte Titel soll wahrscheinlich heißen:

"Sinus mit uC für einen DAC" nehme Ich an.

Für moderate Anwendungen reicht eine vorberechnete Tabelle, für genauere 
Anwendungen nehmen wir den Sinus-CORDIC. Wikipedia weiß mehr.

von Michael B. (laberkopp)


Lesenswert?

frager schrieb:
> Wie gibt man am besten über einen uC eine möglichst genaue Sinusschwingung aus?

DDS

> Wie kann ich davon wiederum viele Sinus mit unterschiedlichen Amplituden
> übereinander legen?

Mehrere Phasenakkumulatoren bauen und deren Zugriffe in die Sinustabelle 
mit den entsprechenden Lautstärken addieren.

> Hat jemand ein (anschauliches) Beispiel?

http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-dds-sinewave-generator/

von Peter (Gast)


Lesenswert?

>Wie gibt man am besten über einen uC eine möglichst genaue
>Sinusschwingung aus?

So:
1
void setup() 
2
{
3
}
4
5
void loop() 
6
{
7
  float phase=0;
8
  int amplitude=256;
9
  int x=amplitude/2*sin(phase)+amplitude/2;
10
  phase+=0.0001;
11
  if(phase>2*PI)phase-=2*PI;
12
  analogWrite(A0,x); // oder irgendein DAC
13
  delay(10);
14
}

von Lothar (Gast)


Lesenswert?

> viele Sinus mit unterschiedlichen Amplituden

z.B. uC mit 4x 12-bit DAC für 1.50 EUR: EFM8LB1 QFP32

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.