Forum: Analoge Elektronik und Schaltungstechnik Sollwertvorgabe: DAC oder PWM über RC-Glied besser?


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Für meinen PV-Lader benötige ich in der MPP-Tracking-Stufe eine 
Sollwertvorgabe für einen PWM-Regler im Bereich von 0..5V.

Ich kenne zwei Möglichkeiten, wie man das praktisch hinkriegen könnte. 
Entweder man nimmt einen DAC, der diese Spannung passend ausspuckt oder 
man erzeugt mit einem Timer des µC ein PWM-Rechtecksignal und schickt 
dieses über einen RC-Tiefpass, wo sich eine zum PWM-Tastverhältnis 
passende Ausgangsspannung einstellen sollte.

Im Moment favorisiere ich die DAC-Variante, aber ich habe noch keinen 
gut passenden DAC gefunden. Brauchen würde ich 10 Bit und 0V(GND)..5V 
Ausgangsspannung, parallele Ansteuerung wäre okay. Gefunden habe ich 12 
Bit mit SPI (MCP4921). Wenn sich nichts anderes findet, nehme ich den... 
aber SPI brauche ich eigentlich nicht.

Oder evtl. ein R2R-Netzwerk mit 10 Controller-Pins nachbilden? Wäre eine 
dritte Möglichkeit, aber aus meiner Sicht nur eine Notlösung wenn beide 
anderen unpassend wären.

Hintergrund:
Da ich mit den AVR-Controllern recht fit bin, wird ein AVR die Steuerung 
des PV-Laders übernehmen. Die Erzeugung des PWM-Signals für den 
Leistungsteil des MPP-Trackers überlasse ich einem PWM-Regler. Dann 
brauche ich mich nicht mit der Regelung in Software herumzuschlagen 
(Nichtlinearitäten der Schaltung/Bauteile, schnell getakteter Timer um 
bei der erforderlichen Auflösung noch eine ausreichende PWM-Frequenz 
hinzukriegen). Technisch ist das ein StepUp-Drosselwandler, der entweder 
auf Eingangsstrom oder Eingangsspannung geregelt wird, damit die 
PV-Module nahe ihres Leistungsmaximums betrieben werden können.

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


Lesenswert?

Bei geglätteter PWM bleibt die Herausforderung zwischen Settle Time und 
Welligkeit des Ausgangssignals. Kleines RC gibt Welligkeit aber schnelle 
Settle Time und grosses RC gibt wenig Welligkeit, aber träge 
Antwortzeit.
Je höher die PWM Frequenz, desto einfacher wird es.
Davon abgesehen ist PWM sicher der geringste Aufwand. R2R verschwendet 
halt eine Menge Portbits und die Widerstände sollten wirklich genau 
sein.

: Bearbeitet durch User
von Georg M. (g_m)


Lesenswert?

Ben B. schrieb:
> Brauchen würde ich 10 Bit
>
> Da ich mit den AVR-Controllern recht fit bin

Dann nimm einen entsprechenden AVR.

von Vanye R. (vanye_rijan)


Lesenswert?

Wenn man weiss wie es geht dann kann man mit PWM ein viel besseres
Ausgangssignal hin bekommen. Allerdings dann lahm! Ich sag mal so
Pi x Auge 16Bit mit 1s Settlingtime.

Es gibt natuerlich auch gute 16Bit DAC, aber halt teuer.

Aber 10Bit ist eigentlich Kindergeburtstag. Da kannst du beides
nehmen. Schon fast Geschmacksache.

Vanye

von Bauform B. (bauformb)


Lesenswert?

Ben B. schrieb:
> Im Moment favorisiere ich die DAC-Variante, aber ich habe noch keinen
> gut passenden DAC gefunden. Brauchen würde ich 10 Bit und 0V(GND)..5V
> Ausgangsspannung

DAC101C081CIMK/NOPB: I2C mit 4 Adressen im SOT-23-6 für 1.50. Und mit 
ziemlich kräftigem Rail-to-Rail Ausgang, PWM braucht hinter dem Filter 
einen OP.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ben B. schrieb:
> Oder evtl. ein R2R-Netzwerk mit 10 Controller-Pins nachbilden?
Klar, mit 0,1% widerständen und ohne Berücksichtigung der 
Bahnwiderstände des µC. So eine richtige Prinzipschaltung, die auch nur 
"im Prinzip" funktioniert.

Matthias S. schrieb:
> Je höher die PWM Frequenz, desto einfacher wird es.
Die PWM-Ausgangsfrequenz muss für 10 Bit 1024 mal höher sein als die 
gewünschte Grenzfrequenz des DAC. Wenn der Analogwert sich also mit 1Hz 
ändern soll, dann muss die PWM-Ausgangsfrequenz 1kHz sein. Dafür muss 
dann der 10-Bit-PWM-Zähler mit 1MHz getaktet werden:
- http://www.lothar-miller.de/s9y/archives/11-RC-Glied-fuer-PWM.html

Wenn du schneller als mit 1Hz tracken willst, dann musst du schneller 
takten.

Aber ich weiß aus praktischer Erfahrung: du brauchst keine 10 Bit fürs 
MPP-Tracking. Man bekommt das mit 8 Bit tadellos hin.

Ben B. schrieb:
> MCP4921
Nimm den.

: Bearbeitet durch Moderator
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Langsam ist völlig okay. Ich plane zwar Schattenmanagement, sprich alle 
10..20 Minuten einmal durch den kompletten MPPT-Bereich suchen (mehr ist 
es nicht), aber wenn das 10 Sekunden dauert ist das nicht schlimm.

Bei der PWM/RC-Variante habe ich nur Sorgen wegen des Ripple, den man 
nie ganz rausgefiltert bekommt. Nicht, daß da irgendwelche Resonanzen 
entstehen und der Regler dann in manchen Bereichen instabil läuft.

Ja stimmt, R2R-Netzwerk selbst bauen kann man wegen Ungenauigkeit bzw. 
dadurch entstehender Nichtlinearität wohl schnell wieder vergessen. 
Danke für den Hinweis, das hatte ich nicht auf dem Schirm.

Ob 8 Bit Auflösung reichen bin ich mir unsicher. Wahrscheinlich schon, 
aber Bits auslassen wenn man sie nicht braucht ist einfacher als Bits 
hinzufügen, wenn man sich herausstellt, daß man sie braucht.

Ich bin mir noch nicht sicher, ob ich die Regelung als Strom- oder als 
Spannungsregler aufbaue. Ein Spannungsregler darf wahrscheinlich 
deutlich träger sein als ein Stromregler... das wäre einfacher zu bauen, 
aber ich wollte einen sehr weiten Eingangsspannungsbereich (25...250V) 
abdecken, damit das Ding auch an einem einzelnen PV-Modul laufen kann. 
Dann braucht man bei der der Spannungsregler-Variante schon 10 Bit für 
die unteren Spannungen.

Ob so geringe Spannungen Sinn ergeben, weiß ich im Moment noch nicht. 
Kann sein, daß die angestrebten 15A Eingangsstrom dabei nur bei 
unpraktikabel engem Tastverhältnis erreicht werden und dann funktioniert 
das nicht. Das ist das gleiche Problem, was der China-Lader meines 
Kumpels gerade hat. Wenn das von mir angestrebte Design funktioniert, 
muss die MPPT-Stufe als StepUp-Drosselwandler 400..450V schaffen. Mal 
sehen, was in einer oder zwei wiederverwendeten PFC-Drosseln steckt.

Ich könnte auch den Trafo aus einer 96V-USV nehmen. Dann wären es nur 
170V maximal, allerdings sinkt das bei leerem Akku noch weiter ab und 
die MPP-Spannung darf nicht höher sein als diese Zwischenkreis-Spannung, 
sonst funktioniert das MPP-Tracking nicht mehr.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Bauform B. schrieb:
> PWM braucht hinter dem Filter einen OP.

Das kommt auf die Last drauf an.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wenn das Ganze sowieso selbst zusammengerickelt werden soll: warum 
steuert eigentlich die vom µC ausgegebene PWM nicht einfach direkt den 
entsprechenden Transistor an?

Denn der Witz an der ganzen Sache ist ja: die Solarzellen sind 
kurzschlussfest. Mehr als den maximalen Strom können die nicht liefern. 
Wenn also der Schalttransistor vom Stepup "aus Versehen" mal 
eingeschaltet bleibt, dann kommt da nicht mehr Strom als sowieso kommen 
kann.

Ben B. schrieb:
> Ich bin mir noch nicht sicher, ob ich die Regelung als Strom- oder als
> Spannungsregler aufbaue.
Ich würde das ganze Ding gleich als MPP-Regler aufbauen.

: Bearbeitet durch Moderator
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Habe ich drüber nachgedacht, aber wenn ich die PWM-Regelung des StepUp 
in Hardware mache, habe ich in Software ein Problem weniger, brauche 
mich nicht mit einem PID-Regler usw. herumschlagen. Das Programm und die 
Messungen werden dadurch viel entspannter.

von Lutz (lutz66)


Lesenswert?

Zu der Frage was ist besser,
da gibt es mehrere Aspekte
- Geschwindigkeit
- Genauigkeit
- Aufwand
- Robustheit

bzgl. Geschwindigkeit, die Faustformel bei 10 Bit Auflösung und 1Hz 
Einstellzeit daraus folgt 1.024kHz PWM, das hängt ja auch vom Filter ab, 
bei 6dB pro Oktave, sind das 10 Oktaven, also 60 dB, das ist dann 1/1000
Aber man kann ja auch 12dB oder 18dB Filter bauen, dann ist man schon 
mit PWM Frequenz niedriger. Ein DAC ist so schnell wei man ihn auswählt 
und ansteuern kann und hat keinen Ripple der ihn  langsamer macht

bzgl. genauigkeit, beim PWM wenn man mit dem µC Pin ansteuert dann hat 
man die Toleranz der Versorgung und den Spannungsabfall an den µC 
Ausgängen. Da kann man dann entweder Analogschalter nehmen die 
niederohmig sind oder auch die Spannung per ADC zurückmessen, auch zu 
beachten das die µC Pin evtl. nicht auf 0V runter gehen können

bzgl. Aufwannd ist PWM mit einem passiven 12dB oder 18dB Filter und 
rückmessung per ADC und evtl. noch eine refernzspannung messen geringer 
als DAC, zumindest was den Aufbau angeht auf Lochraster, wenn man PCB 
macht wäre es egal

bzgl. Robustheit, PWM ist ziemlich Robust wenn man es macht wie gerade 
beschrieben mit Rückmessung etc. Das PWM selber über Timer ist ziemlich 
stabil, wenn die Frequenz variiert spielt es keine Rolle, und einen 
einfache Referenz kriegt man auch ganz gut hin

Alternativ könnte man natürlich auch einen µC suchen mit eingebauten 
DAC, wie sie STM Controller, ist nicht schwieriger als ATMEL und die 
Entwicklungsumgebung lässt einem schnell erste Erfolge sehen

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Man kann sich Mühe geben wie man will, irgendwas vergisst man immer oder 
hat man zu wenig Beachtung beigemessen. :)

Also was ich vor habe ist, einem PWM-Regler wie dem TL494 einen Sollwert 
im Bereich von 0..5V vorzugeben (im Falle des Spannungsreglers, beim 
Stromregler müsste man das mit einem Spannungsteiler deutlich 
reduzieren), so daß dieser die Eingangsspannung auf 25..250V regelt. 
Wenn man dabei 0..250V vorgeben kann, spielt das keine Rolle - unter 25V 
wird dann einfach nicht genutzt. Eine Auflösung von 250mV ist 
wahrscheinlich ausreichend, besser schadet nicht, aber ich kann mit dem 
10 Bit ADC des AVR auch nicht genauer messen.

Die Geschwindigkeit ist ziemlich unwichtig, bei der favorisierten 
Spannungsregler-Variante ändert sich der MPP der PV-Module nur sehr 
langsam und wenn man den kompletten Regelbereich im Rahmen des 
Schattenmanagements in 10 Sekunden einmal komplett durchfahren kann, 
dann genügt das. Das braucht keine hohe Bandbreite wie ein Audio-DAC 
oder so.
  Die absolute Genauigkeit muss ebenfalls nicht weltbewegend sein, das 
wird durch den MPP-Tracker ausgeglichen. Der erste MPP-Tracker, den ich 
vor vielen Jahren gebastelt habe, arbeitete relativ. Also "ändere den 
PWM-Wert um X", nicht "setze die Spannung auf X", damit erspart man sich 
jede Kalibration.

Anderer µC...
Also worüber ich noch ernsthaft nachdenke, ist der ESP32. ADC und DAC 
über SPI oder I2C, paar Steuerleitungen über GPIOs, würde funktionieren. 
Ich bekäme sogar einen höher auflösenden ADC, den ich mir beim AVR so 
oft wünsche, evtl. mit einem Kanal zu wenig (bräuchte 5, der ADS1115 hat 
4).
  Leider habe ich keinen guten Mentor für die Arduino- 
Entwicklungsumgebung und einige meiner Anfänger-Versuche damit zeigten 
sehr unerwartete Ergebnisse. Wahrscheinlich würde ich hier hinterher mit 
vielen trivialen Arduino-Fragen nerven wenn ich mich für den ESP32 
entscheide. Damit mache ich mir hier vielleicht wenig Freunde, obwohl 
ichs gerne versuchen würde.

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Lesenswert?

Ben B. schrieb:
> Ich bekäme sogar einen höher auflösenden ADC, den ich mir beim AVR so
> oft wünsche, evtl. mit einem Kanal zu wenig (bräuchte 5, der ADS1115 hat
> 4).

ADS1115 ist I2C, dazu passend wäre als D/A der MCP4725, ein nettes Teil.

Ben B. schrieb:
> Da ich mit den AVR-Controllern recht fit bin, wird ein AVR die Steuerung
> des PV-Laders übernehmen.

> Leider habe ich keinen guten Mentor für die Arduino-
> Entwicklungsumgebung und einige meiner Anfänger-Versuche damit zeigten
> sehr unerwartete Ergebnisse.

Dann arbeite Dich ein oder verwende AVR, mit denen Du angeblich 
vertraut bist.

> Wahrscheinlich würde ich hier hinterher mit
> vielen trivialen Arduino-Fragen nerven wenn ich mich für den ESP32
> entscheide. Damit mache ich mir hier vielleicht wenig Freunde,

Als wenn Du darauf Wert legen würdest, tust Du in anderen Threads ja 
auch nicht.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Sagen wir es so, ich habe die Möglichkeit einer Freundschaft bei manchen 
Leuten bedauerlicherweise aufgeben müssen und wenn ich hier noch mit 
Arduino-Anfängerfragen komme, die für manche evtl. absolut trivial sind, 
dann wirds wahrscheinlich nicht besser. Eine kurze knappe Antwort auf 
solche Fragen ist für viele ungeachtet ihrer fachlichen Kompetenz leider 
nicht machbar, sondern der dumme Unwissende muss zuerst ordentlich 
runtergeputzt werden bevor man sich zu einer Antwort erbarmt.

> MCP4725
Den schaue ich mir mal an, danke für den Hinweis!

von Hippelhaxe (hippelhaxe)


Lesenswert?

Matthias S. schrieb:

> Bei geglätteter PWM bleibt die Herausforderung zwischen
> Settle Time und Welligkeit des Ausgangssignals.

Ja, aber niemand zwingt einen, bei einem passiven Filter
1. Ordnung zu bleiben -- außer der unüberwindlichen Abscheu
der Informatiker gegen (zusätzliche) Hardware.

Ein Sallen/Key 3. Ordnung geht mit einem OPV plus Hühner-
futter und bietet 60dB/Dekade.

von Peter D. (peda)


Lesenswert?

Ben B. schrieb:
> sondern der dumme Unwissende muss zuerst ordentlich
> runtergeputzt werden bevor man sich zu einer Antwort erbarmt.

Du hast immer die Möglichkeit, solche Antworten gepflegt nach /dev/null 
zu verschieben. Hauptsache, Du verkneifst es Dir, darauf zu antworten.
Beachte einfach nur solche Antworten, die Dir helfen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ben B. schrieb:
> brauche mich nicht mit einem PID-Regler usw. herumschlagen.
Ein MPP-Tracker braucht keinen Regler im üblichen Sinn. Er "regelt" sich 
selber auf den MPP, indem er ständig schaut, ob "links" oder "rechts" 
vom aktuellen Arbeitpunkt (also einfach mit mehr oder weniger 
Tastverhältnis) eine Stelle mit mehr Leistung zu finden ist. Der 
aktuelle MPP wird also nicht nur "alle 10..20 Minuten" gesucht.

> Das Programm und die Messungen werden dadurch viel entspannter.
Du solltest das Konzept (d)eines MPP-Trackers nochmal überdenken.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Angehängte Dateien:

Lesenswert?

Öhm... was hat Dich zu der Annahme verleitet, daß ich nicht wissen würde 
wie ein MPP-Tracker arbeitet bzw. daß der MPP ständig verfolgt wird?

Bei der MPP-Suche über den kompletten Regelbereich gehts nur um 
Schattenmanagement. Bei Teilbeschattung eines Moduls/Strings kann sich 
ein lokales Maximum ausbilden, welches weniger Leistung liefert als das 
globale Maximum. Der MPP-Tracker muss aus einem lokalen Maximum einen 
Bereich mit sinkender Leistung durchfahren, um ein (höheres) globales 
Maximum zu finden - das tut er ohne Schattenmanagement nicht und bleibt 
im lokalen Maximum hängen. Daher macht man in bestimmten Abständen einen 
schnellen Scan über den kompletten Regelbereich, merkt sich dabei das 
globale Maximum und nimmt es danach als Startpunkt für den MPP-Tracker. 
Der macht dann die Feinarbeit.

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.