- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 24

Thema: BLDC Regelung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.11.2012
    Beiträge
    10
    Hallo,

    sorry für die späte Antwort. Ich hatte sehr viel zu tun...

    also, wegen dem Kurzschliessen der Motorwicklungen - da habe ich keine neuen Erkenntnisse gewonnen. Ich habe mal versucht, die PWM anders zu implementieren: nun liegt immer ein Anschluss fest auf Masse, der andere ist entweder offen oder auf +. Das hat den Stromverbrauch aber nur unwesentlich beeinflusst -- ist eigentlich ja auch klar, denn beim Motor handelt es sich ja um was induktives, d.h. der Strom fliesst eh noch weiter, wenn die PWM aus ist. Warum der Motor bei 50% duty am meisten Strom verbraucht, ist mir ein absolutes Rätsel. Ich schiebe die "Schuld" mal auf eine nicht so optimale Endstufe (vielleicht shoot through oder sowas).

    Zur Regelung - ich habe jetzt einen Drehgeber am Motor montiert, mit 1024 Inkrementen pro Umdrehung. Damit lässt er sich auch im unteren Drehzahlbereich super einfach regeln. Die Kommutierung läuft weiterhin über die Hallsensoren; ein Hardwaretimer wertet die Drehgebersignale aus. Ca. alle 100ms schaue ich nach, wie viele Inkremente der Timer gezählt hat, und regle dann auf die Anzahl Inkremente - so funktioniert das wunderbar!

    Jetzt komme ich zur feldorientierten Regelung. Meine Endstufe kann bei jedem lowside FET den Strom gegen Masse messen. Geht das so? eigentlich möchte man für eine feldorientierte Regelung ja den Strom in den Phasen kennen.

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    31
    Beiträge
    601
    @bert89: ich arbeite auch gerade an einem Brushlesscontroller mit feldorientierter Regelung. Sieh dir dazu mal von Microchip die AN1078 an (auf deren Basis ich meinen Regler aufbaue), interessant für Schaltplaninspirationen ist auch der "dsPICDEM MCLV Development Board Users Guide".

    Falls du Interesse hast, kann ich dir den Schaltplan meines Reglers zukommen lassen (für den ich gerade die Platine geätzt habe, die Schaltung wurde also noch nicht getestet)!

    Schöne Grüße!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.11.2012
    Beiträge
    10
    Hallo Ikarus,

    danke für den Tipp. Die AN schaue ich mir gleich an! Allerdings habe ich mit der Hardware am allerwenigsten Probleme. Eher Sorgen bereitet mir die Ansteuerung der Brücke! Eben diese Raumzeigermodulation, die ganzen Drehzeigertransformationen etc. Leider wird in der gängigen Literatur alles immer mystifiziert, obwohl es wahrscheinlich nicht soo kompliziert ist. Immerhin habe ich jetzt schon das Schema gezeichnet für eine Hardware incl. Motortreiber, Interface für die Hallsensoren und Drehgeber sowie eine Strommessung in allen 3 Phasen (jeweils am lowside MOSFET).

    Eine Frage taucht auch immer wieder auf -- für die Park-Transformation benötige ich ja den aktuellen Rotorwinkel. Der kann zwischen 0° und 360° liegen, ja? Nun, wie finde ich heraus, wo denn die Position 0° liegt? ich habe nur einen Inkrementaldrehgeber mit A und B Signalen, die mein Mikrocontroller in Hardware schön brav hoch zählt. Ich habe 1024 Inkremente pro Umdrehung, das sollte ja schon recht gut sein, oder?

    Gruss

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    31
    Beiträge
    601
    Ich denke, das ist einfach Definitionssache, soll heißen, wenn du vor Hochlauf des Motors einfach zwei Wicklungen für eine gewisse Zeit bestromst und die dritte offen lässt, müsste das doch dem Winkel 0° entsprechen, oder?

    Eine andere Frage: die Application Note, die ich angesprochen habe, verwendet eine Sensorlose Implementierung, d.h. die Ermittlung des Rotorwinkels für die Park-Transformation geschieht über ein Modell des Motors, welches über einen "Slide-Mode-Controller" an das tatsächliche Motormodell angeglichen wird (über die Rückspeisung eines Korrektursignals). Den Teil, den ich nun nicht verstehe, ist jener, bei dem über Tiefpassfilterung dieses Korrektursignals Z die Back-EMF abgeschätzt wird (siehe ab S.12, im speziellen S. 14 unten). Wieso genau Tiefpassfilterung (das Modell enthält als zusätzlichen Term ja den Korrekturwert, der natürlich im physikalischen Motor nicht enthalten ist - kann man daher die beiden Größen zusammenfassen und die Back-EMF einfach als niederfrequenten Teil auffassen (der die "höherfrequenten" Störungen durch die Adaption des Algorithmus nicht enthält))?

    Schöne Grüße!

    EDIT: so wie es aussieht, verwendet auch die AN1078 für den Anlauf einen vorherige "Ausrichtung" des Stators - zu sehen z.B. auf Figure 1-20 (Seite 17).
    Geändert von ikarus_177 (22.11.2012 um 14:37 Uhr)

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    11.11.2012
    Beiträge
    10
    Hallo Ikarus,

    sorry, mit dem Motormodell habe ich mich bisher nicht befasst. Ich habe in meiner Anwendung Sensoren, d.h. ein Drehgeber und Hallsensoren, daher habe ich mir das gar nie überlegt.
    Aber ich schaus mir nachher an, vielleicht kann ich dir trotzdem ein wenig weiter helfen.
    Dafür kannst du mir auch was verraten

    Oder besser gesagt 2 Dinge.

    1. Mein Drehgeber liefert mir einen Wert zwischen 0 und 1024 für die Rotorposition. Ich habe mir eine Lookuptable gemacht für sin und cos, die grade die 1024 Werte aufnimmt. Zwar hat mein Mikrocontroller eine FPU, aber sin und cos möchte ich dann doch nicht in Echtzeit rechnen müssen So, also, die Clarke und Park Transformation sowie deren Inverse sind jetzt mit dieser Tabelle lauffähig. Ich rechne alles in floating point (weiss zwar nicht ob es nötig ist, Integer würde wohl auch reichen). So, ich messe ia, ib und ic, gehe damit über Clarke zu alpha und beta über, und mit Park erhalte ich d und q. Dann regle ich (das ist der einfachste Teil von allen ) und dann wird mit inverser Parktrafo nach alpha und beta transformiert, mit clarke erhalte ich wieder ia, ib, und ic. Jetzt ist die Frage: wie berechne ich nun aus diesen Werten den Duty cycle für meine PWM? Es ist eine Center aligned PWM mit 10 Bits Auflösung. Mit Hilfe der Hallsensoren kann ich ja den Sektor bestimmen, aber dann?

    2. Wie soll ich die Ströme in den Phasen messen. Zwar kann ich meinen ADC mit den Timern synchronisieren, aber ich möchte zwei Motoren ansteuern, der ADC lässt sich aber nur von einem Timer triggern, was ein bisschen unschön ist..... Hast eine Idee? Ich habe bei jedem lowside FET einen Shunt mit Differenzverstärker. Ich habe mir überlegt, da ein kleines Tiefpassfilter einzubauen, damit der OpAmp die PWM nicht "sieht" und dann so auf den Mikrocontroller zu gehen und einfach "irgendwann" zu messen, durch das Tiefpass kriege ich ja dann so eine Art Mittelwert, der ja auch meinem Strom entspricht. Meinst du, das würde gehen?

    Gruss

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    31
    Beiträge
    601
    Hallo bert89!

    1.) Mit der PWM kannst du ja primär die drei Phasenspannungen ausgeben, eigentlich sollen ja aber die Ströme beeinflusst werden. Nach meinem derzeitigen Verständnis des Themas sollte das aber kein Problem sein, da ja Spannung und Strom nur durch eine konstante Phasenverschiebung getrennt sind (im Idealfall 90°). Soll heißen, du gibst einen um 90° dem gewünschten Stromvektor vorauseilenden Spannungsvektor aus (bitte korrigieren, falls falsch - ist einfach nur so daherüberlegt!).
    Dafür gibt es jetzt mehrere Möglichkeiten (siehe AN955): einerseits die "straightforward"-Methode, bei der du einfach gemäß dem gewünschten Spannungsvektor (resultiert in drei eindeutigen Phasenspannungen) verschiedene Spannungen an die Phasen legst (einfach durch unterschiedliche PWM-dutycycles).
    Zweitens gibt es die Raumzeigermodulation, die lt. AN955 eine bessere Ausnutzung der Zwischenkreisspannung (bzw. DC-Speisespannung) mit sich bringt. Die Raumzeigermodulation ist dort auch gut beschrieben. So wie ich die Grafiken verstehe, benötigt man bei dieser Art als primäre Eingangsgröße nicht die geforderten Phasenspannungen/Phasenströme sondern kann direkt mit alpha und beta arbeiten, wodurch die letzte Rücktransformation obsolet wird (stimmt das?).

    2.) Hmmm, ein Tiefpassfilter erzeugt immer auch eine Phasenverschiebung, die bei höheren Drehzahlen schnell unangenehm werden kann (ich hatte zuvor die klassische Brushlessregelung mit Blockkommutierung versucht; da zeigte sich bei hohen Drehzahlen - die für meinen Quadrocopter unerlässlich sind - eine Verschiebung des Kommutierungszeitpunktes und somit eine Verschlechterung des Wirkungsgrades).
    Andere Frage: welchen Controller/DSP verwendest du? Beim dsPIC33FJMC202 (den ich verwenden werde) lässt sich der ADC über die PWM-Einheit triggern, d.h. es wird in der Mitte jeder PWM-Periode (center-aligned) gesampled. Wenn du dir jetzt einen Controller mit ausreichend vielen PWM-Kanälen für 2 Motoren suchst und alle center-aligned betreibst, kannst du problemlos zum optimalen Zeitpunkt messen.
    Allerdings ist wohl die Rechenleistung, die der ganze Algorithmus braucht, nicht zu unterschätzen (lt. AN1078 ca. 21MIPS für 20kHz-PWM).

    Schöne Grüße!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    11.11.2012
    Beiträge
    10
    Hallo Ikarus,

    ja ich denke deine Aussage über die letzte Rücktransformation dürfte korrekt sein. Wie man nun aber von Alpha und Beta auf die drei Duty Cycles kommt, das verstehe ich noch immer nicht!

    Wegen des Tiefpassfilters. Die Phasenverschiebung dürfte relativ gering sein, da das Filter ja eine Grenzfrequenz von einigen kHz hat, und die Frequenz des Motors ja relativ gering ist (einige 100Hz wohl) dürfte das doch passen. Oder nicht?

    Das Problem ist, dass in dem Lowside Shunt der Strom auch negativ werden kann, d.h. man benötigt eine bipolare Strommessung, was auch recht haarig wird denke ich

    Der Algorithmus ist allerdings nicht so komplex, dünkt es mich; ich benutze einen DSP mit 160 MHz Takt und Floatingpoint Unit. So kann ich die Clarke, Park und deren inverse Transformationen in knapp einer Mikrosekunde rechnen, das passt. Für sin und cos habe ich eine Lookuptable, die auch direkt zur Auflösung meines Drehgebers passt

Ähnliche Themen

  1. Motortreiber für BLDC
    Von SirHonk im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 29.01.2012, 15:29
  2. [ERLEDIGT] Bidirektionaler BLDC ?
    Von PICture im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 14.09.2011, 11:17
  3. [ERLEDIGT] BLDC mit 1V ?
    Von PICture im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 17.06.2011, 17:35
  4. 3 V BLDC's ?
    Von PICture im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 29.03.2011, 18:13
  5. BLDC als Lictmaschine
    Von BlackDevil im Forum Elektronik
    Antworten: 15
    Letzter Beitrag: 23.12.2009, 13:17

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen