14.07.2013, 03:54 PM
Ich habe mal Tiny-Datenblätter gewälzt und etwas gehirnt...
Eine erste Idee, Wie oben angedeutet mit Hochsetzsteller und zusätzlicher Drossel vor dem Trafo um die Stromregelung langsam machen zu können.:
Es kommt ein Tiny 87/167 zum Einsatz. Timer0 (8bit) löst den Regelinterrupt aus, Timer1 (16bit) macht die PWM. Der ADC hat 11 Kanäle von denen wir 3 brauchen. Ein Analog-Komparator ist auch vorhanden.
Es werden 3 Spannungen gesampelt.
-Eine auf +-2.5V geteilte und dann um 2.5V hochgesetzte Netzspannung als Stromsollwert
-Die um einen sinnvollen Wert geteilte Zwischenkreisspannung
-Die Ausgangsspanung vom Stromwandler. Selbige liegt für 0A bei 2.5V.
Das Netz am Trafo wird per Relais zugeschaltet.
Der Hochsetzsteller für den Zwischenkreis wird Current-Mode geregelt. Wenn der PWM-Counter (für die eigentliche Brücken-PWM) an TOP stößt, wird ein Interrupt ausgelöst und der Hochsetzsteller-FET angeschaltet. Um erstmal Rechenzeit zu sparen, wird der zugehörige PI-Regler diskret aufgebaut. Dessen Ausgang und der Spannungsabgriff am Shunt liegen an einem AnalogCompare-Pinpaar. Überschreitet die Spannung am Shunt die Reglerspannung wird wieder ein Interrupt ausgelöst und der FET abgeschaltet.
Der Zwischenkreis läuft also nach dem ersten Einschalten des FETs von alleine auf seine Sollspannung. Ist diese erreicht, kann ich im Controller den Trafostromsollwert langsam hochfahren. Sinkt die Zwischenkreisspannung unzulässig weit ab, kann ich den Stromsollwert verringern, oder in einen UVLO-Zustand gehen.
Den Trafo-Sollstrom würde ich direkt per ohmschen Spannungsteiler (mit 50mA Sicherung davor und Begrenzerdioden dahinter) aus dem Netz ableiten.
Das Spannungssampling kann man Hauptprogramm machen, da das eigentlich nur aus Wartezeit besteht. Eine Single-Conversion dauert 13 ADC-Takte. Bei einem Controller-Takt von 14,7MHz und einem Teiler von 64 sind das 230kHz. Daraus resultieren 57us pro Konversion bzw. 171us für 3.
Im Regelinterrupt kann ich dann direkt auf die in Variablen gespeicherten Werte der Spannungen zugreifen.
Angenommen wir bräuchten jetzt 10000 CPU-Zyklen, dann wären das insgesamt ca. 680us für den Regelinterrupt. Lässt man den mit 1kHz laufen bliebe auch noch Zeit für andere Aufgaben. Ich werde mal VMLAB ausgraben
Die Anschlüsse am Controller wären wie folgt belegt (1x UART und 1x SPI dauerhaft zugänglich):
1 ? RXD
2 ? TXD
3 ? MISO (SPI)
4 ? ADC3 (eine der 3 Spannungen)
5 ? AVCC
6 ? AGND
7 ? MOSI (SPI)
8 ? SCK (SPI)
9 ? nSS (SPI) // AIN0
10 ? AIN1
11 ? ADC10 (eine der 3 Spannungen)
12 ? ADC9 (eine der 3 Spannungen)
13 ? XTAL2
14 ? XTAL1
15 ? VCC
16 ? GND
17 ? IO-Relais
18 ? IO-FET
19 ? NC
20 ? OC1AU (Brücken-PWM)
Eine erste Idee, Wie oben angedeutet mit Hochsetzsteller und zusätzlicher Drossel vor dem Trafo um die Stromregelung langsam machen zu können.:
Es kommt ein Tiny 87/167 zum Einsatz. Timer0 (8bit) löst den Regelinterrupt aus, Timer1 (16bit) macht die PWM. Der ADC hat 11 Kanäle von denen wir 3 brauchen. Ein Analog-Komparator ist auch vorhanden.
Es werden 3 Spannungen gesampelt.
-Eine auf +-2.5V geteilte und dann um 2.5V hochgesetzte Netzspannung als Stromsollwert
-Die um einen sinnvollen Wert geteilte Zwischenkreisspannung
-Die Ausgangsspanung vom Stromwandler. Selbige liegt für 0A bei 2.5V.
Das Netz am Trafo wird per Relais zugeschaltet.
Der Hochsetzsteller für den Zwischenkreis wird Current-Mode geregelt. Wenn der PWM-Counter (für die eigentliche Brücken-PWM) an TOP stößt, wird ein Interrupt ausgelöst und der Hochsetzsteller-FET angeschaltet. Um erstmal Rechenzeit zu sparen, wird der zugehörige PI-Regler diskret aufgebaut. Dessen Ausgang und der Spannungsabgriff am Shunt liegen an einem AnalogCompare-Pinpaar. Überschreitet die Spannung am Shunt die Reglerspannung wird wieder ein Interrupt ausgelöst und der FET abgeschaltet.
Der Zwischenkreis läuft also nach dem ersten Einschalten des FETs von alleine auf seine Sollspannung. Ist diese erreicht, kann ich im Controller den Trafostromsollwert langsam hochfahren. Sinkt die Zwischenkreisspannung unzulässig weit ab, kann ich den Stromsollwert verringern, oder in einen UVLO-Zustand gehen.
Den Trafo-Sollstrom würde ich direkt per ohmschen Spannungsteiler (mit 50mA Sicherung davor und Begrenzerdioden dahinter) aus dem Netz ableiten.
Das Spannungssampling kann man Hauptprogramm machen, da das eigentlich nur aus Wartezeit besteht. Eine Single-Conversion dauert 13 ADC-Takte. Bei einem Controller-Takt von 14,7MHz und einem Teiler von 64 sind das 230kHz. Daraus resultieren 57us pro Konversion bzw. 171us für 3.
Im Regelinterrupt kann ich dann direkt auf die in Variablen gespeicherten Werte der Spannungen zugreifen.
Angenommen wir bräuchten jetzt 10000 CPU-Zyklen, dann wären das insgesamt ca. 680us für den Regelinterrupt. Lässt man den mit 1kHz laufen bliebe auch noch Zeit für andere Aufgaben. Ich werde mal VMLAB ausgraben
Die Anschlüsse am Controller wären wie folgt belegt (1x UART und 1x SPI dauerhaft zugänglich):
1 ? RXD
2 ? TXD
3 ? MISO (SPI)
4 ? ADC3 (eine der 3 Spannungen)
5 ? AVCC
6 ? AGND
7 ? MOSI (SPI)
8 ? SCK (SPI)
9 ? nSS (SPI) // AIN0
10 ? AIN1
11 ? ADC10 (eine der 3 Spannungen)
12 ? ADC9 (eine der 3 Spannungen)
13 ? XTAL2
14 ? XTAL1
15 ? VCC
16 ? GND
17 ? IO-Relais
18 ? IO-FET
19 ? NC
20 ? OC1AU (Brücken-PWM)
Zitat:Sollstromerfassung
Zitat:Hochsetzsteller
Zitat:Brücke - Achtung, nPWM muss per Inverter erzeugt werden und es fehlt eine Drossel vor dem Trafo
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.