6 synchrone PWM-Kanäle

OP #1201941
Lesenswert?
• ▲
▼
Hallo,

ich habe vor 3 Wochen ein Projekt an meiner Uni begonnen: Es soll ein 
Steuergerät für eine neue Umrichter-Topologie mit einem Mirkocontroller 
entworfen werden. In Sachen Mikrocontroller bin ich noch ein Neuling.

Nun meine Frage:

Ich benötige 6 synchrone PWM-Kanäle. Ich werde für diese Aufgabe den AVR 
XMEGA128A verwenden. Da sollten dann 2 Timer für die 6 PWMs reichen. Ich 
frage mich nun bloß, wie ich die Timer gleichzeitig loslaufen lasse.
Eigentlich hätte ich die beiden Timer hintereinander initialisiert, aber 
zwischen den Initialisierungen vergeht ja Zeit.

Die XMEGA Familie bestizt nun ein Event-System und ich habe 
aufgeschnappt, dass dies mein Problem wohl lösen könnte. Nachdem ich mir 
das Datenblatt angeschaut hab, weiß ich aber nicht, wie mir das 
Event-System weiterhilft.

Hat jmd eine Idee, wie ich 2 Timer so synchron wie mölgich loslaufen 
lassen kann?

Danke schon mal vorab
OP #1201973
Lesenswert?
• ▲
▼
Also den mikrocontroller hab ich schon. Ich hab ihn aber nicht selber 
besorgt. Ich kann mich aber mal schlau machen wo er aufgetrieben wurde 
wenn interesse besteht...

und us wären auf jeden Fall problematisch. Etwas im Bereich 100ns wär 
wohl ok, aber besser wäre auf jeden Fall, wenn die Timer komlpett 
synchron loslaufen würden.
OP #1202018
Lesenswert?
• ▲
▼
oh oh. ich wollte das eigentlich in C programmieren und mich vor 
Assembler drücken. Hmmm. mal kucken.

Der Clue bei dem Umrichter is, dass der Zwischenkreis absichtlich 
kurzgeschlossen wird. Eine Drossel begrenzt den Stromanstieg. So kann 
die Zwischenkreisspannung am Kondensator höher werden als die 
gleichgerichtete Netzspannung. Mann will aber natürlich nicht zu lange 
Kurzschließen, da die Drossel ja irgendwann in Sättigung geht. Die 
Kurzschluss-Zeiten sollen vorgegeben werden und können auch sehr kurz 
sein. Deswegen sind synchrone PWMs schon wünschenswert.
OP #1202068
Lesenswert?
• ▲
▼
Der Umrichter ist hauptsächlich dafür gedacht, Netzspannungseinbrüche zu 
kompensieren, also eine Last (z.B. Motor) trotz zu geringer Netzspannung 
im Nennpunkt zu betreiben. Eine Lsg. dazu ist ein Active-Front-End 
Umrichter(AFE), bei dem der Gleichrichter als Hochsetzsteller fungieren 
kann. Der Umrichter, um den es bei mir geht (Z-Source-Umrichter) soll 
eine alternative dazu sein. Die Drossel im ZK hat auch den angenehmen 
Nebeneffekt, dass Kurzschlüsse des ZK keine Zerstörung der Transistoren 
und Elkos mit sich bringen.

Die Frage mit der Synchronisation hab ich nicht verstanden. Es werden 6 
Transitoren durch die PWM-Signale angesteuert. Die PWM-Signale hängen 
von dem gewünschtem Betriebspunkt (Spannung und Frequenz), von der 
ZK-Spannung, sowie von Netzstrom und Netzspannung ab.

Kann es sein, dass ich die Timer beim XMEGA durch ein Event starten 
kann, und sie desewgen gleichzeitig loslaufen? Ich werd einfach nicht 
schlau aus diesem Datenblatt...
#1202129
Lesenswert?
• ▲
▼
Ups, hab mich verrechnent.
Bei 20Mhz und 8Bit Auflösung bei 6 Kanälen geht ca. 10kHz.

>Wie kann man die Synchronisierung der Timer denn in Software realisieren?

Du brauchst nur einen Timer-Interrupt der Deine PWM-Funktion aufruft, in 
der Du den aktuellen Zustand deiner PWM-Kanäle in einem Byte ablegst und 
mit OUT in den Ausgangs-PORT schiebst.

MfG
Ak Tronik
Gast #1202319
Lesenswert?
• ▲
▼
Also fuer Umrichterapplikationen wuerde ich eher einen Controller 
verwenden, der besser fuer Signalverarbeitung optimiert ist. 
Insbesondere passende A/D converter und PWM-Aufloesung.
siehe PICCOLO -> 
http://www.ti.com/corp/docs/landing/f280xx-piccolo/index.htm
Besitzt einen sogenannten Action-Qualifier mit dem man verschiedene 
Ereignisse ohne CPU Einwirkung miteinander zu verschalten kann. Die PWM 
hat eine Aufloesung von 150ps !
Persönliche Seite #1202383
Lesenswert?
• ▲
▼
Henry wrote:
> Die Timer hängen alle am gleichen Prescaler der beim Start auf off
> steht.
> Alle Timer initialisieren und dann den Prescaler auf Wunschwert stellen.

Welche Timer? Beim ATxmega hat jeder Timer einen eigenen Prescaler. Man 
kann aber nicht in zwei Registern den Prescaler zum gleichen Zeitpunkt 
setzen und deswegen hat man so keine synchronen PWMs.
OP #1203066
Lesenswert?
• ▲
▼
Also so wie ich das jetzt sehe funktioniert das mit dem Eventsystem. 
Erst initialisiere ich die Timer. Dann kann ich durch ein Event, die 
Timer neu starten. Wenn der Neustart von zwei Timern durch das gleiche 
Event erzeugt wird laufen diese dann hoffentlich auch gleichzeitig 
wieder los. Wenn ich so weit bin werd ich mal ein Feedback geben obs 
geklappt hat.

@ Josef: ich bin mir sicher, dass es Mikrokontroller gibt, die für die 
Aufgabenstellung viel besser geeignet sind. Mit nem DSP wäre das ganze 
wohl auch noch besser zu realisieren.
Nachdem ich aber ein blutiger Anfänger bin wollt ich in C programmieren 
und vorzugweise auch mit einem AVR-Controller, da ich von Atmel bisher 
nur gutes gehört hab und das AVR-Studio für Anfänger einfach genial is. 
Ob das ganze dann mit dem XMEGA gut funtionieren wird kann ich gar nicht 
einschätzen. Ich werds aber rausfinden :)

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