Habe einen Buck-Regler mit AVR gebaut. Ich starte den ADC, messe Strom und Spannung (interrupt gesteuert). Nach einer bestimmten Anzahl an Messungen passe ich dan den Duty-Cycle an (nicht nach jeder Messung). Passe ich meinen Duty-Cycle nach jeder Strom und Spannungsmessung an, so schwingt der Regler. Passe ich den Duty-Cycle nach jedem Timer-Overflow des PWM Timers an, so schwingt der Regler auch. Geht ansonsten soweit ganz gut (ich kann ohne große Erwärmung viel Leistung umsetzen). Aber die Regelung ist irgendwie Glückssache. Regele ich in der Software zu schnell dann schwingt sich das ganze auf (mehrere 100 mV Schwingungen am Ausgang). Regele ich zu langsam ist das Regelverhalten schlecht. Problem ist denke ich mal, dass nach Änderung des PWM Duty-Cycles nicht sofort eine Änderung der Ausgangsspannung erfolgt (aufgrund der Glättungskondensatoren). Wie baut man eine solche Regelung am besten auf?
Probier doch mal deine AD-Werte etwas zu filtern bevor du die Werte benutzt. Also eine kleine Mittelwertbildung. Dann springen deine Werte nicht mehr so extrem. Du bekommst bei einem Schaltregler nämlich ordentlich Störungen auf deine Messleitungen. Wenn du durch einen ungünstigen Abtastzeitpunkt dann darauf regelst ist das meist nicht so toll. Ansonsten wäre noch ein Schaltbild ganz hilfreich. Vielleicht stimmt ja auch was an deiner Beschaltung nicht ganz. Gruß Mandrake
Würde dir auch Filterung vorschlagen. Oder du änderst nicht so schnell den Ausgangswert. Beispiel: alter wert 10, neuer Wert 100. Dann addiere nur einen Teil. zb max 25. Dann springt er auch nicht so. ich denke deine Regelung dürfte trotzdem schnell genug sein.
Wenn man erst filtert, dann hat man eine zusätzliche Verzögerung, was sich meist negativ auf die Regelung auswirkt (zumindest meine Erfahrung). Damit die Regelung wirklich sauber funktionier sollte der ADC synchron zur PWM Frequenz laufen, damit man immer zum gleichen Zeitpunkt der im PWM Takt etwas wackelnden Spannung misst. Was auch gut funktioniert, zumindest eher selten zum Schwingen neigt: Eine einfache Ein/Aus Regelung durch Auslassen von Takten. Nicht wirklich ideal was den Ripple angeht, aber dafür schwingt nichts. Meine Erfahrungen: P Regler: Zu viel Rauschen aufgrund des Quantisierungsfehlers des ADCs wenn es genau sein soll. I Regler: Je nach Last sehr gut, aber wird schnell instabil sobald die Last nicht ohmisch ist. PI Regler: Quasi ein Kompromiss aus obigen beiden. PID Regler: Teilweise auch viel Rauschen durch den ADC drauf.
Ich vergleiche die ADC Werte und inkrementiere/dekrementiere dann einfach den Duty-Cycle (also nur ein billiger P-Regler). Bei I und D Anteil wüsste ich nicht wie stark ich I und D in die Regelung eingehen lassen darf - das müsste man dann wieder experimentell ermitteln. Was heisst ADC synchron zur PWM Frequenz? Sollte ich die ADC-Messung dann zum Overflow des PWM Timers oder zum Compare-Match Zeitpunkt anwerfen? Eine kleine Filterung (vielleicht zwei Messungen mit 40%+fließender Mittelwert mit 20% eingehen lassen) wäre vielleicht nicht ganz verkehrt.
Artjomka schrieb: > Ich vergleiche die ADC Werte und inkrementiere/dekrementiere dann > einfach den Duty-Cycle (also nur ein billiger P-Regler). Klingt für mich eher nach einem vereinfachten I Regler, denn der neue Wert ist ja alter Wert +/- irgendwas. Das erklärt auch, warum das ganze instabil ist: Sagen wir mal du hast als Last einen Kondensator und einen Widerstand. Die Spannung ist zu niedrig, der PWM Wert wird daher mehrere Takte lang erhöht. Passt die Spannung, wird der PWM Wert nicht mehr erhöht, aber er ist zu hoch: Die Spannung steigt weiterhin an. Der PWM Wert wird nun wieder Stufenweise kleiner gemacht. Die Spannung fällt nun wieder. Der PWM Wert ist nun aber zu klein, denn er wird erst wieder vergrößert wenn die Spannung schon zu niedrig ist. Das ganze sind dann wunderbar konstante Schwingungen die man nie weg bekommt, solange man einen Energiespeicher im System hat. Da hilft dann nur ein PI Regler der sofort reagiert wenn eine Abweichung da ist. > Was heisst ADC synchron zur PWM Frequenz? Sollte ich die ADC-Messung > dann zum Overflow des PWM Timers oder zum Compare-Match Zeitpunkt > anwerfen? Ja, so in etwa. Neuere AVRs bieten das auch hardwaremäßig (ADTS in ADCSRB).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.