Software PLL mit AVR

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 25 11 2024  23:23:43      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Software PLL mit AVR

    







BID = 339854

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz
 

  



Hallo Zusammen

Mein Brushlesstreiber läuft mittlerweile Hardwaremässig tip top. Die Software macht aber noch etwas Kopfzerbrechen. Es funktioniert eigentlich schon ganz gut, eine alte Festplatte läuft als Testmotor stabil mit voller Drehzahl.

Nun kämpfe ich aber noch etwas mit einer guten Regelung der Kommutationsfrequenz. Ich habe im Moment etwas wie eine Software PLL gebaut, je nach Phasenlage der Rotorposition erhöht oder vermindert sich die Kommutationsfrequenz. Nur bin ich mit der Dynamik des Antriebs noch nicht wirklich zufrieden, die Platte dreht nicht so schnell hoch wie sie könnte und bei sehr schnellen Lastwechseln fällt sie gelegentlich aus der Synchronisation.

Weiss jemand wo ich gute Infos finde wie man Softwarebasierte Regler und Dinge wie PLL entwickelt? Ein Buch oder ähnlich wäre ideal...

BID = 341988

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz

 

  


Habs hinbekommen, der PLL hat jetzt einen PI-Regler bekommen und lässt sich durch nichts mehr aus der Synchronisation werfen. Falls mal jemand vor dem selben Problem steht und einen Brushlessmotor ansteuern muss. Alle anderen arten von "Regelkreis" haben zwischen ziemlich und ziemlich kläglich versagt.

BID = 346573

cholertinu

Inventar



Beiträge: 3755
Wohnort: CH


Wie hast du es realisiert? Eine kurze Beschreibung ist erwünscht! Evtl. mit Skizze/Schaltplan.

[ Diese Nachricht wurde geändert von: cholertinu am  3 Jul 2006 13:55 ]

BID = 347102

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz


Was genau möchtest du? einen Schaltplan für den Brushlesscontroller oder eine Beschreibung der Software? Die Software ist immer noch in Entwicklung, etwas fertiges an dem du nicht weiterarbeiten müsstest kann ich noch nicht anbieten. Die grundlegende Funktion ist aber schon recht stabil.

Die Regelung funktioniert grob so:

Die Kommutation wird durch einen 16 bit timer durchgeführt der sich jeweils beim compare match resettet und dabei um einen Zyklus weiterschaltet. Die Kommutationsfrequenz ist also durch den Wert eines compare registers definiert (wenn auch auf nichtlineare Weise was aber in dem Fall nicht so tragisch ist) Ich messe dann jeweils die Phasenlage des Gegen-EMK Nulldurchgangs und vergleiche diese mit dem geplanten Kommutationszeitpunkt durch Subtraktion. So erhalte ich den Phasenfehler des Rotors im Vergleich zum Drehfeld. Praktischerweise skaliert der absolute Fehler mit der Drehzahl so das er direkt als Proportinalkoeffizient(mit einem konstanten Gainfaktor multipliziert) im Regler verwendet weden kann ohne dass ich über den Winkelfehler rechnen müsste (wenn man das mal auf Papier schreibt sieht man warum) zudem nehme ich einen kleinen Anteil des Fehlers für die Integralkorrektur so dass der Regelkreis nach kurzer Zeit eine Abweichnug von 0 erreicht. So kommutiert sich der Motor von selbst präzise wenn die Regelung eingerastet ist.

das entsprechende Codestück das dies tut sieht so aus:

crossing enthält den Timerwert bei dem die Gegen-EMK den Nulldurchgang hatte, base ist der Anteil von OCR1A welcher durch den I-Regler modifiziert wird und der schon so nahe wie möglich am richtigen Wert dran sein sollte und so nur noch eine geringe Proportionalkorrektur erfordert. Die ganze Regelung ist durch die Kommutationsfrequenz getaktet (steckt in einer Interruptroutine die durch den compare match ausgeführt wird), erhält also so eine drehzahlabhängige Zeitkonstante was ein gutes Regelverhalten über den ganzen Drehzahlbereich ergibt.


Code:
-----

phase_error= crossing-(OCR1A>>1); // right shift = Division durch 2 ( Gegen-EMK Nulldurchgang wird 30° von der Kommutation entfernt erwartet)
OCR1A = base+phase_error/3;
base=base+(phase_error/32)


Die Faktoren 1/3 und 1/32 definieren die Regeldynamik und müssen am besten experimentell festgestellt werden, anhand des Verhaltens des vorliegenden Motors um eine optimale Regelung zu bekommen.


[ Diese Nachricht wurde geändert von: photonic am  5 Jul 2006  1:23 ]


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 15 Beiträge verfasst
© x sparkkelsputz        Besucher : 182400133   Heute : 7331    Gestern : 7548    Online : 651        25.11.2024    23:23
5 Besucher in den letzten 60 Sekunden        alle 12.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0194990634918