D/A Wandler Auflösung

Aug 16, 2017 25 Replies

Moin,


richtigen (Such)Begriffe ein:


Tiefpass am Ausgang ist vorhanden.



Erreicht werden soll dies durch passendes "Modulieren" HI/LO Schalten des letzten bits von dem D/A Wandler.



Mir ist insbes. unklar mit welchem Algoritmus ich diese


Hat jemand Tips wonach ich da suchen muss? Codeschnipsel? Was mit "Oversampling"?


O.J.


Dithering?

Schaltflanken das DAC ins Signal.

Reinhardt

Bei 10 kHz kann der ATMega aber nicht mehr viel nebenbei machen.

Frank Buss, http://www.frank-buss.de electronics and more: http://www.youtube.com/user/frankbuss

PWM-Ausgang des ATMega verbinden.

Gernot

Hi Ol

was verstehst Du unter langsam?

meist noch etwas mehr herauskitzeln.

hinterlegen, die genau das ausgleicht...

Na denn...

ein 16 -Bit DA verwenden.

Marte

Gut, dann ein paar mehr Infos:

etwa 300 Incremente.

(Wovon die letzten 4 bit wohl Hokuspokus sind). Zur Zeit pendelt die Regelung immer zwischen zwei Werten hin und

auf die 10 bit vom D/A Konverter und z.B. Zeitslots oder Rauschen sinnvoll aufgeteilt werden.

2^6 Zeitslots aufteilen und im letzten dieser Slots das letze bit entweder HI oder LO setzen. Wenn es schlecht klingt wacht das

Die Idee hatte doch schon bestimmt jemand anderes. Nur wie nennt man das? Dithering passt ja schon irgendwie.

O.J.

PWM nehmen, sondern etwas Zufall mit reinstecken. Das verhindert, dass die PWM-Frequenz durchspuckt. Aber evtl ist das bei dir auch gar kein Problem.

liefert schon einige Treffer:

Reinhardt

Am 16.08.2017 um 12:03 schrieb Ole Jansen:

Das klingt aber nach einem digital anzusteuernden Heizelement, wozu dann

passende Ansteuerung suchst?

statt PID nehmen.

DoDi

Am 16.08.2017 um 10:40 schrieb Marte Schwarz:

Nach meiner Erfahrung geht das nicht so einfach. Vermutlich werden die

weniger durchmischt gegurtet, damit hatte ich bessere Ergebnisse.

DoDi

Intervall 2^3 = 8 Takte lang. Wenn ein neues Datum kommt, wird der

die "Breite" auf Null ist, den Ausgangswert um Eins vermindern. Wenn der

Ich habe mal versucht zu "dithern".

//input: 16bit word //returns: dithered value // either result = (input div 64) or result = (input div 64) +1 // pseudo random order

function dither64(a:word):word;

var i,j:integer;

begin i:=(a and $FFE0) SHR 6; j:=a and $003F; if (j>rnd64) then i:=i + 1; result:=i; end;

Ergibt beispielsweise:

Zahl: 58419 /64=912,796875 approx=912,8006 Abweichung=0,2384 Zahl: 39693 /64=620,203125 approx=620,2056 Abweichung=0,1584 Zahl: 1 /64=0,015625 approx=0,017 Abweichung=0,08800 Zahl: 65535 /64=1023,984375 approx=1023,9829 Abweichung=-0,09440

approx: Arithmetischer Mittelwert nach 10000 Zyklen Abweichung: Abweichung in 1/64

wie bei einer PLL?

O.J.

Ja und, was habe ich damit zu tun?

Feineinstellung draufgesetzt. Du musst Deine Daten also so aufteilen,

vielleicht intuitiver.

Das ist auch keine Theorie, sondern habe ich schon realisiert, wobei der

erweitert wurde.

"1-Bit DAC"?

Thomas Prufer

Simulation eines binary rate Multipliers der die Pulse

Dither noch etwas verrauschen. Oder 10 Bit D/A und diese PWM-Variante kombinieren.

Ich vermute mal die Endstufe ist linear. Dann sollte man

in den 8 Bit Bereich schieben kann. Da sich alles in einer Regelschleife befindet ist die Genauigkeit ja nicht so kritisch.

MfG JRD

Das eigentliche Problem stand doch explizit dabei:

Ole Jansen wrote:

/ \ Mail | -- No unannounced, large, binary attachments, please! --

Hallo Ole,

Du schriebst am Wed, 16 Aug 2017 09:20:35 +0200:

Die hast Du jetzt ja schon genannt bekommen.

Du schriebst am Wed, 16 Aug 2017 12:03:46 +0200:

?sung ausmacht und Du nicht etwa eine Regelschwingung siehst?

Bei einer Regelschwingung wird sich der Wert zur Ansteuerung des D/A- Wandlers innerhalb der Schwankungsperiode um deutlich mehr als ein LSBit

n als die

bgleich des Reglers beheben.

Wenn der D/A-Wert wirklich nur um ein Bit schwankt, dann kannst Du ein "Dithering" vielleicht schon erreichen, wenn Du nur den Regler deutlich schneller machst - dann schaltet er halt das LSBit in der gleichen Zeit

abileren

um Schwingen kommen, was wohl (auch) einen neuen Abgleich zur Folge hat.

-- ----------------------------------------------------------- -----------------------------------------------------------

Der Treiber liefert ein Signal welches sich linear zu 0..1023

Der sinnvoll nutzbare Temperaturbereich der Heizung umfasst davon

sich exponenziell zu den 1023DE. Beides ist beim Design

Das Problem ist zweigeteilt und besteht aus einem nicht ganz gelungenen Design und der Frage, wie eine PWM Modulation des LSB oder

per Firmwareupdate zu "retten".

Regelung wir der Regelkreis instabil.

Die Idee das LSB des D/A Wandlers irgendwie zu modulieren ist

Auch hier geht es um sichtbare Helligkeiten.

eine Frequenz von ~150Hz. Vermutlich ist das schon eine hinreichende

Die AppNote von Maxim zeigt in Fig. 2 und Fig.3 auch Beispiele wie durch Splitten in Gruppen die Frequenz der Restwelligkeit

eine periodische Restwelligkeit des D/A Ausgangssignals durch

O.J.

Warum nicht? Was hat der Zahlenwert von Zeitkonstanten mit dem Thema

und dann einen ordentlichen Reglerentwurf machen.

wird es mit einer einzigen Reglerdimensionierung ohnehin schwierig, der

mode-Regler sind i.d.R. ausgesprochen robust. Und man braucht bei

V.

Hallo Hans-Peter,

Ergebnisse.

bauen jedes Jahr ca 30 8 Bit DA auf dem Steckbrettchen auf. 20 k und 10 aus unterschiedlichen Gurten, aber 1%er. Gemessen werden die Teile dann mit den 10 Bit vom Arduino. Das Ergebnis kann sich durchaus sehen lassen. Die 8 Bit sind ziemlich gut linear.

Marte

Hi Ole,

Ja, dass dem Messtechniker systematische Fehler deutlich lieber sind, als stochastische. Wenn Deine Restwelligkeit periodisch ist, kannst Du z.B. durch geeignete Abtastraten (meinetwegen auch Korrelationen - denk an Lock-In) das Problem eliminieren, nicht hingegen, wenn Du den Fehler ins Rauschen legst.

Marte

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required