DAC, DA-Wandlung mit PWM?

OP #6693317
Lesenswert?

Hallo,
für ein Projekt benötige ich zur Steuerung 4 regelbare Gleichspannungen 
zwischen 0 – 3,3 Volt (max. 5 Volt) aus einem Arduino (oder ähnlich). Da 
in den meisten Mikrocontroller kein DA-Wandler integriert ist, dachte 
ich  mittels eines PWM-Ausgangs eine DA-Wandlung vorzunehmen. Hierbei 
bin ich im Artikel 
https://www.mikrocontroller.net/articles/Pulsweitenmodulation und 
https://www.mikrocontroller.net/articles/Pulsweitenmodulation#DA-Wandlung_mit_PWM 
fündig geworden.
Ich habe die kleine Schaltung wie gezeigt nachgebaut. Sie funktioniert 
auf den ersten Blick eigentlich recht gut.
Es gibt jedoch einen kleinen Schönheitsfehler. Ist der Eingang offen 
oder wird nicht angesteuert, geht der Ausgang auf maximale 
Ausgangsspannung. Dies ist jedoch eine Eigenart, die ich nicht 
gebrauchen kann. Wie genau erklärt sich dieser Zustand und kann ich dies 
mit kleinen Aufwand abändern?
Tritt dies bei der fertigen Lösung LTC2645 so auch auf? Gibt es andere 
einfache Lösungen für meine Aufgabenstellung von oben?
Über etwas Hilfe würde ich mich sehr freuen. Vorab vielen Dank.
Gruß Tilli
Gast #6693330
Lesenswert?

Andreas T. schrieb:
> Es gibt jedoch einen kleinen Schönheitsfehler. Ist der Eingang offen
> oder wird nicht angesteuert, geht der Ausgang auf maximale
> Ausgangsspannung. Dies ist jedoch eine Eigenart, die ich nicht
> gebrauchen kann.

Das hängt von den Eigenheiten deiner anzusteuernden Schaltung und von 
deinem Programm ab.
Gast #6693417
Lesenswert?

Carsten-Peter C. schrieb:
> Wenn Deine anzusteuernde Schaltung den Pegel hochzieht, ist vielleicht
> diese Schaltung geeignet.

Das gibt eine mühselige Kennlinienrechnerei. Der lineare Zusammenhang 
zwischen Tastverhältnis und Ausgangsspannung geht jedenfalls mit 
Sicherheit verloren.

Ein Op mit Rail-to-Rail Ausgang als Impedanzwandler könnte eher passen.
#6693465
Lesenswert?

Wolfgang schrieb:
> Das gibt eine mühselige Kennlinienrechnerei. Der lineare Zusammenhang
> zwischen Tastverhältnis und Ausgangsspannung geht jedenfalls mit
> Sicherheit verloren.

Andreas schreibt.“ Sie funktioniert auf den ersten Blick eigentlich 
recht gut.“ Der Widerstand R1 liegt parallel zum PWM-Ausgang und hat 
somit kaum Auswirkungen auf den TP. Der Transistor entkoppelt den 
unbekannten Eingang der Schaltung weitgehend. Eine ähnliche Schaltung 
nutze ich für mein Lasermodul. Es ist schnell aufgebaut. Probiere es 
einfach aus.
Gruß Carsten
#6693680
Lesenswert?

Andreas T. schrieb:
> Gibt es andere einfache Lösungen für meine Aufgabenstellung von oben?

Am einfachsten finde ich einen normalen DAC mit I2C-Schnittstelle. Der 
MAX5815BAUD kommt im SSOP-14, braucht nur ein Abblock-C und liefert vier 
Spannungen von 0 bis 3.3V mit 12 Bit Auflösung.

Die Grenze für so ein Teil ist die I2C-Bandbreite, theoretisch schafft 
der 4x3.7kHz. Aber es gibt ähnliche Teile mit High Speed I2C.
OP #6694910
Lesenswert?

Vielen Dank für die vielen, schnellen Antworten.
Um es zu verstehen, fasse ich einmal zusammen:

Wolfgang antwortete:
„Das hängt von den Eigenheiten deiner anzusteuernden Schaltung und von
deinem Programm ab“.
Anmerkung: Die anzusteuernden Schaltung ist einfach ein 
Komperator-Eingang eines OP's über einen Spannungsteiler (zB. 1/10). Das 
Programm ist ein Standart-PWM-Signal aus einem Arduino.

@Carsten-Peter: Soll die Schaltung PWM-TP.png das ganze Filter ersetzen? 
Welche werte hast du verwendet? „Wenn Deine anzusteuernde Schaltung den 
Pegel hochzieht, ist vielleicht diese Schaltung geeignet.“ Wie genau ist 
das gemeint?

@ Mani: „Pulldown am Eingang hinzufügen?“ Habe ich gestern kurz 
getestet. Geht schon in die richtige Richtung. Muss ich mir einmal genau 
ansehen. Auf so eine einfache Lösung bin ich nicht gekommen, da ich 
dachte, dass dies den TP beeinträchtigt.

@bauformb: MAX5815BAUD klingt auch nach einer guten Alternative. War 
halt auf der Suche nach einer einfachen und kostengünstigen Lösung. 
Eventuell auch DIY. Diese IC's sind auch oft etwas schwer zu beschaffen. 
Schaue ich mir aber einmal an. Benötige ich denn für ein 
Standart-PWM-Signal aus einem Arduino eine solch hohe Frequenz?

@ElektroFH: „LTC2645 sollte funktionieren. Er hat ein IDLSEL Pin. Wenn 
mehr als 60ms kein INx Signal gibt, geht der OUTx auf dem von dir 
gewählten Pegel. Z.B. VCC oder GND. Datenblatt Seite 13.“

Macht er dies für jeden Out einzeln oder schaltet er alle Ausgänge 
gleichzeitig ab? Das zweite könnte ich natürlich nicht gebrauchen.
Vorab für weitere Tipps vielen Dank.
Gruß Andreas
Gast #6694931
Lesenswert?

Andreas T. schrieb:

> Anmerkung: Die anzusteuernden Schaltung ist einfach
> ein Komperator-Eingang eines OP's über einen
> Spannungsteiler (zB. 1/10). Das Programm ist ein
> Standart-PWM-Signal aus einem Arduino.

Nur als Hinweis: Dir ist klar, dass Dein persönlicher
Troll-Salami-Faktor gerade in die Nähe von 100% gekommen
ist?

Begründung:
1. Kein Schaltplan.
2. Offensichtlich unvollständige Aufgabenstellung.

Dein ursprüngliches Problem (stellbare Spannung mittels
Arduino und PWM erzeugen) erfordert
1. einen Arduino mit Programm,
2. je Spannungskanal einen Widerstand,
3. je Spannungskanal einen Kondensator.

Deine Erwähnung von "Komperator-Eingang", "OP" und
"Spannungsteiler" zeigt an, dass Du irgendwas völlig
anderes tust, als man nach Deinem Ursprungsbeitrag
erwarten würde.

Das nur als Hinweis, damit Du Dich über die Reaktionen
hier nicht wunderst.
Gast #6694936
Lesenswert?

>Das gibt eine mühselige Kennlinienrechnerei. Der lineare Zusammenhang
>zwischen Tastverhältnis und Ausgangsspannung geht jedenfalls mit
>Sicherheit verloren.
Das ist doch ein normaler Emitterfolger mit Verstärkung 1. Nur eben auf 
dem Kopf.
Und dass Du am Ausgang nie 0V haben wirst. Kommt auf die Anwendung an.
#6695005
Lesenswert?

Andreas T. schrieb:
> @Carsten-Peter: Soll die Schaltung PWM-TP.png das ganze Filter ersetzen?

Der Filter besteht aus R2 und C1. Nach der positiven Flanke Deines PWM 
Signals wird C1 über den Widerstand R2 aufgeladen, bis nach der 
negativen Flanke C1 wieder über R2 entladen wird usw. Ist die Frequenz 
hoch genug, stellt sich eine Gleichspannung proportional zum 
Taktverhältnis des PWM Signales ein.

> Welche werte hast du verwendet? „Wenn Deine anzusteuernde Schaltung den
> Pegel hochzieht, ist vielleicht diese Schaltung geeignet.“ Wie genau ist
> das gemeint?

Du schreibst:
Es gibt jedoch einen kleinen Schönheitsfehler. Ist der Eingang offen
oder wird nicht angesteuert, geht der Ausgang auf maximale 
Ausgangsspannung.

Diese maximale Ausgangsspannung kann nur vom nachfolgendem Gerät kommen 
(wie bei meinem Lasermodul). Das bedeutet für mich, die Klemmen X2 
müssen  bei nicht angeschlossenem Eingang  X1 gegen Masse gezogen 
werden. Das geschieht dadurch, das der Transistorüber die Widerstände R2 
und R3 seine Basisspannung erhält und durchschaltet. Für R1 würde ich 
einen Wert zwischen 2K und 10K nehmen. Für R2 und C1 würde ich die Werte 
Deiner Schaltung übernehmen. Je größer C1, je glatter die Gleichspannung 
aber auch träger. Da mein Laser mit PWM zurecht kommt, habe ich R2 und 
C1 nicht verbaut.
Gruß Carsten
Gast #6695072
Lesenswert?

Andreas T. schrieb:
> Dies ist jedoch eine Eigenart, die ich nicht
> gebrauchen kann.

Wenn man diePWM richtig ansteuert, dann liefert die automatisch 50%:50%, 
wenn man 0Volt vorgibt. "Gar keine Spannung" gibt es elektrisch nicht, 
da man definieren muss, was "Null" sein soll. Für den Fall von Brücken 
gibt es daher noch eine Abschaltung. In dem Fall des TE empfiehlt sich 
entweder eine einseitig (unsymetrische) Auswertung durch einen OP, den 
man auf Null steuert oder eine nur unsymmetrische Nutzung des Ausgangs 
bei einem rail-2-rail.

Richtig auf 0V und 3.3V wird man eh nicht kommen, wenn man nicht einen 
OP nimmt, der mit etwa -1V bis 4V beschaltet ist und die PWM mit einem 
Offset belegt.

Z.B. Range = 5V,  0 = 0V , 100% = 5V, Offset am OP = -1V, damit:
20% PWM = 0V, 80% PWM = 3V
Stärker sollte man eine PWM auch nicht ausreizen.
Mit einem kleinen Zähler in einem PLD benutze ich das in 64 Kanälen, um 
CVs für Eisenbahnbeleuchtung und-steuerung zu erzeugen.
#6695105
Lesenswert?

Andreas T. schrieb:
> Diese IC's [echte DACs] sind auch oft etwas schwer zu beschaffen.
> Schaue ich mir aber einmal an. Benötige ich denn für ein
> Standart-PWM-Signal aus einem Arduino eine solch hohe Frequenz?

Den MAX5815 gibt's immerhin bei Mouser. Der hat aber mit PWM überhaupt 
nichts zu tun, kennt er nicht, kann er nicht, braucht er nicht. Du sagst 
ihm einfach per I2C wieviel Volt er liefern soll und dann macht er das, 
nicht mehr und nicht weniger.

Die Frequenz hängt davon ab, wie schnell du die Spannungen am 
Komparator-Eingang ändern willst. So über den Daumen kannst du sie (per 
I2C) tausend mal pro Sekunde neu einstellen.
Gast #6695145
Lesenswert?

Andreas T. schrieb:
> @ElektroFH: „LTC2645 sollte funktionieren. Er hat ein IDLSEL Pin. Wenn
> mehr als 60ms kein INx Signal gibt, geht der OUTx auf dem von dir
> gewählten Pegel. Z.B. VCC oder GND. Datenblatt Seite 13.“
>
> Macht er dies für jeden Out einzeln oder schaltet er alle Ausgänge
> gleichzeitig ab?

Jedes Kanal (EingangX + AusgangX) ist unabhängig von einander.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren