Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.sci.electronics > #231170 > unrolled thread

D/A Wandler Auflösung

Started byOle Jansen <remove.this.kaspernasebaer@gmx.de>
First post2017-08-16 09:20 +0200
Last post2017-08-16 22:35 +0200
Articles 6 on this page of 26 — 14 participants

Back to article view | Back to de.sci.electronics


Contents

  D/A Wandler Auflösung Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2017-08-16 09:20 +0200
    Re: D/A Wandler Auflösung Reinhardt Behm <rbehm@hushmail.com> - 2017-08-16 15:29 +0800
      Re: D/A Wandler Auflösung Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2017-08-16 12:03 +0200
        Re: D/A Wandler Auflösung Reinhardt Behm <rbehm@hushmail.com> - 2017-08-16 18:41 +0800
        Re: D/A Wandler Auflösung Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-08-16 12:49 +0200
          Re: D/A Wandler Auflösung Axel Berger <Spam@Berger-Odenthal.De> - 2017-08-16 20:08 +0200
            Re: D/A Wandler Auflösung Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2017-08-17 09:57 +0200
              Re: D/A Wandler Auflösung Marte Schwarz <marte.schwarz@gmx.de> - 2017-08-17 14:32 +0200
              Re: D/A Wandler Auflösung Rolf Bombach <rolfnospambombach@invalid.invalid> - 2017-08-31 12:15 +0200
            Re: D/A Wandler Auflösung Volker Staben <volker.staben@hs-flensburg.de> - 2017-08-17 13:05 +0200
              Re: D/A Wandler Auflösung Joerg Niggemeyer <joerg.niggemeyer@nucon.de> - 2017-08-17 13:43 +0100
                Re: D/A Wandler Auflösung Volker Staben <volker.staben@hs-flensburg.de> - 2017-08-17 15:01 +0200
                  Re: D/A Wandler Auflösung Reinhardt Behm <rbehm@hushmail.com> - 2017-08-17 21:20 +0800
                    Re: D/A Wandler Auflösung Volker Staben <volker.staben@hs-flensburg.de> - 2017-08-18 16:32 +0200
                      Re: D/A Wandler Auflösung Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2017-08-25 14:34 +0200
        Re: D/A Wandler Auflösung Rafael Deliano <rafael_deliano@arcor.de> - 2017-08-16 19:13 +0200
    Re: D/A Wandler Auflösung Frank Buss <fb@frank-buss.de> - 2017-08-16 09:53 +0200
    Re: D/A Wandler Auflösung Gernot Fink <g.fink@gmx.net> - 2017-08-16 10:05 +0200
    Re: D/A Wandler Auflösung Marte Schwarz <marte.schwarz@gmx.de> - 2017-08-16 10:40 +0200
      Re: D/A Wandler Auflösung Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2017-08-16 12:54 +0200
        Re: D/A Wandler Auflösung Marte Schwarz <marte.schwarz@gmx.de> - 2017-08-17 14:23 +0200
    Re: D/A Wandler Auflösung Edzard Egberts <news@edzeg.net> - 2017-08-16 13:29 +0200
      Re: D/A Wandler Auflösung Ole Jansen <remove.this.kaspernasebaer@gmx.de> - 2017-08-16 15:23 +0200
        Re: D/A Wandler Auflösung Edzard Egberts <news@edzeg.net> - 2017-08-16 15:43 +0200
    Re: D/A Wandler Auflösung Thomas Prufer <prufer.public@mnet-online.de.invalid> - 2017-08-16 16:43 +0200
    Re: D/A Wandler Auflösung Sieghard Schicktanz <Sieghard.Schicktanz@SchS.de> - 2017-08-16 22:35 +0200

Page 2 of 2 — ← Prev page 1 [2]


#231203

FromMarte Schwarz <marte.schwarz@gmx.de>
Date2017-08-17 14:23 +0200
Message-ID<on41ro$go4$1@news2.open-news-network.org>
In reply to#231183
Hallo Hans-Peter,

> Nach meiner Erfahrung geht das nicht so einfach. Vermutlich werden die > SMD Widerstände vor dem Verpacken so stark gemischt, daß die 
Toleranzen > bestenfalls für 6 Bit ausreichen. PTH Widerstände werden 
möglicherweise > weniger durchmischt gegurtet, damit hatte ich bessere 
Ergebnisse.
Ich weiß nicht auf welche Erfahrungen Du zurückgreifst. Meine Studis 
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

[toc] | [prev] | [next] | [standalone]


#231185

FromEdzard Egberts <news@edzeg.net>
Date2017-08-16 13:29 +0200
Message-ID<on1aeo$2vv$1@news4.open-news-network.org>
In reply to#231170
Ole Jansen wrote:
> Moin,
> 
> für folgendes Problem fallen mir einfach nicht die
> richtigen (Such)Begriffe ein:
> 
> - Zur Verfügung stünde ein 10bit D/A Wandler welchen
>   ein µC mit ca. 10kHz mit Daten versorgen kann.
> 
> - Gewünscht wird ein langsames aber möglichst lineares
>   Ausgangssignal mit sagen wir mal 16 bit Auflösung.
>   Tiefpass am Ausgang ist vorhanden.
> 
> Erreicht werden soll dies durch passendes "Modulieren" HI/LO
> Schalten des letzten bits von dem D/A Wandler.
> Der µC ist ein kleiner ATMega und nicht unendlich mächtig.
> Mir ist insbes. unklar mit welchem Algoritmus ich diese
> D/A Umrechnung möglicht schlank implementieren kann.
> 
> Hat jemand Tips wonach ich da suchen muss? Codeschnipsel?

Du musst Dir eben für das letzte Bit eine PWM programmieren:

Mit 10 kHz hast Du eine Abtastrate von 100µs und brauchst einen Zähler
für das gesamte Intervall und einen Zähler für das Timing. Wenn Du den
Zähler z.B. mit den drei LSB eines Datums laden willst, ist das gesamte
Intervall 2^3 = 8 Takte lang. Wenn ein neues Datum kommt, wird der
Intervallzähler also mit 8 geladen und der "Breitenzähler" mit dem Wert
der drei LSB, dann bei jedem Takt beide Zähler herunterzählen und wenn
die "Breite" auf Null ist, den Ausgangswert um Eins vermindern. Wenn der
Intervallzähler auf Null ist, wieder das (ggf. neue) Datum laden,
Ausgangswert ändern und wieder loszählen.

[toc] | [prev] | [next] | [standalone]


#231186

FromOle Jansen <remove.this.kaspernasebaer@gmx.de>
Date2017-08-16 15:23 +0200
Message-ID<evivb0FkgddU1@mid.individual.net>
In reply to#231185
Am 16.08.2017 um 13:29 schrieb Edzard Egberts:
> Ole Jansen wrote:
>> Moin,
>>
>> für folgendes Problem fallen mir einfach nicht die
>> richtigen (Such)Begriffe ein:
>>
>> - Zur Verfügung stünde ein 10bit D/A Wandler welchen
>>    ein µC mit ca. 10kHz mit Daten versorgen kann.
>>
>> - Gewünscht wird ein langsames aber möglichst lineares
>>    Ausgangssignal mit sagen wir mal 16 bit Auflösung.
>>    Tiefpass am Ausgang ist vorhanden.
>>
>> Erreicht werden soll dies durch passendes "Modulieren" HI/LO
>> Schalten des letzten bits von dem D/A Wandler.
>> Der µC ist ein kleiner ATMega und nicht unendlich mächtig.
>> Mir ist insbes. unklar mit welchem Algoritmus ich diese
>> D/A Umrechnung möglicht schlank implementieren kann.
>>
>> Hat jemand Tips wonach ich da suchen muss? Codeschnipsel?
> 
> Du musst Dir eben für das letzte Bit eine PWM programmieren:

Ich habe mal versucht zu "dithern".
Die Funktion rnd64 liefert in zufälliger Reihenfolge
die Zahlen 0..63 bei möglichst gleicher Häufigkeit.


//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

> Mit 10 kHz hast Du eine Abtastrate von 100µs und brauchst einen Zähler
> für das gesamte Intervall und einen Zähler für das Timing. Wenn Du den
> Zähler z.B. mit den drei LSB eines Datums laden willst, ist das gesamte
> Intervall 2^3 = 8 Takte lang. Wenn ein neues Datum kommt, wird der
> Intervallzähler also mit 8 geladen und der "Breitenzähler" mit dem Wert
> der drei LSB, dann bei jedem Takt beide Zähler herunterzählen und wenn
> die "Breite" auf Null ist, den Ausgangswert um Eins vermindern. Wenn der
> Intervallzähler auf Null ist, wieder das (ggf. neue) Datum laden,
> Ausgangswert ändern und wieder loszählen.
> 

Das vestehe ich noch nicht ganz. Ist das Prinzip so ähnlich
wie bei einer PLL?

O.J.

[toc] | [prev] | [next] | [standalone]


#231187

FromEdzard Egberts <news@edzeg.net>
Date2017-08-16 15:43 +0200
Message-ID<on1i9r$8dt$1@news4.open-news-network.org>
In reply to#231186
Ole Jansen wrote:
> Am 16.08.2017 um 13:29 schrieb Edzard Egberts:
>> Ole Jansen wrote:
>>> Moin,
>>> 
>>> für folgendes Problem fallen mir einfach nicht die richtigen
>>> (Such)Begriffe ein:
>>> 
>>> - Zur Verfügung stünde ein 10bit D/A Wandler welchen ein µC mit
>>> ca. 10kHz mit Daten versorgen kann.
>>> 
>>> - Gewünscht wird ein langsames aber möglichst lineares 
>>> Ausgangssignal mit sagen wir mal 16 bit Auflösung. Tiefpass am
>>> Ausgang ist vorhanden.
>>> 
>>> Erreicht werden soll dies durch passendes "Modulieren" HI/LO 
>>> Schalten des letzten bits von dem D/A Wandler. Der µC ist ein
>>> kleiner ATMega und nicht unendlich mächtig. Mir ist insbes.
>>> unklar mit welchem Algoritmus ich diese D/A Umrechnung möglicht
>>> schlank implementieren kann.
>>> 
>>> Hat jemand Tips wonach ich da suchen muss? Codeschnipsel?
>> 
>> Du musst Dir eben für das letzte Bit eine PWM programmieren:
> 
> Ich habe mal versucht zu "dithern".

Ja und, was habe ich damit zu tun?

>> Mit 10 kHz hast Du eine Abtastrate von 100µs und brauchst einen
>> Zähler für das gesamte Intervall und einen Zähler für das Timing.
>> Wenn Du den Zähler z.B. mit den drei LSB eines Datums laden willst,
>> ist das gesamte Intervall 2^3 = 8 Takte lang. Wenn ein neues Datum
>> kommt, wird der Intervallzähler also mit 8 geladen und der
>> "Breitenzähler" mit dem Wert der drei LSB, dann bei jedem Takt
>> beide Zähler herunterzählen und wenn die "Breite" auf Null ist, den
>> Ausgangswert um Eins vermindern. Wenn der Intervallzähler auf Null
>> ist, wieder das (ggf. neue) Datum laden, Ausgangswert ändern und
>> wieder loszählen.
>> 
> 
> Das vestehe ich noch nicht ganz. Ist das Prinzip so ähnlich wie bei
> einer PLL?

Nö, steht doch da "PWM", wie "PulsWeitenModulation": Mit Deinen 10bit
stellst Du bei unveränderter Hardware die groben Stufen ein und dann
wird mit dem zeitabhängigen PWM-Teil in der letzten Stufe die
Feineinstellung draufgesetzt. Du musst Deine Daten also so aufteilen,
dass die LSB die zeitabhängige PWM steuern und die MSB den "stufigen"
DAC. Wie viele LSB Du da verwenden kannst, hängt von Timing und dem
Tiefpaß ab.

Ganz einfaches Beispiel: Du kannst 1,2,3,4,... einstellen (DAC), für 3.5
stellst Du erst 3 ein und nach dem halben Intervall dann 4, nächstes
Intervall wieder 3, nach dem halben nächsten Intervall wieder 4 (PWM)
und letztendlich kommt hinter dem Tiefpaß dann 3.5 an. Neue Werte werden
nur an den Intervallgrenzen übernommen und stellen dann ggf. das Timing
anders ein, für 3.25 dann nach 3/4 Intervall auf 4 schalten. Umgekehrt
ginge auch, erst auf 4 und nach 1/4 Intervall zurück auf 3 ist
vielleicht intuitiver.

Das ist auch keine Theorie, sondern habe ich schon realisiert, wobei der
Tiefpaß eine Heizung war und der Einstellbereich von 0..3 auf 0..63
erweitert wurde.

[toc] | [prev] | [next] | [standalone]


#231190

FromThomas Prufer <prufer.public@mnet-online.de.invalid>
Date2017-08-16 16:43 +0200
Message-ID<bfm8pclfcns8vipvahgt5djl2kih5fg35j@4ax.com>
In reply to#231170
On Wed, 16 Aug 2017 09:20:35 +0200, Ole Jansen
<remove.this.kaspernasebaer@gmx.de> wrote:

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

"1-Bit DAC"?


Thomas Prufer

[toc] | [prev] | [next] | [standalone]


#231196

FromSieghard Schicktanz <Sieghard.Schicktanz@SchS.de>
Date2017-08-16 22:35 +0200
Message-ID<20170816223527.7c6eebc9@Achmuehle.WOR>
In reply to#231170
Hallo Ole,

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

> für folgendes Problem fallen mir einfach nicht die
> richtigen (Such)Begriffe ein:

Die hast Du jetzt ja schon genannt bekommen.

> - Gewünscht wird ein langsames aber möglichst lineares
>    Ausgangssignal mit sagen wir mal 16 bit Auflösung.
>    Tiefpass am Ausgang ist vorhanden.

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

> Zur Zeit pendelt die Regelung immer zwischen zwei Werten hin und
> her dass ichs mit dem bloßen Auge sehen kann.

Aaber... - bist Du Dir sicher, daß das wirklich die zu geringe Auflö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
ändern, und die Schwankungsperiode wird auch erheblich länger sein als die
Regler-Abtastperiode. Das läßt sich dann nur mit einem besseren Abgleich
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
öfter, was mittels Tiefpaß und thermischer Trägheit einen stabileren
Mittelwert ergibt. Natürlich darf dadurch der Regler dann auch nicht zum
Schwingen kommen, was wohl (auch) einen neuen Abgleich zur Folge hat.

-- 
-- 
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | de.sci.electronics


csiph-web