• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Übertritt kontinuierlich => diskontinuierlich im digitalen Regler
Zitat:Original geschrieben von christianw.
Kein Wunder, dass du keine Freunde hast. Rolleyes
Ich bin zwar ein einsamer Wolf. Aber dafür hab ich nen buschigen.... klappe

[Bild: 0.jpg]
 
Zitat:Original geschrieben von Rumgucker
Ich hatte doch nun mehrmals geschrieben, dass ich die volle Auflösung brauche, um Regelschwingungen unwahrscheinlicher zu machen.

Das halte ich bei:

Zitat:Original geschrieben von Rumgucker

Beim 2-Zylinder kann ich eigentlich auch mit konstanter Frequenz arbeiten. Ich teile also einen Zyklus in zwei gleich lange Abschnitte. Und in jedem Abschnitt kann sich t_on dann zwischen 0% und 100% austoben, also 0-50% des Zyklusses.

t_off ist dann in konstant die Hälfte eines Zyklusses.

eigentlich für unwahrscheinlich/ausgeschlossen.
 
Wieso?

Durch die neue Interruptstruktur werden t_on und t_off zusätzlich verzögert aktualisiert. Wenn ich dann noch obendrein zum Delay durch zu grobe Stufungen eine erhebliche Hysterese in die Regelschleife einbauen, dann hab ich erfolgreich einen Oszillator gebaut. Das ist ja das Problem in diesem Thread.
 
Hmm, ich hatte das so verstanden, dass t_on=100% = 50% D sind. Somit entfällt das Problem bei D >= 50%.

Aber wenn ich nochmal alles hinterfrage, so verstehe ich:

Zitat: Ich teile also einen Zyklus in zwei gleich lange Abschnitte. Und in jedem Abschnitt kann sich t_on dann zwischen 0% und 100% austoben, also 0-50% des Zyklusses.

anders.

2 Abschnitte = 1 Zylkus.
In jedem Abschnitt kann t_on 0-100% annehmen. Wenn t_on in beiden Abschnitten 100% annimmt ergibt das doch auch 100% im kompletten Zylkus, da für t_off keine Zeit mehr bleibt.


 
Ich versuchs nach "Auto" zu übersetzen....

Ich hab zwei Zylinder. Und ich hab eine Kurbelwelle.

Während einer kompletten Kurbelwellenumdrehung durchlaufen die Zylinder insgesamt vier Takte.

Im ersten Takt "t1" wird Zylinder 1 mit Gas befüllt und Zylinder 2 entladen.

Im zweiten Takt "t2" Zylinder 1 entladen und Zylinder 2 entladen.

Im dritten Takt "t3" wird Zylinder 2 mit Gas befüllt und Zylinder 1 entladen.

Im vierten Takt "t4" wird Zylinder 2 entladen und Zylinder 1 entladen.

Es gilt "t1 = t3" und "t2 = t4" und "t1 + t2 = t3 + t4 = konst".

Daraus folgt, dass "t1" bzw. "t3" zwischen 0 und 50% einer Kurbelwellenumdrehung dauern kann. Und "t2" bzw. "t4" entsprechend zwischen 50% und 0%.

 
"Auto" verstehe ich nicht. klappe
 
Musst Du Dir so vorstellen...

[Bild: Dampfauto.jpg]
 
Ne lass mal.

2 Zyklen sind nicht 4 Takte. Rolleyes
 
Ich hab nie etwas von zwei Zyklen geschrieben. Du hast echt ne Lese-Ladehemmung.

Du kannst Dich im Normalfall drauf verlassen, dass ich fehlerfrei und exakt formuliere, wenn ich technische Abläufe schildere.

Wenn Dir was komisch vorkommt, solltest Du erstmal gaaaanz genau lesen, was ich geschrieben hab. Und nicht das annehmen, was Du meinst.

 
Ich meinte Abschnitte.. Rolleyes


Zitat:Ich teile also einen Zyklus in zwei gleich lange Abschnitte. Und in jedem Abschnitt kann sich t_on dann zwischen 0% und 100% austoben, also 0-50% des Zyklusses.

1 Zyklus = 100% Zeit
2 Abschnitte von 1 Zylkus = 100%/2 = 50% Zeit pro Abschnitt.

Zitat:..in jedem Abschnitt kann sich t_on dann zwischen 0% und 100% austoben

in JEDEM Abschnitt KANN <--

1. Abschnitt -> t_on = 100% von 50% des Zyklus
2. Abschnitt -> t_on = 100% von 50% des Zyklus

Also ist/kann t_on in jedem Abschnitt dauerthaft an -> das macht 100% des Zyklus aus.

Nix da mit 4 Takten.

https://www.youtube.com/watch?v=-3tmvDqiP-c
 
Ein Zyklus = zwei Abschnitte = vier Takte.

 
Aha, na dann mach mal - ist mir echt zu blöd.
 
Zitat:Original geschrieben von christianw.
Aha, na dann mach mal - ist mir echt zu blöd.

Ich hab immer noch das Gefühl, dass Du nicht liest. Also nochmal:


In Takt_1 wird Spule_1 betankt.

Ab Takt_2 wird Spule_1 entladen.

In Takt_3 wird Spule_2 betankt.

Ab Takt_4 wird Spule_2 entladen.

Takt_1 und Takt_2 sind im ersten Abschnitt und kümmern sich um Spule_1.

Takt_3 und Takt_4 sind im zweiten Abschnitt und kümmern sich um Spule_2.

Takt_1 bis Takt_4 bilden einen Zyklus, in dem beide Spulen auf- und entladen wurden.
 
Software soweit fertig. Mach gerade ein wenig Taktzählerei und Feinschliff.

 
Läuft das sauber, ohne Kontrolle über den Zeitpunkt wann der neue PWM-Wert fertig berechnet ist?

Bei mir wars anders rum...die Auflösung der Messung fällt fast nicht auf, 10Bit reichen locker, aber die Zeitpunkte müssen sauber äquidistant sein, sonst schwingt und pfeifft er...

Vmtl ein Tribut an den PID und seine vielfältigen Theoreme...
 
Ich kenn nur diese vier Takte, die ich Christian beschrieben hab. "PWM" mag ich dazu nicht sagen. Ist ja nur einfach BJT anschalten und nen Timer aufsetzen (auf "t_on"). Wenn der Timer abgelaufen ist, gibts nen Interrupt und ich schalte den BJT wieder aus. Erneut Timer anstarten, diesmal mit "t_off". Und das gleiche Spiel dann danach mit dem zweiten Leistungsschalter.

Während des einen Arbeitstaktes wird - gleich zu Beginn und synchron- der Strom der Spule gemessen. Mit voller 10-Bit-Auflösung. Während des anderen Arbeitstaktes - ebenso gleich zu Beginn und synchron - die Ausgangsspannung.

So krieg ich während eines Zyklusses jeweils eine Strom- und eine Spannungsmessung von der ISR, hab also immer frische Werte im Buffer. Der Vordergrund-Formel-Cruncher verrechnet diese Werte und die vor dem Wandlerstart ermittelte Batteriespannung und Sollleistung und bestimmt mit großem 32-Bit-Rechenaufwand "t_on" und "t_off".

Der PI-Regler muss natürlich an diese Rechenzeit angepasst werden. Es spielt sich aber alles noch im Millisekundenbereich ab. Für Christians LED-Betrieb sollte es allemal reichen.

 
Kodiert ist alles

Zitat: Chip = 12F675
RAM: 00h : -------- -------- -------- --------
RAM: 20h : ======== =======. ........ ........
RAM: 40h : ******** ******** ******** ********
RAM usage: 32 bytes (15 local), 32 bytes free
Optimizing - removed 21 instructions (-4 %)
Total of 445 code words (43 %)

Ab morgen gehts los mit den ersten Versuchen.
 
Controller fertig. Schaltung fertig.

Die Stunde(n) der Wahrheit rücken näher... Rolleyes
 
Ich bin baff.

12V Speisung. Exakt 1A Aufnahme. 20V kommen raus. Spulen werden warm. BJT bleiben eiskalt. Sauberer Rechteck. Keinerlei Instabilitäten.

Ich brauch nen Kaffee... misstrau
 
Also das hab ich jetzt gesteckt:

[Bild: 1_1408559123_e_tobi5.png]

Unschwer als 2-Zylinder-Motor zu erkennen:

[Bild: 1_1408559165_e_tobi_3.JPG]

...mit vier Takten pro Kurbelwellenumdrehung. Eine Umdrehung dauert 1 / 430 Hz.

Wir betrachten den ersten Takt am Pin 2 in gelb:

[Bild: 1_1408559224_e_tobi_4.JPG]

In blau sieht man den davon ausgelösten Spulenstrom (500mA/cm). Der Startstrom von rund 300mA zeigt an, dass wir im nicht-lückenden Betrieb sind. Dieser Startstrom wurde vom System gemessen. Bei exakt 1 A endet die Spulenaufladung. Dieser Endzeitpunkt wurde durch Berechnung gefunden! Die Betriebsspannung wurde zuvor vom System gemessen und die Hardware (Induktivität, Shunt, Spannungsteiler) wurden dem System per "defines" vorgegeben.

Ich bin angetan.

Was noch nicht so richtig geht, ist die Sollwertvorgabe per Poti. Aber wir sind ja auch immer noch bei "V0.00"... lachend