www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Phasenverschobene PWM


Autor: I. L. (Gast)
Datum:

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

Autor: heinzhorst (Gast)
Datum:

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

Autor: Mitarbeiter (Gast)
Datum:

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

Autor: Joachim B. (jojo84)
Datum:

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

Autor: I. L. (Gast)
Datum:

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


Sorry


Gruß Knut

Autor: Joachim B. (jojo84)
Datum:

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

Autor: I. L. (Gast)
Datum:

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

Autor: Marcus (Gast)
Datum:

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

Autor: I. L. (Gast)
Datum:

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

Autor: Marcus (Gast)
Datum:

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

Autor: Joachim B. (jojo84)
Datum:

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

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ß

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.