Forum: Mikrocontroller und Digitale Elektronik Phasenverschobene PWM


von I. L. (Gast)


Lesenswert?

Moin,

ich möchte gern eine PWM erzeugen. Dabei sollen insgesamt 6 
Steuersignale erzeugt werden, von denen  2 immer komplemtär sind. Also 1 
u. /1 , 2 u. /2 sowie 3 u. /3. Soweit noch ok. Jetzt müssen diese 3 
Signale zueinander 120° phasenverschoben sein. Hardwaremäßig kenne ich 
keinen AVR der das kann...

Habt ihr da eine Idee wie man das bewältigen könnte?
Die Lösung sollte wenn digital auf AVR Basis sein.
CPLD ist leider keine Alternative...




Gruß Knut

von heinzhorst (Gast)


Lesenswert?

Ein DSPIC kann sowas. Gibt's da kein entsprechendes Gegenstück von 
Atmel? Hört sich nach Brushless-Regler an.

von Mitarbeiter (Gast)


Lesenswert?

heinzhorst schrieb:
> Hört sich nach Brushless-Regler an.

Ja, komisch, warum fragt er nicht gleich danach?

Im www gibt es so eine Art Open-Source Projekt zum Thema BLDC mit AVR. 
Muss man nur guggeln.

von Joachim B. (jojo84)


Lesenswert?

Klar kann ein Wald- und Wiesen-AVR das! Du mußt doch einfach nur deine 
Timer versetzt starten. Oder eben die Timer-Register entsprechend 
vorladen.
Beispiel:
Timer_max = 255

TCNT_0 = 0 (0 Grad)
TCNT_1 = 85 (120 Grad voreilend)
TCNT_2 = 170 (240 Grad Voreilend)

Gruß

von I. L. (Gast)


Lesenswert?

Ooops, ich hatte vergessen zu erwähnen das Totzeit und Verriegelung 
integriert sein sollten. Leider kein BLDC...


Sorry


Gruß Knut

von Joachim B. (jojo84)


Lesenswert?

Ah, da wird es ja schon interessanter :)
Ich glaube diese abgefahrenen AT90PWM-Dinger können das. Mußt du grad 
selber mal nachgucken, aber ich meine das mal gelesen zu haben. Mit 
diesem PSC-Modul...
Zu beziehen wären die Dinger bei CSD-Electronics, falls interessant

Gruß

von I. L. (Gast)


Lesenswert?

Joachim B. schrieb:
> TCNT_0 = 0 (0 Grad)
> TCNT_1 = 85 (120 Grad voreilend)
> TCNT_2 = 170 (240 Grad Voreilend)

Wie soll ich denn da dann von 0...100% einstellen?


Gruß Knut

von Marcus (Gast)


Lesenswert?

Kann der AT90PWM3B alles was Du benötigst?

Die nächstbeste Alternative wäre ein PIC für "Motor Control", gibts z.B. 
als PIC18 oder als dsPIC33.

von I. L. (Gast)


Lesenswert?

Bitte korrigiert mich wenn ich falsch liege, aber kann der AT90PWM "nur" 
Totzeit, keinen Versatz? Ich möchte mit 15-20kHz pulsen und 120° also 
max. 22µs versetzt die Signale rausgeben.

Wenn der es nicht kann, dann mach ich es halt auf die herkömmliche 
Methode mit 3 Timern (hallo XMega). In den PIC einzuarbeiten kostet 
leider zu viel Zeit, abwohl die Dinger auch hübsch sind ;-)



Gruß Knut

von Marcus (Gast)


Lesenswert?

Sicher kann der das. Vom Prinzip her werden hier auch 3 Timer 
eingesetzt. Diese sind aber völlig anders zu konfigurieren als sonst 
beim AVR. Daher lasse ich das Argument mit der "langwierigen" 
Einarbeitung in den PIC auch nicht ganz gelten. So oder so wirst Du Dir 
viel neues aneignen müssen.

von Joachim B. (jojo84)


Lesenswert?

Ingo L. schrieb:
> Wie soll ich denn da dann von 0...100% einstellen?

Oh, ich hatte wohl überlesen, daß das auch ein Kriterium sein soll... 
Auch ne, es stand ja bisher nirgends...

Was meinst du denn eigentlich? 0-100% duty-cycle oder 0-100% 
Phasenverschiebung?
Duty-Cycle: naja, den passenden Wert in das Compare-Register des 
jeweiligen Timers laden (z.B. OCRx oder so).
Phasenverschiebung: die Zählregister ein das jeweilige Verhältnis 
zueinander setzen (TCNT).
Wenn es sowas gäbe (ich wüßte aber grad nicht wo) wäre das sogar mit 
einem Timer und drei Compare-Registern in Hardware machbar...

zum Versatz: hm, ich seh das Problem nicht. Bei der Methode mit dem 
zeitversetzten Starten der Timer (oder gleichzeitiges Starten mit 
vorgeladenen Zählerregistern) hat man doch alles was man möchte :)

Vielleicht ist dieses Projekt interessant für dich:
http://www.mikrocontroller.net/articles/Frequenzumrichter_mit_Raumzeigermodulation

Da find ich den eingesetzten Brückentreiber echt praktisch, weil der das 
Erzeugen der Totzeit und das Invertieren der Signale übernimmt...
Vielleicht inspiriert dich das ja :)

Gruß

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
Noch kein Account? Hier anmelden.