Forum: Mikrocontroller und Digitale Elektronik PWM als DAC - Schaltung und Simulation - wieso diese Ergebnisse?


von Ferdinand (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute!

Ich habe hier eine Schaltung in LTSpice aufgebaut, in der ich einen DAC 
durch eine PWM nachbilden will und damit anschließend eine 4-20mA 
Schleife steuern will.

In der Schaltung wird ein Offset von 3mA vorgegeben und dann soll 
zwischen 3 und ca. 22mA mittels PWM geregelt werden.

Ich habe also mal für verschiedene Duty-Cycles die Graphen anzeigen 
lassen. PWM-Frequenz ist 60Hz (geht nicht anders, Taktfrequenz des uCs 
ist nur 1MHz) - die Periodendauer beträgt also rund 16ms.

Gezeigt werden hier Schritte von 0 bis 16ms in Schritten von 1ms.

Aber die Abstände sind nicht gleich, finde ich. Woran liegt das und wie 
kann man das beheben?



Ferdinand

von Ferdinand (Gast)


Angehängte Dateien:

Lesenswert?

Nachtrag - ich habe hier noch den Eingang der Pulsquelle - da ist doch 
auch irgendwas nicht ganz normal. Muss ich an rise- und fall-Time was 
verändern? Ich hatte da mal ein bisschen dran herumgespielt, aber dann 
kam teilweise auch ein seltsames Signal heraus.

von Ferdinand (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist nochmal ein Bild vom Ausgang der Pulsquelle. Was ist denn da 
los?

von Ferdinand (Gast)


Lesenswert?

Kann es sein, dass das an meinem Maximum TimeStep hängt?

von Ferdinand (Gast)


Lesenswert?

OK, scheint ja eine Alleinunterhaltung zu sein ;-)

Falls dennoch einer reinguckt - ich habe noch ein anderes Phänomen, dass 
ich viel wichtiger finde.

Ich habe jetzt alle Tastverhältnisse zwischen 0 und 100% in 1ms 
Schritten durchgemacht und mir den Ausgangsstrom angeguckt.

Von 0 - 50% (0ms - 8ms) ist im Ausgangsstrom stets eine Schrittweite von 
1,512x mA zu sehen.

Dann von 8ms auf 9ms ist die Schrittweite plötzlich nurnoch 1,237x mA 
und das zieht sich auch konstant bis zum Ende durch.

Da ist also in der Mitte des Tastverhältnisses plötzlich ein Knick drin 
- ist der simulationsbedingt, oder hat das physikalische Gründe? Wenn 
mir einer das jetzt beantworten könnte, wäre ich wirklich sehr sehr 
dankbar!

von Ferdinand (Gast)


Lesenswert?

Ich hole das nochmal hoch - ich hoffe immernoch, irgendwer kann mir da 
eineen Raut zu geben.

Kann ich mit einer PWM einen linearen DAC aufbauen, oder macht mir die 
Ladekurve des Kondensators da einen Strich durch die Rechnung?

von Edi R. (edi_r)


Lesenswert?

Ferdinand schrieb:
> Von 0 - 50% (0ms - 8ms) ist im Ausgangsstrom stets eine Schrittweite von
> 1,512x mA zu sehen.
>
> Dann von 8ms auf 9ms ist die Schrittweite plötzlich nurnoch 1,237x mA
> und das zieht sich auch konstant bis zum Ende durch.

Sieht so aus, als wenn etwas in die Begrenzung geht. Schau Dir doch an, 
ob die Spannungen vor bzw. nach den einzelnen Stufen noch linear sind. 
Zumindest nach R14/C7 sollte noch alles recht proportional zum 
Tastverhältnis sein.

von Rigi Taler (Gast)


Lesenswert?

Hast du Angst die Schaltung kurz aufzubauen ?
Sieht doch recht gut aus fuer die simple Wandlung.
Ich hasse Simulatoren ... sind genau so gut wie wenn man Mist misst.
Hoch leben die Empiriker ;-) Vor Weihnachten schaffst du das.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Oder fang es etwas einfacher an - simulier erstmal nur den Tiefpass und 
wähle die Werte so, das du ein möglichst 'ripple' freies 0V bis 3,3 Volt 
Signal am Ausgang bekommst, denn du möchtest ja vermutlich die 60 Hz am 
Ausgang nicht sehen. Ausgangsimpedanz der treibenden PWM spielt hier 
auch eine Rolle.
 Die Anpassung an die Stromschleife kommt dann später.

von Ferdinand (Gast)


Angehängte Dateien:

Lesenswert?

Edi R. schrieb:
> Sieht so aus, als wenn etwas in die Begrenzung geht.

Also das denke ich nicht, ich habe die Potentiale an allen Punkten 
kontrolliert - das passt. Auf den vorherigen Bildern sieht man 
lediglich, dass der vorletzte und der letzte Plot in die Begrenzung 
gehen, weil der letzte OP da nicht mehr genug Aussteuerpsannung für den 
Transistor haben. Aber das habe ich behoben.

Edi R. schrieb:
> Zumindest nach R14/C7 sollte noch alles recht proportional zum
> Tastverhältnis sein.

Hier ist mal ein Plot vom RC-Tiefpass - grün ist nach der ersten Stufe, 
blau nach der zweiten. Einmal vom kompletten Verlauf und einmal als 
Ausschnitt, wo sich die Spannungen quasi gesetzt haben. Das sieht 
eigentlich ganz gut aus.

Periodendauer sind 16ms, jeweils in Schrittweite von 1ms von 1ms bis 
16ms.

Rigi Taler schrieb:
> Hast du Angst die Schaltung kurz aufzubauen ?

Natürlich nicht, nur wenn ich vorher schon sehen kann, dass ich komplett 
auf dem Holzweg bin, dann probier ich lieber noch ein wenig herum - 
aufbauen werde ich das ganze gleich noch.

Rigi Taler schrieb:
> Ich hasse Simulatoren

Ich würde nicht sagen, dass ich sie hasse, aber manchmal denke ich, dass 
man sich damit auch gut selbst verarschen kann (wenn man es nicht 
richtig macht).

Matthias Sch. schrieb:
> wähle die Werte so, das du ein möglichst 'ripple' freies 0V bis 3,3 Volt
> Signal am Ausgang bekommst

Das habe ich hier nach dem zweiten TP eigentlich schon. Am Ausgang 
schwankt der Strom nur um paar 100nA.

Matthias Sch. schrieb:
> Ausgangsimpedanz der treibenden PWM spielt hier
> auch eine Rolle.

Ja klar, aber die Simulation hat ja erstmal keine.

Noch eine andere Frage: Ich benutze den internen DCO vom Controller - 
der schwankt ja je nach Temperatur und Exemplar schon ein wenig. Das 
müsste aber doch theoretisch egal sein, da auch das Tastverhätnis 
gleichermaßen variiert, oder sehe ich das falsch?

Danke auf jeden Fall schonmal für die Rückmeldungen!

von Ferdinand (Gast)


Lesenswert?

Mit den 3mA Offset bekomme ich jedenfalls eine höhere Auflösung für die 
restliche Spanne. Wegen den Bauteiltoleranzen gehe ich nicht auf 4mA, 
sonst liege ich evtl. schon drüber und nach unten geht ja nicht.

Jetzt kann ich zwischen 3mA und 22mA per PWM regeln.

Vom 16Bit Timer bei 1MHz Taktfrequenz nutze ich effektiv 14Bit, der 
Timer-Wert geht also bis 16384. Daruas resultieren die 60Hz.

Meine Spanne von 19mA kann ich THEORETISCH also mit 1,15uA auflösen.

von Ferdinand (Gast)


Lesenswert?

So, ich habe mir den Plot jetzt mal auf A3 ausgedruckt und mit 'nem 
Lineal nachgemessen - auch hier sehe ich von 1-8ms jeweils einen Abstand 
zwischen den Spannungskurven (nach dem 2. TP) von 2,3cm und von 8-16ms 
einen Abstand von 1,9cm.

Also der Ausgangsstrom liegt definitiv am Wechsel 
Duty-Cycle<8<Duty-Cycle. Nur weiß ich jetzt halt nicht, ob das an der 
Simulation liegt - ich glaube es langsam...weil ich es mir nicht 
erklären kann, wieso das so sein sollte.

von Ferdinand (Gast)


Lesenswert?

So Mädels - ich hab's jetzt. Das ist ein Simulationsproblem. Ich habe 
die Anstiegs-/Abstiegszeit der Quelle etwas variiert, sthet jetzt 
jeweils auf 100ps. Jetzt sind alle Abstände gleich.

Trotzdem interessantes Problem, aber keine Idee, wieso!

von Rigi Taler (Gast)


Lesenswert?

...ist ein Simulationsproblem ?

Bei einer derartigen Schaltung kann man doch nichts falsch machen.
Verstehst du 'was von Elektronik...oder nur 'was von Simulation ?

Zeit verplempern und Geistern nacheilen...ist auch Arbeit ;-)

von Anja (Gast)


Lesenswert?

Ferdinand schrieb:
> So Mädels - ich hab's jetzt. Das ist ein Simulationsproblem.

Nee leider nicht: rechne die e-Funktion doch mal nach:
Vereinfacht als Tiefpaß 1. Ordnung mit 100ms Zeitkonstante bei 16 ms 
Periode ergibt sich bei 80.00% PWM und 5.000V Versorgung eine mittlere 
Ausgangsspannung von ca 4001 mV.

Wie kannst Du bei einer so nichtlinearen Funktion wie es die e-Funktion 
ist erwarten daß etwas lineares herauskommt? Das geht nur dann wenn die 
Periodendauer genügend kurz gegenüber der Zeitkonstanten ist.
Dein Tiefpaß ist hierfür völlig unterdimensioniert.

Gruß Anja

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ferdinand schrieb:
> Das
> müsste aber doch theoretisch egal sein, da auch das Tastverhätnis
> gleichermaßen variiert, oder sehe ich das falsch?

Nee, das ist völlig richtig. Frequenzänderungen haben keinen Einfluss 
auf das Tastverhältnis, wenn der Oszillator nicht gerade 'springt' - und 
das tut er mit Sicherheit nicht.

Ferdinand schrieb:
> Matthias Sch. schrieb:
>> Ausgangsimpedanz der treibenden PWM spielt hier
>> auch eine Rolle.
>
> Ja klar, aber die Simulation hat ja erstmal keine.

Ferdinand schrieb:
> Ich habe
> die Anstiegs-/Abstiegszeit der Quelle etwas variiert, sthet jetzt
> jeweils auf 100ps. Jetzt sind alle Abstände gleich.

Lol, und ich sach noch ... Natürlich hängt die Anstiegszeit von der 
Ausgangsimpedanz der PWM ab. Je power, desto steil.

von Michael W. (miwitt001)


Lesenswert?

Ferdinand schrieb:
> So Mädels - ich hab's jetzt. Das ist ein Simulationsproblem. Ich habe
> die Anstiegs-/Abstiegszeit der Quelle etwas variiert, sthet jetzt
> jeweils auf 100ps. Jetzt sind alle Abstände gleich.
>
> Trotzdem interessantes Problem, aber keine Idee, wieso!

Du hast in deiner ursprünglichen Schaltung für die Anstiegs und 
Abfallszeiten jeweils 0 eingetragen. LTSpice rechnet aber in diesem Fall 
nicht mit 0, sondern setzt einen Standardwert ein.

Dieser ist in der Regel "1m".
Ist z.B. bei einer Spule ebenso: Wenn du beim Innenwiderstand 0 
eingibst, rechnet LTSpice automatisch mit 1m. Ebenso mit dem ESR eines 
Kondensators.

Michael

von Ferdinand (Gast)


Lesenswert?

Anja schrieb:
> Wie kannst Du bei einer so nichtlinearen Funktion wie es die e-Funktion
> ist erwarten daß etwas lineares herauskommt?

Hallo Anja!

Ich freue mich ja generell über jeden Beitrag, aber wenn er nur aus 
Kritik besteht, dann hilft mir das natürlich auch nicht weiter.

Anja schrieb:
> Das geht nur dann wenn die
> Periodendauer genügend kurz gegenüber der Zeitkonstanten ist.
> Dein Tiefpaß ist hierfür völlig unterdimensioniert.

Dann sei doch mal so gut und hilf mir ein wenig auf die Sprünge - wie 
meinst du das oder wie sollte ich es verändern?

Ich habe die Schaltung jetzt mal aufgebaut - folgendes Ergebnis:

Mittels try & error habe ich erstmal die PWM-Werte für 4 und 20mA 
ermittelt und im Controller gespeichert. Diese Werte bringen mir jetzt 
exakt 4,000 und 20,000mA.

Um die Linearität des ganzen zu testen, habe ich jetzt also im 
Controller Zwischenwerte errechnet und mir ausgeben lassen - Resultat: 
Jeder Wert stimmt...und jetzt ohne Scheiß...auf ca. 1uA genau! Da bin 
ich selber verblüfft. Die ganze Geschichte ist also erstmal höchst 
linear, wenn man bedenkt, wie einfach die ganze Geschichte gehalten ist.

Wie sich das alles unter Temperatur verschiebt ist noch eine andere 
Geschichte. Auf jeden Fall bringt mir eine Duty-Cycle-Erhöhung um 1 ca. 
1,1 uA Ausgangsstromerhöhung.

Problem der ganzen Geschichte ist noch das sehr sehr langsame 
Ansprechverhalten - der Endwert benötigt teilweise zwischen 2 und 10s, 
bis er wirklich seinen Sollwert erreicht hat.

Wackeln tun die Werte auch nur um ca. 1uA.

Jetzt muss ich mal gucken, wo ich noch Cs verkleinere, um die Regelung 
etwas zu beschleunigen und dabei den Ausgang kontrollieren auf 
Restwelligkeit.

Aktuell messe ich am Ausgang über dem Transistor ca. 50kHz mit einer 
Amplitude von 20mV - das ist natürlich nicht so schön...aber die messe 
ich auch, wenn ich das Oszi nur ans Netzteil anschließe - die kommen 
also daher :-\

So, ersmtal soviel zum aktuellen Stand. Über Anmerkungen bin ich 
weiterhin dankbar!


Ferdinand

von Anja (Gast)


Lesenswert?

Ferdinand schrieb:
> Ich freue mich ja generell über jeden Beitrag, aber wenn er nur aus
> Kritik besteht, dann hilft mir das natürlich auch nicht weiter.
>
> Anja schrieb:
>> Das geht nur dann wenn die
>> Periodendauer genügend kurz gegenüber der Zeitkonstanten ist.
>> Dein Tiefpaß ist hierfür völlig unterdimensioniert.

Wenn das kein Wink mit dem Zaunpfahl ist wie es richtiger wäre dann 
versteh ich die Welt net mehr.

Ferdinand schrieb:
> Jetzt muss ich mal gucken, wo ich noch Cs verkleinere, um die Regelung
> etwas zu beschleunigen und dabei den Ausgang kontrollieren auf
> Restwelligkeit.

Das ist genau die Falsche Richtung damit wird das ganze wieder stärker 
nichtlinear. Du brauchst für hohe Linearität entweder eine höhere 
PWM-Frequenz oder eine höhere Zeitkonstante.

Ferdinand schrieb:
> Jeder Wert stimmt...und jetzt ohne Scheiß...auf ca. 1uA genau!

Du hast aber hoffentlich kein Meßgerät mit Sigma-Delta-Wandler das jetzt 
genau den nichtlinearitäts-Fehler Deines Aufbaus bei der Messung 
nachempfindet ?????

Nach meiner Überschlagsrechnung müßtest du bis zu 5uA 
Linearitätsabweichung haben.

Gruß Anja

von Ferdinand (Gast)


Lesenswert?

Hi Anja!

Anja schrieb:
> Das ist genau die Falsche Richtung damit wird das ganze wieder stärker
> nichtlinear. Du brauchst für hohe Linearität entweder eine höhere
> PWM-Frequenz oder eine höhere Zeitkonstante.

OK, macht bei näherer Überlegung Sinn, danke! Kannst du mir denn einen 
Anhaltspunkt geben, wie die Zeitkonstante sein sollte, bzw. hast du eine 
Grundlage, nach der ich das berechnen kann?

Anja schrieb:
> Du hast aber hoffentlich kein Meßgerät mit Sigma-Delta-Wandler das jetzt
> genau den nichtlinearitäts-Fehler Deines Aufbaus bei der Messung
> nachempfindet ?????

Sorry, das kann ich grad nicht nachvollziehen. Kannst du mir das genauer 
erläutern? Ich messe hier mit meinem Tischmultimeter, nach welchem 
Prinzip der arbeitet, kann ich nicht sagen. Inwiefern empfindet der 
Sigma-Delta-Wandler denn die nicht-Linearität nach? Der zeigt mir doch 
den gerade fließenden Strom an, Ende aus. Dachte ich zumindest - wie ist 
es wirklich?

Anja schrieb:
> Nach meiner Überschlagsrechnung müßtest du bis zu 5uA
> Linearitätsabweichung haben.

Wie funktioniert deine Überschlagsrechnung? 5uA wären ja auch noch voll 
in Ordnung - trotzdem wäre ich an der Berechnung interessiert.

Gruß und danke!


Ferdinand

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.