Forum: Mikrocontroller und Digitale Elektronik DAC gibt "krummes" Sinussignal aus


von Morgenmuffel (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe hier einen PIC µC mit zwei DAC TLV5637 verbunden. Ich möchte 
gerne 4 Sinussignale mit Phasenverschibung untereinander erzeugen.
Die Kommunikation geschieht mittels SPI und funktioniert auch.
Zur Erzeugung der Sinussignale habe ich eine Tabelle in 5° Schritten 
angelegt.

Mein Porblem besteht momentan jedoch darin, dass das Sinussignal, wie 
dem angehängtem Bild zu entnehmen, sehr merkwürdig aussieht 
(Prienziepiell aber auch nur zwischen 90° und 180°).
Ich habe schon verschiedene Frequenzen und unterschiedliche Anzahlen an 
Stützpunkten ausprobiert. Das Ergebnis bleibt jedoch das selbe (und zwar 
an allen 4 Ausgängen).

Ich messe mit meinem Oszilloskop übrigens direkt am Ausgang des DAC, 
ohne angeschlossenene Tiefpasses oder dergleichen.

Das Problem wird wohl kein großes sein, aber ich stehe irgendwie aufm 
Schlauch... Hat einer einen Tip?

von Uwe Bonnes (Gast)


Lesenswert?

Serieller oder parraleler DAC? Bei parallelen Anschluss evt 
nich/schlecht kontaktierte Pins?

von ban (Gast)


Lesenswert?

Hallo,

ich nehme an eine falsch berechnete Tabelle.

Gib mal blos eine Rampe (0 bis max, und dann wieder von vorn) aus und 
schau ob sie anständig kommt !!!

von Simon K. (simon) Benutzerseite


Lesenswert?

Array-Index Überlauf.

von fluid (Gast)


Lesenswert?

Simon K. schrieb:
> Array-Index Überlauf.

hmm - falls die Kurve im Bereich der unteren Sinushalbwelle 0° bis 180° 
durchläuft, sieht es so aus, daß die Probleme bereits vor dem oberen 
Scheitelpunkt bei 270° Grad auftreten...

...vielleicht "so" oberhalb von 255°?

Versuchst Du eventuell den Bereich von 0° bis 360° in eine 
8-Bit-Variable zu packen?

Ohne inovativ patenreife Datenkompression wird das nicht... ;-)

von Morgenmuffel (Gast)


Lesenswert?

fluid schrieb:
> Simon K. schrieb:
>> Array-Index Überlauf.
>
> hmm - falls die Kurve im Bereich der unteren Sinushalbwelle 0° bis 180°
> durchläuft, sieht es so aus, daß die Probleme bereits vor dem oberen
> Scheitelpunkt bei 270° Grad auftreten...
>
> ...vielleicht "so" oberhalb von 255°?
>
> Versuchst Du eventuell den Bereich von 0° bis 360° in eine
> 8-Bit-Variable zu packen?
>
> Ohne inovativ patenreife Datenkompression wird das nicht... ;-)

Okay werde ich gleich mal ausprobieren!


Simon K. schrieb:
> Array-Index Überlauf.

Das wäre zu schön um wahr zu sein ;)

ban schrieb:
> Hallo,
>
> ich nehme an eine falsch berechnete Tabelle.
>
> Gib mal blos eine Rampe (0 bis max, und dann wieder von vorn) aus und
> schau ob sie anständig kommt !!!

Ich habe jetzt mal eine Dreieckspannung generiert. Sieht top aus!

von stefe (Gast)


Lesenswert?

Morgenmuffel schrieb:
> eine Tabelle in 5° Schritten

> Simon K. schrieb:
>> Array-Index Überlauf.
>
Leg keine Tabelle in 5° Schritten an sondern in z.B. 360°/128 Schritten

dann kannst du sie sauber indizieren mit 0 - 127

und hast schon mal dieses Indizierungs-Problem weg

von Morgenmuffel (Gast)


Lesenswert?

Okay ich habe jetzt den Fehler stark eingegrenzt.

Den Sinus den ich erzeuge hat einen Offset von X. Jetzt habe ich X 
probeweise kleiner gemacht und das Sinussignal sieht so aus wie es soll.

Bei dem DAC handelt es sich um einen 10Bit DAC, ich bin aber niemals mit 
meinen Werten über 1023. Trotzdem scheint es da irgendwo eine Grenze zu 
geben.

5V ist die Betriebsspannung des DAC, 3,3V die externe Referenzspannung 
des DAC.

von Morgenmuffel (Gast)


Lesenswert?

Nach meiner letzten Messung kann der 10bit DAC Werte oberhalb von 780 
nicht mehr anzeigen.

Kann sich da jemand einen Reim drauf machen?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Datenblatt Seite10:
The output voltage (full scale determined by reference) is given by:

2* REF * [0x000 to 0xFFF][V]/ 0x1000

bei 3,3V ext.Ref heißt das ca. 6,6V max, bei Vcc=5V

oder wie der verstorbene Jim Williams schrieb "didn't read the data 
sheet  - you shall have no pie" (Appnote 19 zum LT1074)

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


Lesenswert?

Morgenmuffel schrieb:
> Nach meiner letzten Messung kann der 10bit DAC Werte oberhalb von 780
> nicht mehr anzeigen.
Was bedeutet das in Zahlen/Spannungen?
>
> Kann sich da jemand einen Reim drauf machen?
Die Versorgungsspannung ist zu niedrig.
1
VO Output voltage   0 to VDD–0.4 V
Welche Versorgung hast du, welche Ausgangsspannung willst du?

EDIT: Pech. Zweiter... ;-)

von Michael A. (Gast)


Lesenswert?

Morgenmuffel schrieb:
> Ich habe jetzt mal eine Dreieckspannung generiert. Sieht top aus!

Morgenmuffel schrieb:
> Nach meiner letzten Messung kann der 10bit DAC Werte oberhalb von 780
> nicht mehr anzeigen.

Wenn's am DAC liegt, hätte dies bei der Dreieckspannung oberhalb von 780 
(767?) auch auftreten müssen. Spricht also mehr für Fehler bei der 
Generierung der Werte.

von Morgenmuffel (Gast)


Lesenswert?

Michael A. schrieb:
> Morgenmuffel schrieb:
>> Ich habe jetzt mal eine Dreieckspannung generiert. Sieht top aus!
>
> Morgenmuffel schrieb:
>> Nach meiner letzten Messung kann der 10bit DAC Werte oberhalb von 780
>> nicht mehr anzeigen.
>
> Wenn's am DAC liegt, hätte dies bei der Dreieckspannung oberhalb von 780
> (767?) auch auftreten müssen. Spricht also mehr für Fehler bei der
> Generierung der Werte.

Okay hab ich vergessen zu erzählen, ich habe die Dreieckspannung nicht 
bis max laufen lassen.

Christoph Kessler (db1uq) schrieb:
> Datenblatt Seite10:
> The output voltage (full scale determined by reference) is given by:
>
> 2* REF * [0x000 to 0xFFF][V]/ 0x1000
>
> bei 3,3V ext.Ref heißt das ca. 6,6V max, bei Vcc=5V
>
> oder wie der verstorbene Jim Williams schrieb "didn't read the data
> sheet  - you shall have no pie" (Appnote 19 zum LT1074)

Ja dachte ich es mir schon, kleiner Fehler große Auswirkung ;)

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.