Forum: Mikrocontroller und Digitale Elektronik BLDC in beide Richtungen drehen lassen


von Walter (Gast)


Lesenswert?

Hi Leute,
so ich beschäftige mich wieder mal mit dem Thema BLDC.
Ich habe eine schöne Treiberstufe gebaut mit MOSFETs. Dazu noch eine 
kleine Leiterplatte mit nem Controller, und damit steuere ich jetzt 
einen BLDC an.
Im Moment lasse ich den Controller noch auf die Hallsensoren pollen, und 
beim entsprechenden Status der Hallsensoren werden die Wicklungen 
dementsprechend geschaltet. Das funktioniert auch, die Drehzahl lässt 
sich (per PWM) einstellen, und das Teil macht 12000 Touren. Allerdings 
dreht der Motor nur links rum. Ich möchte ihn aber in beide Richtungen 
drehen können!

Also, beim Drehen in die eine Richtung lege ich die Signale wie folgt 
an:

Hallsensor   Phase
1 2 3        U V W
----------------------
1 0 1        + -
1 0 0        +   -
1 1 0          + -
0 1 0        - +
0 1 1        -   +
0 0 1          - +

So, damit dreht der Motor wie gesagt ganz ordentlich. In welcher 
Reihenfolge muss ich denn den Motor bestromen, dass er in die 
entgegengesetzte Richtung dreht?
Und, noch eine reine Verständnisfrage: warum dreht sich der Motor nicht 
mehr, wenn ich zwei Phasen vertausche? Eigentlich müsste er ja dadurch 
die Richtung umkehren. Allerdings tut er das nicht; vielmehr bleibt er 
immer an einer bestimmten Position stehen.

von Oliver (Gast)


Lesenswert?

>Und, noch eine reine Verständnisfrage: warum dreht sich der Motor nicht
>mehr, wenn ich zwei Phasen vertausche?

Die Hall-Sensoren hast du auch entsprechend mitgetauscht?

Oliver

von Walter (Gast)


Lesenswert?

Sollte der Motor nicht unabhängig davon drehen?

von Pieter (Gast)


Lesenswert?

moin moin,

lade Dir mal das Datenblatt zum SI9979, da ist das mit einer Tabelle 
erläutert.

Pieter

von Walter (Gast)


Lesenswert?

Danke, es läuft!

von Axel R. (Gast)


Lesenswert?

Walter schrieb:
> Danke, es läuft!

Super, lag es tatsächlich am R4?

von Gast (Gast)


Lesenswert?

>Super, lag es tatsächlich am R4?

Ja, der war verkehrt herum eingelötet.

von Walter (Gast)


Lesenswert?

Neeee, meine Kommutierungsreihenfolge war nicht ganz richtig.
Wenn es euch interessiert kann ich ja noch paar Codeschnipsel und 
Oszibilder posten.

von Axel R. (Gast)


Lesenswert?

Schön! raus damit, lass dich nicht lange bitten ;-))

von Tueftler86 (Gast)


Lesenswert?

Hallo
Hast du jetzt die Hardware geaendert, um die Richtung zu aendern?

Ich dachte sofwaremaessig kann man das dadurch erreichen, dass man die 
Bestromung der Phasen um 180Grad verschiebt, gegen die Hallsensor 
Signale. Also indem du anstelle des ersten Musters das dritte einstellst 
und ausgibst.
gruss Tueftler86

von Axel R. (Gast)


Lesenswert?

> um 180Grad verschiebt, gegen die Hallsensor Signale.

Wie soll das denn bitte gehen, oder denke ich falsch?
Wenn du den Motor 180°gegen die Hallsignale drehen lässt, ändert sich 
doch
automatisch auch die Richtung der Hallsignale, oder nicht??
Und schon bist du wieder in Phase mit den Signalen.

von Tueftler86 (Gast)


Lesenswert?

also die hallsignale sind einzig von der Rotorstellung abhaengig, und um 
ein Moment in die entgegengesetzte Richtung zu erzeugen, laesst du den 
Strom in die andere Richtung fliessen. Wenn du oben in die Tabelle 
guckst, siehst du dass dieser vorgang genau einer Verschiebung um 3 
"Takte" entsrichts. Du ordnest also bei Vorwaerts der 
Hallsensorkombinationnummer "eins" die erste Phasenansteuerung zu. Bei 
Rueckwaerts hingegen die dritte Phasenansteuerung.
Dachte ich.
Gruss Tueftler86

von Simon K. (simon) Benutzerseite


Lesenswert?

Wenn man die Seqeuenz als Array gespeichert hat, dann kann man einfach 
das Array von hinten nach vorne durchspulen, statt von vorne nach hinten 
;)

von Hagen R. (hagen)


Lesenswert?

wenn du vorwärts die Phasen/Hallsensoren A,B,C bestromst und änderst das 
ab zb. in A,C,B dann dreht der Motor in die andere Richtung. Also nicht 
nur einfach verschieben sondern 2 Phasen samt Hallsensoren vertauschen.

von Gast (Gast)


Lesenswert?

Verstehe nicht genau wie du das meinst, bei obiger tabelle wuerde das 
jedenfalls nicht so funktionieren.
Meiner Meinung nach muss man die Phasen umpolen bei gleicher 
Hallinformation.
Eleganter geht das Phasenansteuern finde ich noch, indem man zwei 
nebeneinander gesetzte bits durch ein Register shiftet, muss man aber 
noch den Uebertrag nach dem 6.Bit beachten.

von Gast (Gast)


Lesenswert?

hab mich auf Simon bezogen.

@ Hagen: Fuehr doch mal etwas verstaendlicher aus, wie du das meinst.
wenn du dir obige Tabell anschaust, wirst du feststellen, dass wenn man 
anstelle der ersten Kombination aus der Tabelle (fuer die phasen) die 
dritte raussuchst, der Strom in die entgegengesetzte Richtung fliesst 
und damit auch das Moment umgekehrt wird.
Oder verstehe ich da was falsch?

von Hagen R. (hagen)


Lesenswert?

Hallsensor   Phase
1 2 3        U V W
----------------------
1 0 1        + -
1 0 0        +   -
1 1 0          + -
0 1 0        - +
0 1 1        -   +
0 0 1          - +

1 0 1        +   -
1 0 0        + -
1 1 0          - +
0 1 0        -   +
0 1 1        - +
0 0 1          + -

Vergleiche mal beide Tabellen UVW -> UWV

U ist sagen wir mal unsere absolute Position. Jenachdem ob man als 
nächstes V oder W bestromt wird die Drehrichtung beeinflusst. Die 
Hallsensor Tabelle habe ich jetzt mal nicht verändert.

Übrigs findet man bei Atmel ne ganze Menge an AppNotes + Source in denen 
man das nachlesen kann.

Gruß Hagen

von Hagen R. (hagen)


Lesenswert?

>Meiner Meinung nach muss man die Phasen umpolen bei gleicher
>Hallinformation.

Korrekt, oder Phasen gleichlassen und Hallssensoren austauschen. Wobei 
immer nur 2 der 3 Hallesensoren/Phasen ausgetauscht werden dürfen.

Umpolen suggeriert hier in die falsche Richtung, besser vertauschen da 
die Polung/Bestromung im Grunde gleichbleibt.

Wenn man also einfach 2 Strippen des BLDC austauscht dreht er in die 
andere Richtung. Abhängig von der Art der Hallsensoren, sprich Winkel, 
muß man dann auch bei denen noch in Software was ändern.

Gruß Hagen

von df1as (Gast)


Lesenswert?

Macht ihr das kompliziert ...

Wie ändert man denn bei einem gewöhnlichen DC-Motor die Drehrichtung? 
Aha - umpolen! Das gilt natürlich auch für den BLDC.

Wenn das hier für den Rechtslauf gilt:

Hallsensor   Phase
1 2 3        U V W
----------------------
1 0 1        + -
1 0 0        +   -
1 1 0          + -
0 1 0        - +
0 1 1        -   +
0 0 1          - +

... sieht der Linkslauf ganz einfach so aus:

Hallsensor   Phase
1 2 3        U V W
----------------------
1 0 1        - +
1 0 0        -   +
1 1 0          - +
0 1 0        + -
0 1 1        +   -
0 0 1          + -

von Chris B. (cbb)


Lesenswert?

Hi zusammen,

obwohl es schon älter ist, antworte ich hier mal.
Beim letzten Post ist noch zu beachten, dass die Hallsensorwerte so 
NICHT
auftreten werden, sondern die Werte werden Rückwärts "durchlaufen" und 
nicht vorwärts...Und etwas an den Hallsensoren verändern von der 
Verkabelung ist meiner Meinung nach nicht notwendig...

grüße

von alex (Gast)


Lesenswert?

Hallo, ich möchte mich hier nochmal einklinken weil ich trotz der vielen 
guten Anregungen immer noch nicht völlig durchblicke.
Aus folgendem Grund.
Grundsätzlich würde ich zur Drehrichtungsumkehr einfach 2 Phasen 
tauschen. Soweit so gut.
Hier mal eine aktuelle Tabelle für Rechtslauf aus meinem UNI-Skript:

Schritt    U  V  W
  1           +  -
  2        -  +
  3        -     +
  4           -  +
  5        +  -
  6        +     -

Dies entspricht der Linkslauf-Tabelle von Walter mit der Einschränkung, 
dass die Ansteuerung um 3 Schritte verschoben ist.
Wie das funktionieren soll ist mir völlig unklar:
Wenn ich mir für jeden Schritt den Motor mit seinen Wicklungen 
aufzeichne:

        U1
     V2    w2
     W1    V1
        U2

Dann dreht doch mein Feld in diesen Wicklungen immer rechts rum.
Selbst den Linkslauf kann ich mir hiermit nicht erklären, auch wenn 
deine Tabelle sicher richtig ist:
Beispiel Linkslauf:

Schritt 1: U1&V2 sind "aktiv"
Schritt 2: W2&U1
Schritt 3: V1&W2......

Will damit sagen, auf meiner Motoren-Uhr wandert mein Feld außen RECHTS 
rum. Wie kann dann der Rotor links drehen??
Ich bin völlig verwirrt.

Die einzig sinnvolle Lösung für linkslauf wäre für mich die Tabelle 
einfach von Schritt 6-1 zu durchlaufen, dann würde mein Feld außen in 
die andere Richtung drehen...

Vielleicht hilft mir jemand aus meiner Verwirrung, nächste Woche ist 
Klausur =)

von alex (Gast)


Lesenswert?

Vielleicht noch um meine Verwirrung komplett zu machen:
Den Sprung von Schritt 1 zu Schritt 2 bei linkslauf entspricht dann 
Schritt 5 zu Schritt 6 bei Rechtslauf.
Danach geht's wieder von vorne los, es werden also dich gleichen 
Schritte abgearbeitet - egal ob rechts oder links - nur mit einem 
Versatz von 180°
Wieso dreht der Rotor dann beim gleichen Sprung einmal nach rechts und 
links?

von peter (Gast)


Lesenswert?

hmmm.
jetzt steh ich auch auf dem schlauch.
Für rechtslauf und linkslauf die gleiche schrittabfolge???

von Axel R. (Gast)


Lesenswert?

Pol doch einfach die zweii Draehte endlich mal um und Berichte, ob es 
nun geht oder nicht.

von alex (Gast)


Lesenswert?

ich hab nix zu umpolen... =)
mir erschließt sich nur die Vorgehensweise nicht so ganz...
vielleicht bringt mal wer licht in mein dunkel...

von nicht "Gast" (Gast)


Lesenswert?

>ich hab nix zu umpolen... =)

Genau so etwas dachte ich mir auch fast. Machst hier alle verrückt.

Isch 'aben gargein audo.

von alex (Gast)


Lesenswert?

was soll das denn jetzt?
es war nur ne frage, da ich die Thematik nicht ganz verstanden hab...
wenns mir keiner erklären kann und nur doofe antworten kommen dann lass 
ich das hier sein.
danke.

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.