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
Ein DSPIC kann sowas. Gibt's da kein entsprechendes Gegenstück von Atmel? Hört sich nach Brushless-Regler an.
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.
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ß
Ooops, ich hatte vergessen zu erwähnen das Totzeit und Verriegelung integriert sein sollten. Leider kein BLDC... Sorry Gruß Knut
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ß
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.