Wieviele Bits netto aus ATMega PWM DAC?

Hallo Leute,

Im derzeitigen Projekt wird ein ATMega sitzen. War nicht meine Wahl, moechte der Kunde so. Leider hat der keine Mehrfach-DACs, brauche zwei, der nun vorgesehene externe DAC7612 kann SPI und ist auch ok. Aber natuerlich wurmen mich die gut $3 die der kostet. Selbst wenn's bei diesem Design so bleibt, nur mal so aus Interesse und falls mal wieder ein ATMega rein muss:

Wieviel Bits bekommt Ihr netto so raus wenn der 16-Bit Timer in etwas gestutzter Form als PWM-DAC benutzt wird? Sagen wir mal 12-Bit Kappung und Timer-Takt auf voller Kamelle. Vorausgesetzt eine Meister Proper blitzsaubere Versorgung an den Pins, nur innen roedelt's da drin weiter. Quiet Mode wie beim ADC geht meist nicht.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg
Loading thread data ...

"Joerg" schrieb im Newsbeitrag news:JIaYl.5876$ snipped-for-privacy@flpi145.ffdc.sbc.com...

Nun, wie du weisst, ist das PWM DAC Prinzip durchaus fuer viele Bits gut, praktisch alle Audio-DACs sind 1 bit Wandler und erreichen locker ueber

96dB, also 16 bit. Die quarzstabile Aufloesung im Zeitbereich ist prinzipbedingt monoton und aequidistant.

ABER: Die PWM Stufe im AVR betreibt kein noise shaping, um den Ripple in Analogsignal zu begrenzen mus der nachfolgende Filter also eine Daempfung von (gewuenschter Bitzahl, sagen wir 16 also 96dB) der PWM-Zyklus-Freqeunz haben.

Und die absolute Genauigkeit haengt von der Ausgangsstufe ab, und der Ausgang des AVR ist nicht exakt, nicht referenzspannungsbezogen, zu langsam im Umschalten. Niemand hindert einen aber, hinter den Ausgang eine Treiberstufe zu haengen, die referenzspannungsgenau und picosekundenexakt umschaltet.

Aber all das ist Aufwand, den man lieber laesst, wenn eine geringere Bitaufloesung ausreicht.

Ich habe ein mal im Leben eine besser-als-RC-Glied Filterstufe verwendet, um schnellere Reaktionszeit bei trotzdem guter Filterwirkung bezueglich der PWM-Zyklusfrequenz zu erreichen, und war immer zufrieden mit VCC- bezogener Ausgangsspannung, aber im Prinzip (siehe oben) spricht nichts gegen 16 bit Genaigkeit bei einem 16 bit Timer.

So lange der Pegelwandler/die Treiberstufe an einer sauberen Versorgung haengt, ist das egal, es geht nur um den Jitter bei der Erkennung des Flankenwechsels des PWM Signals (den man leider nicht sinusmaessig filtern kann, trotzdem liegt der im sub-bit-Bereich.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

nur

Audio-DACs sind allerdings auch nicht mit allem moeglichen RAM Geroedel belastet wie ein uC.

Das hatte ich schon vorgesehen, das Signal koennte in diesem Fall schnarchlangsam im zig-Millisekundebereich sein.

Darauf bezieht sich meine Frage, wie gut das beim ATMega ohne nachfolgende Logik wuerde. IOW wenn man nur RC hinten dran haengt und alles was so an Substrat plus Bonddraehten an Stoerspannung entsteht voll durchschlaegt. Habe noch nie einen ATMega fuer DAC-PWM dieser Art benutzt.

Im Prinzip ja, aber ... :-)

Wenn der ATMega ohne separate Treiberstufe keine 11-12 Bits netto schafft, dann ist der separate DAC wohl hier besser. Denn das soll im Land bestueckt werden und dann hat man hohe Plazierungskosten pro Bauteil. Vielleicht nicht gar so hoch wie in Europa, aber schmerzhaft.

Wenn's mich beisst suche ich ob es einen 12-Bit Dual-DAC unter $3 gibt :-)

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Für sowas könnte man theoretisch auch einen kleinen CPLD nehmen, wie z.B. den hier für 2,40$ :

formatting link

Damit kannst du dutzende von PWMs mit generieren, nebenbei noch einiges an Logik mit rechnen, parallel dazu dann noch z.B. Schaltreglerlogik erstzen usw. PWM-Soundausgabe war eins meiner ersten FPGA-Projekte vor einigen Jahren (urgs, noch in Verilog und die Telespiel-Idee ist mal wieder eins meiner nie fertiggestellten Hobbyprojekte)

formatting link

Kam ein schöner glatter Sinus raus.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Da sind mir die gut $3 fuer den DAC lieber, bei dem muss ich nichts programmieren :-)

Ist nicht ganz so einfach. Z.B. muessen bis auf einen der Schaltregler alle "beinhart" treiben, einige Ampere Spitze in die Gates rein und wieder heraus. Mit mindestens 10V Swing. Das schafft ein CPLD nicht, man braeuchte wieder je zwei Buffer und dann ist man von den Kosten her schon fast wieder beim Schaltregler IC. Current Mode Control ist auch nicht so trivial, obwohl ich das gelegentlich sogar mit CD40106 mache.

Man kann schon viel mit CPLD machen. Aber nicht wenn so richtig Kawumm hinter den Signalen sitzen muss und man weiss auch nie, ob eine Serie die naechsten 20 Jahre verfuegbar bleiben wird. Ich hatte frueher ziemlich gegen PAL/GAL gewettert und wurde manchmal als ewig gestriger belaechelt. Die Dinger soffen unglaublich viel, wurden recht heiss, und heute lacht niemand mehr, denn bei etlichen ist nach Abkuendigung Heulen und Zaehneknirschen angesagt.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Wie Du aber sicher weißt, sind Sigma-Delta Wandler _keine_ gewöhnlichen PWM Wandler, der Datenstrom sieht "etwas" anders aus, wird auch anders als mit einem PWM Timer erzeugt (digitaler Sigma-Delta Modulator) und hat deutlich bessere spektrale Eigenschaften für diesen Zweck.

Eben, das Noise Shaping gibt es bei Sigma-Delta durch den (beim DAC digitalen) Integrator für umsonst.

Der 1 bit Wandler Datenstrom beim Sigma Delta hat nicht nur die Eigenschaft, dass die mittlere Zahl der "1" Bits im Verhältnis zur Gesamtzahl der Bits pro Zeiteinheit den gewünschten Analogwert ergibt, die "1" Bits sind auch so im Datenstrom verteilt, dass das Quantisierungsrauschen auf hohe Frequenzen verschoben und dann vom nachfolgenden Anti-Alias-Filter abrasiert wird.

Das selbst für Audio-Sampleraten in Software nachzubauen wird man sich mit einem AVR schwer tun.

Gruß Oliver

--
Oliver Bartels + Erding, Germany + obartels@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
Reply to
Oliver Bartels

Es hängt immer vom Projekt ab, wie man die Gewichtung setzt:

- Man kann moderne Bauteile hernehmen und dafür State of the Art sein, die Produkte sind dann, wenn gut gemacht, gegenüber dem Wettbewerb sehr gut positioniert. Man kann z.B. mit FPGA Dinge machen, die mit "gewöhnlichen" IC's von der Stange gar nicht gehen. Dafür darf man dann auch mal die Entwicklung nachziehen, wenn sich irgendwas bei den Halbleitern bzgl. Verfügbarkeit rührt. Das schließt nicht aus, dass man bei Teilen, die technologisch nicht so kritisch sind, auf Nummer sicher geht.

- Oder man setzt nur Teile ein, von denen man 20-jährige Verfügbarkeit vermutet. Es gibt Märkte, in denen das Sinn machen kann, es gibt aber auch Märkte, in denen man mit dieser Strategie sehr bald keine Kunden mehr haben wird.

Wir in der Telekommunikation sind gezwungen, die erstgenannte Strategie zu verwenden, die Produktion von W48 Telefonen ist nicht mehr wirklich profitabel ;-)

Gruß Oliver

--
Oliver Bartels + Erding, Germany + obartels@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
Reply to
Oliver Bartels

Hallo Joerg,

Hab' ich ehrlich gesagt nie probiert, ich finde die Programmierung des PWM ziemlich unerfreulich und wenn du gute DC Performance brauchst erscheint mir ein externer DAC immer besser geeignet. Moechte dich aber darauf hinweisen, dass die neuen ATXmega mit 12 bit DAC kommen (ob einzel oder dual weiss ich jetzt aus dem Kopf nicht).

Nur so als Idee Klaus

Reply to
Klaus Bahner

Das mit "Entwicklung nachziehen" moegen viele meiner Kunden gar nicht. Es gilt immer abzuwaegen was an Vorteil rauskommt. Bei den PAL/GAL in den 80ern war das beinahe wie heute wo viele fuer einen simplen Delay Timer sofort einen uC setzen, waehrend unsereins wie gehabt den CD4060 nimmt. Es wurden aber auch an jeder Ecke GAL reingepflanzt und dann kam oft der Kommentar "Oh, ich glaube wir brauchen jetzt doch ein 5V/100A Netzteil." Der Knueller war ein Geraet, bei dem sie es tatsaechlich schafften die Anschlussleistung des normalen Stromkreises vieler Ziellaender zu ueberschreiten. Das geht heute allein schon wegen der "neuen gruenen Welle" nicht mehr.

Klar.

In Telefonen sind es ASICs. Mich fasziniert es immer wieder, wenn die hier ein Dreierpack DECT-Foenchen fuer $70 anbieten.

Wobei die alten Telefone besser waren. Nichts geht ueber das gusseiserne Panasonic Easa-Phone hier auf dem Tisch. 80er Aera, kommt das Siemens Euroset nicht gegen an und musste weichen. Vor Jahren fuer einen Dollar auf einem Garage Sale aus einer Kiste gegriffen. Jetzt geaergert, dass ich nicht die ganze Kiste gekauft habe.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Die 10 Zeilen VHDL für einen PWM würdest wahrscheinlich auch du als Nicht-VHDL Experte hinbekommen :-) Oder einfach die Schaltplan-Tools in den neueren Synthesetools verwenden, da kann man dann eine SPI-Einheit und eine PWM-Einheit einfach auf einen virtuellen Schaltplan ziehen, und die Synthesesoftware kümmert sich um den Rest.

Ich habe letztens mal ein ABEL-HDL Programm gesehen, das sah ja schlimm aus. Fast so, als müsste man statt einen Schaltplan zu zeichnen, eine Netzliste in Textform schreiben. Ist mit den Möglichkeiten und Sprachen der heutigen Synthese-Programme überhaupt nicht mehr vergleichbar, das geht mittlerweile wirklich alles sehr leicht.

Ein normaler Schaltregler schafft das aber auch nicht so einfach.

Gerade die XC95*-Serie gibt es seit bereits 7 Jahren (das ist zumindest das älteste Dokument, was ich dazu im Web gefunden habe) und wird noch aktiv von Xilinx auf deren Webseite beworben. Aber wie wir ja schon festgestellt hatten, meistens geben die Hersteller keine Liefergarantie länger als 1 Jahr. Dann heisst es Last-Buy und Redesign, wenn der Hersteller es abkündigt (was die großen Hersteller aber auch frühzeitig ankündigen).

Hängt dann immer vom Projekt ab, wie teuer das wird, wenn da Tests und Zertifizierungen dran hängen. Bei Consumerprodukten mit wenigen Jahren Produktionszeit oder Hobbyprojekten ist das wiederum unwichtig.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Ich finde es einfacher. Man schreibt einfach nach dem CCR-Interrupt einen neuen Wert ins Register und feddich. Beim externen DAC muss man einen String von 14 oder mehr Bits rausroedeln. Ok, wenn SPI schon drin ist (ist bei ATMega der Fall) geht das ohne viel Bit-Banging Aufwand, aber beim PWM ist nur ein Register zu beschreiben. Oft gibt es diese ganzen Routinen vorgekocht aus Libraries.

Danke, damit ginge es. Allerdings haben Distis die kleineren Varianten

44QFP und so immer noch nicht auf Lager.
--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Für FPGAs gibt es dafür sogar eine nette Application Note von Xilinx, wie man einen Delta-Sigma DAC baut:

formatting link

Wenn der Takt hoch genug ist, dann reicht aber auch ein einfacher Akkumulator, wie ich es ursprünglich hier beschrieben gefunden hatte:

formatting link

was dann automatisch ein PWM-Signal generiert. Ich habe es dann einfach so umgesetzt:

always @(posedge clk) begin sum[8] = 0; sum = sum + DACin; DACout = sum[8]; end

Wieder ein Argument dafür, ein CPLD einzusetzen :-)

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

"Joerg" schrieb im Newsbeitrag news:qDbYl.19045$% snipped-for-privacy@nlpi070.nbdc.sbc.com...

Zig Millisekunden ist ein schnell folgendes Signal. Nehmen wir an, der AVR laeuft auf 16MHz, wir setzen CLK I(O auch auf 16 MHz, setzen TOP auf 0x3FF (12 bit), dann ist der PWM-Zyklus 3.9kHz. Ein einfaches RC-Filter hat eine Daempfung von 6dB/Oktave, wir brauchen mehr als 72dB, also 12 Oktaven weniger, also ein Tiefpass mit Grenzfreqeunz

0.0009 Hz, also 1050 Sekunden oder ziemlich viele Millisekunden.

Du brauchst also einen besseren Filter, oder solltest deine Anforderungen noch mal ueberdenken.

Klar ist eins: Wenn du auf (Milli-)Sekunden filterst, und dieses effektiv tust, also ohne Einstreuungen und kapazitive Kopplung hoher Frequenzen, ist alles was der AVR an Stoerimpulsen auf der Versorgungsspannung produziert schon laengst ausgefiltert. Es bleibt nur das langsame Driften der Versorgungs- spannung entweder durch Belastungsaenderung (LCD-Beleuchtung an/aus :-) oder Temperaturaenderung, ausgebuegelt (aber damit auch wirksam) auf viele Sekunden.

Willst du das ausschliessen (weil der DAC Werte absolut und nicht relativ zur Versorgungsspannung liefern soll) dann muss er mit temperaturkonstanter und versorgungsspannungsunabhaengiger Referenzspannung versorgt werden, der AVR selbst liefert AREF, immerhin gut 1000 mal stabiler als die Versorgungsspannung.

Ich hab hier gerade einen ATMega8 auf dem Tisch und koennte ihn 12 bit DAC Werte liefern lassen, an einem 10k/22uF Tiefpass anschliessen (U2/U1 = 0,00018 bei PWM-Zyklusfrequenz, also Daempfung besser 12 bit, aber Grenzfrequenz unter

1Hz, so bei 0.7), nur hab ich kein Messmittel, um die Qualitaet dieses Signals betrachten zu koennen, ob nicht doch Fluktuationen oder Rauschen drauf ist, die es schlechter als 12bit machen, was letztlich natuerlich ein Aufbauproblem (Layout, Komponentenwahl) waere, aber bei realen Widerstaenden, Elkos, und Massebezugspunkten eben schon Einfluss hat.

Schafft er, aber nur mit RC-Glied nicht mit Reaktionszeiten im Millisekundenbereich, sondern eher im Sekundenbereich.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Ok, ich habe noch PID dahinter, da kann das ruhig etwas "knattern" :-)

Nicht ganz. Es gibt vieles, was die Stoerungen auch innerhalb des uC langzeitdriften laesst. Z.B. Abroedeln bestimmter Berechnungen alle paar Sekunden.

Nur die AREF laesst sich m.W. nicht fuer diese PWM benutzen, jedenfalls nicht ohne externe aktive Bauteile.

Einfluss

1Hz taete mir schon genuegen.

Das wuerde schon reichen, aber ich baue diesen hier lieber wie gehabt mit externem DAC auf. Den kann der Kunde wieder rausbugsieren, wenn er sich doch fuer einen uC mit DACs drin entscheidet.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Warum sind eigentlich Delta Sigma D/As so selten in uCs vorhanden? Ein Delta Sigma D/As erster oder zweiter Ordnung braucht doch kaum mehr Logik als die fast überall vorhandenen PWM Einheiten.

Grüße, Jan

Reply to
Jan Lucas

Richtig spaßig ist sowas:

formatting link

Wobei ich etwas Zweifel hab, das die erzielten Ergebnisse reichen, damit man ohne sehr aufwendige Filter, das wirklich nutzen kann.

Wenn du den CPLD schon einsetzt kannst du auch gleich ne Delta Sigma Wandler bauen, ich würde aber ganz stark darauf tippen, das ein konvetioneller D/A dann günstiger und besser kommt, gerade auch was den Stromverbrauch betrifft.

Grüße, Jan

Reply to
Jan Lucas

Auch meine leidige Erfahrung mit 16 Bit PWM auf 68HC908: Man muß mehrere 1pol RC-Filter mit langen Zeitkonstanten kaskadieren damit der Ripple bei Signalen wie 7FFF erträglich bleibt. Wenn man dann aber von 0000 auf FFFF umschaltet dauert es Sekunden bis das Signal mal in den Endwert einkriecht. Letztlich ist sowas für wenige Anwendungen brauchbar.

MfG JRD

Reply to
Rafael Deliano

Da wäre ich mir gar nicht so sicher - die Nachbauten waren auch recht teuer :-)

-ras

--

Ralph A. Schmid

http://www.dk5ras.de/ http://www.db0fue.de/
http://www.bclog.de/
Reply to
Ralph A. Schmid, dk5ras

Ich verstehe nicht, warum bei den HW-PWMs so gut wie nie eine Option da ist, den Vergleich mit den revertierten Bits zu machen. Kostet so gut wie keine HW und sorgt für eine schöne Verteilung des Ausgangssignals. Zwar nicht so schön wie bei DeltaSigma, aber besser als beim normalen Vergleich.

Bei SW-PWMs geht das recht einfach. Da kann man die Nibbles über LUTs umdrehen.

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

"Rafael Deliano" schrieb im Newsbeitrag news:h0ss8i$v5j$00$ snipped-for-privacy@news.t-online.com...

Bei mir war's der 68HC11 :-)

Wobei auch ein "Tiefpass 1. Ordnung" gereicht haette, nur bei 8 MHz / 16 bit = 122 Hz PWM-Zykluszeit mit so was bei Sprungantwort zu 99.9985% an den Sollwert rankommen heisst

537 Sekunden warten, wie du gesehen hast:

Och, erstens gibt es steilere Filter, und zweitens hat man sowieso meist nur 8 bit Aufloesung benoetigt, und drittens gibt es viele Anwendungen in denen langsame Reaktion kein Drama ist, man denke an Temperatur, und viertens gibt es noise shaping, z.B. Magic Sinewaves wenn man Sinus erzeugen will.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.