mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 6 synchrone PWM-Kanäle


Autor: Alexander R. (slider-al)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marvin M. (marvin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind ein paar µs wirklich ein Problem?

Autor: Oha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abgesehen davon, dass die XMega nicht lieferbar sind...

Autor: Alexander R. (slider-al)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick Weinberger (seennoob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja mal Assembler würd ich empfehlen dann einen der 2 Timer mit einem 
Wert vor initialisieren und dann haben sie nach dem Start des 2 Timers 
beide den gleichen Wert.

Wenn ich fragen darf warum muss dass so zeitkritisch sein ?

MFG Patrick

Autor: Alexander R. (slider-al)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick Weinberger (seennoob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hört sich ja fast so an wie ein Aufwärtswandler als Zwischenkreis. 
Das eigentliche Leistungsteil soll dann auf den Takt des Wandlers 
synchronisiert werden ?

Was soll der Sinn des ganzen sein ?
Das ersetzen eines PFC vielleicht ?

MFG Patrick

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stichwort Z-Source Inverter
hauptsächlich für Systeme mit stark schwankender Quellenspannung(Solar 
oder BZ Inselsysteme)

Autor: Alexander R. (slider-al)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ak Tronik (aktronik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hoch ist denn die maximale PWM-Frequenz?
Wenn Sie deutlich unter 1MHz oder gar bei 100kHz liegt, kannst Du es mit 
einem AVR in Software realisieren und nach der Sysnchronisirung alle 6 
Kanäle an einem Port ausgeben.

MfG
Ak Tronik

Autor: Alexander R. (slider-al)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Taktfrequenz soll erst mal bei 20kHz liegen. Wie kann man die 
Synchronisierung der Timer denn in Software realisieren?

Autor: Ak Tronik (aktronik)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um mal zu deiner Ausgangsfrage zurückzukehren:
Mit dem Event System kannst du (sofern ich weiß) ein Event mit dem Timer 
Reset verknüpfen. Der Eventkanal hat also keine Source und 2 Sinks. 
Ausgelöst wird das Event durch das Setzen eines Bits im Event System 
selber.

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Timer hängen alle am gleichen Prescaler der beim Start auf off 
steht.
Alle Timer initialisieren und dann den Prescaler auf Wunschwert stellen.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwar nur eine kleinen Blick ins Datenblatt geworfen aber dabei 
finde ich nur ein Register "CTRLA" zum Einstellen des Prescalers.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Henry wrote:
> Ich habe zwar nur eine kleinen Blick ins Datenblatt geworfen aber dabei
> finde ich nur ein Register "CTRLA" zum Einstellen des Prescalers.

Jaha, aber jeder Timer hat (s)ein CTRLA Register. Und der Threadopener 
braucht halt mehrere Timer um 6 PWM Signale erzeugen zu können.

Autor: Alexander R. (slider-al)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe eine software pwm mit 6 kanälen und ca 33kHz auf einem ATTiny 
2313 realisiert (auflösung ist aber nur knapp 7 bit, sprich 0...99)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.