Forum: Mikrocontroller und Digitale Elektronik Artikel: Brushless-Controller für Modellbaumotoren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Urban B. (kami89)


Lesenswert?

Hallo,

Ich habe einen Artikel zum Thema "Brushless-Controller für 
Modellbaumotoren" geschrieben, da ein solcher Regler doch schon ein 
relativ beliebtes Projekt geworden ist, vorallem natürlich bei den 
Modellbau-Fans.

Brushless-Controller für Modellbaumotoren

Das ist mein erster Artikel, und es gibt bestimmt noch einiges zu 
verbessern. Ich freue mich über Kritik und Anregungen, oder natürlich 
auch wenn der Artikel von den Profis an der einen oder anderen Stelle 
gleich selbst noch angepasst wird.

Es gibt auch ein paar Punkte im Artikel, bei denen mein aktueller 
Wissensstand nicht ausgereicht hat um eine sichere Aussage zu machen. An 
diesen Stellen habe ich auch gleich (mit fetter Schrift) darauf 
hingewiesen.

Ich hoffe es gibt hier Leute, die sich noch etwas besser mit den 
BLDC-Reglern auskennen und diese schwierigen Themen noch erläutern 
könnten.

mfg
Urban

EDIT: Wie kann ich den Artikel einer Kategorie zuordnen? Irgendwie kann 
ich kein Link dafür funden...

von Simon K. (simon) Benutzerseite


Lesenswert?

Sehr schön! Auch mit den Oszilloskopbildern. :-)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Cool! Schöner Artikel !
Bin heute über einen BLDC Controller mit STM32 gestolpert:

http://danstrother.com/2011/01/12/brushless-dc-motor-controller-board/

Man kann übrigens mit Space Vektor Modulation ( Sinus Ansteuerung ) doch 
ganz schön Strom sparen und Geräusche verringern. Ich nehme zum Starten 
von sensorlosen Motoren übrigens gerne eine Art variablen 
Frequenzantrieb, wo die 6 verschiedenen States der Spulen mit niedriger 
PWM durchgeklappert werden (mit einem Timer) bis die BEMF zum Messen 
ausreicht.

von Urban B. (kami89)


Lesenswert?

Danke, schön dass euch der Artikel gefällt :-)

@Matthias
Interessanter Regler mit dem STM32! Scheint aber halt weniger für den 
Modellbaubereich gemacht zu sein.

> Man kann übrigens mit Space Vektor Modulation ( Sinus Ansteuerung ) doch
> ganz schön Strom sparen und Geräusche verringern.
Okay, das hätte ich nicht gedacht. Werde das dann wohl noch an 
geeigneter Stelle in den Artikel einfügen, ist gut sowas zu wissen.

> Ich nehme zum Starten
> von sensorlosen Motoren übrigens gerne eine Art variablen
> Frequenzantrieb, wo die 6 verschiedenen States der Spulen mit niedriger
> PWM durchgeklappert werden (mit einem Timer) bis die BEMF zum Messen
> ausreicht.
Sowas hab ich eben auch schon gelsesn. Also während dem Abklappern 
bewegt sich der Rotor nicht oder? Dann gehst du die 6 States durch, und 
merkst dir bei jedem State wie hoch die BEMF war. Und am Schluss, nach 
dem 6x Abklappern, schaust du wo die höchste BEMF war und kannst daraus 
schliessen in welchem State du den Motor starten musst. Habe ich das so 
richtig verstanden? Und wie startest du dann genau, direkt im geregelten 
Betrieb und zuerst die richtige Phase mit hohem PWM Duty-Cycle 
bestromen?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Urban B. schrieb:
> Also während dem Abklappern
> bewegt sich der Rotor nicht oder?

Die PWM gibt schon mal einen leichten Strom vor (je nach Motor so 5% 
-10%) und es wird eine der 6 gültigen Spulenstates angelegt.
Im ungünstigsten Fall, wenn der Rotor gar nicht mit dem angelegten State 
klarkommt, ruckt er höchstens ein bisschen. Sonst 'rutscht' er schon mal 
in eine Position. Dann kommt timergesteuert der nächste State in 
Drehrichtung, nach spätestens 6 States muss der Rotor ja in 'Sync' mit 
dem Stator sein.
Der Timer wird nun immer schneller ( kürzere Zeit) und der Motor dreht 
entsprechend schneller, die PWM wird dabei leicht mit angezogen. 
Währenddessen schaut der Analog Komparator Interrupt immer schon, ob da 
brauchbare Impulse kommen. Wenn ja, wird ein Flag gesetzt und der VF 
Antrieb wird auf normalen Betrieb mit geregelter PWM umgeschaltet. Dann 
ist alles wie bei dir beschrieben.

von Urban B. (kami89)


Lesenswert?

Ach so, naja so ähnlich habe ich es ja auch gemacht. Ich habe halt 
einfach nicht geschaut zu welchem Zeitpunkt die BEMF stark genug ist, 
sondern ich habe immer z.B. nach 20 Umdrehungen des Ankers einfach 
umgeschaltet in den geregelten Betrieb.

Aber wenn man die gekauften Regler so anschaut ist diese Ansteuerung 
Kinderkram :-) Mit gekauften Reglern geht das Anlaufen einfach 
blitzschnell, die scheinen allerhöchstens 3 Kommutierungen zu brauchen 
bis in den geregelten Betrieb umgeschaltet wird! Und die Regler kommen 
mit allen möglichen Motoren klar, ob gross oder klein, ob mit oder ohne 
Propeller, belastet oder unbelastet, es funktioniert einfach immer.

Hast du es auch so extrem zuverlässig hinbekommen?

von Stephan W. (stipo)


Lesenswert?

Habe den Artikel eben nur mal überflogen, aber sieht sehr gut aus.
Werde mir den dann mal komplett durchlesen, denn ich habe hier ein paar 
Brushless Festplatten Motoren, die ich gerne mal ansteuern möchte.
Kann also den Artikel sehr gut gebrauchen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Urban B. schrieb:
> Hast du es auch so extrem zuverlässig hinbekommen?

Für so kleine Festplattenmotore geht die o.a. Strategie ganz gut, wenns 
aufs schnelle Anlaufen ankommt, wirst du nicht drumherumkommen, einen 
Ansatz wie bei dem STM32 Controller zu machen, mit Shunts und 
Strommessen pro Phase. Glücklicherweise sind die Motore, mit denen ich 
beruflich zu tun habe, alle mit Hallsensoren ausgestattet, so dass dort 
das Problem gar nicht entsteht. Die haben allerdings dafür einige 
Kilowatt....

von Urban B. (kami89)


Lesenswert?

Okay, dass es bei kleinen Festplattenmotoren funktioniert kann ich 
verstehen.

Ich habe aber extra in den Titel "...für Modellbaumotoren" geschrieben, 
um eben explizit auf diese Motoren einzugehen. Ich wollte keinen 
allgemeinen Artikel über BLDCs machen, das wäre viel zu umfangreich mit 
all den Varianten die so existieren.

> wenns aufs schnelle Anlaufen ankommt, wirst du nicht drumherumkommen,
> einen Ansatz wie bei dem STM32 Controller zu machen, mit Shunts und
> Strommessen pro Phase.

Nein, das geht definitiv auch ohne Shunt und Raumzeigermodulation. Die 
käuflichen Modellbauregler, ich ich bis jetzt gesehen habe, haben auch 
keine Shunts, nichtmal einen einzigen für alle Phasen.

Aber wie schon erwähnt habe ich mich noch nicht stark damit beschäftigt, 
das Anlaufverhalten eines käuflichen Reglers zu analysieren. Hab nur mal 
den Spannungsverlauf beim Anlauf mit dem Oszi aufgenommen, das Bild habe 
ich auch im Artikel eingebaut.

von OlliW (Gast)


Lesenswert?

Hallo Urban,

SUPER dass du dich da dran machts dass mal Zusammenzufassen was es zum 
Thema so alles gibt... Klasse.

Ich hätte zwei kleine Anmerkungen.

Soweit ich das sehe war Quax mit einer DER Pioniere bei dem Thema und 
die meisten der verfügbaren BLDC-Softwares beruhen auf seiner 
ursprünglichen Software. Ich konnte jetzt die Webseite mit seinen 
Umbauten nicht mehr finden, aber ich denke man könnte/sollte darauf 
hinweisen.

Bei rcgroups gibt es auch einen jüngeren Thread dazu, der mittlerweile 
die Hardware von ziemlich vielen kaufbaren BL-Reglern mit Atmega zeigt 
und listet. Für die "Nicht-alles-ganz-Selber-Bauer" sondern 
"Nur-Selbst-Umprogrammierer" ein evtl. sehr nüzliche Infoquelle (gute 
Software gibt's da natürlich auch). 
(http://www.rcgroups.com/forums/showthread.php?t=1513678)

Cheers, Olli

von Urban B. (kami89)


Lesenswert?

OlliW schrieb:
> Hallo Urban,
>
> SUPER dass du dich da dran machts dass mal Zusammenzufassen was es zum
> Thema so alles gibt... Klasse.

Danke :-D

> Soweit ich das sehe war Quax mit einer DER Pioniere bei dem Thema und
> die meisten der verfügbaren BLDC-Softwares beruhen auf seiner
> ursprünglichen Software. Ich konnte jetzt die Webseite mit seinen
> Umbauten nicht mehr finden, aber ich denke man könnte/sollte darauf
> hinweisen.

Quax sagte mir jetzt gar nichts, habe dann aber rausgefunden dass das 
der B. Konze sein soll, dieser Name sagt mir auch schon etwas mehr :-) 
Hast recht, das ist eine wichtige Seite, habe sie in die Weblinks mit 
eingebaut.

Ausserdem habe ich in der Einleitung noch erwähnt dass es am Ende der 
Seite gute Links gibt, bei denen es sich lohnt die mal anzuschauen.

> Bei rcgroups gibt es auch einen jüngeren Thread dazu, der mittlerweile
> die Hardware von ziemlich vielen kaufbaren BL-Reglern mit Atmega zeigt
> und listet. Für die "Nicht-alles-ganz-Selber-Bauer" sondern
> "Nur-Selbst-Umprogrammierer" ein evtl. sehr nüzliche Infoquelle (gute
> Software gibt's da natürlich auch).
> (http://www.rcgroups.com/forums/showthread.php?t=1513678)

Hab ich auch gleich in die Links aufgenommen! Ist ja ein ellenlanger 
Thread ;-)

mfg

von Martin R. (ich_e)


Lesenswert?

Softwarebeschreibung:

Ich verstehe 2 Punkte nicht.

Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der 
richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. 
Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.
Danach muss nur noch gewartet werden bis der Analogkomparator einen 
Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung 
ausgelöst, und das Spiel beginnt wieder von vorne.

Ich verstehe nicht wie der ADC im zusammenhang mit dem Analogkomparator 
funktioniert? Wenn ich auf das Oszibild schaue würde mir doch der 
Analogkomparator reichen ?

Würde mich für ein wenig aufklärung freuen.


Man schaltet ja ?

A-B
A-C
B-C
B-A
C-A
C-B

von Urban B. (kami89)


Lesenswert?

Martin R. schrieb:
> Ich verstehe nicht wie der ADC im zusammenhang mit dem Analogkomparator
> funktioniert? Wenn ich auf das Oszibild schaue würde mir doch der
> Analogkomparator reichen ?

In der BEMF-Schaltung 
(Brushless-Controller für Modellbaumotoren: BEMF-Schaltung) gibt es 
ja die drei Analogsignale NULL_A, NULL_B und NULL_C. Auf dem dritten 
Oszillogramm ist eine von diesen drei Spannungen in roter Farbe 
dargestellt. Das ist die Spannung, die der Komparator mit der 
Sternmittelpunktspannung ("MITTEL" in der BEMF-Schaltung) vergleicht. 
Der Kompararor muss aber nacheinander die Spannungen NULL_A, NULL_B und 
NULL_C eingespiesen bekommen, es muss ja immer nur die BEMF der 
freihängenden Phase angeschaut werden.

Das heisst also, dass diese drei Spannungen per "Umschalter" auf den 
Komparator kommen müssen. Und genau dieses Umschalten übernimmt der ADC 
Multiplexer, der im AVR integriert ist. Normalerweise vergleicht der 
Komparator ja die Spannungen an den Pins "AIN0" und "AIN1". Man kann 
aber auch, anstatt dem Eingang "AIN1" einer der ADC-Kanäle benutzten. 
Konkret sieht das etwa so aus:
1
 
2
ADCSRA = (1<<ADIF);   // ADC Interrupt Flag löschen und ADC deaktivieren, AC ist nun aktiv
3
ADMUX = (ADMUX & ~(0x1F)) |           // MUX0 bis MUX3 löschen
4
          (compare_adc_channel & 0x1F); // ADC-Kanal für Vergleich wählen

Näheres zu den Registern findest du in den AVR Datenblättern.

Muss ich mal schauen ob ich das im Artikel noch etwas besser erkläären 
kann.

von Martin R. (ich_e)


Lesenswert?

Urban B. schrieb:
> Muss ich mal schauen ob ich das im Artikel noch etwas besser erkläären
> kann.

Würde mich sehr freuen ich will mir jetzt einen Regler basteln....

Das Sollte man wissen mit dem ADC :-) Danke!

A-B C= Messen
A-C B= Messen

usw....

von Martin R. (ich_e)


Lesenswert?

Ich sehe die die 6 Schritte nicht wirklich auf dem Oszibild. Irgend was 
ist mir nicht verständlich.

gruß
martin

von Urban B. (kami89)


Lesenswert?

Martin R. schrieb:
> Ich sehe die die 6 Schritte nicht wirklich auf dem Oszibild. Irgend was
> ist mir nicht verständlich.
>
> gruß
> martin

Auf dem Diagramm 
(Brushless-Controller für Modellbaumotoren: Ansteuerung) siehst du 
die 6 Zustände ja, die sind nummeriert von 1 bis 6. Wenn du jetzt die 
ersten beiden Oszi-Bilder anschaust ist das ja nahezu exakt das selbe 
wie auf dem Diagramm, sollte also kein Problem sein da die 6 Zustände 
auch zu erkennen?!

Was vielleicht ein bisschen verwirrt, die horizontalen Linien (bei Low 
und bei High) sind nicht ein Zustand, sondern das sind zwei Zustände 
direkt hintereinander.

mfg

von Martin R. (ich_e)


Lesenswert?

aaahhhjeee.

jetzt habe ich es gesehen. Das Diagramm ist ja 1-6 beschrieben.

alle 60° Schaltet man um.

Dankeschön für deinen Beitrag der kommt mir sehr gelegen.

um deine Oszibilder zu kompletieren wäre ein Bild schön in dem man zeigt
wie die Phase von A-B geschaltet ist und wie man auf den Nulldruchgang 
der Phase C wartet.

von Urban B. (kami89)


Lesenswert?

Martin R. schrieb:
> aaahhhjeee.
>
> jetzt habe ich es gesehen. Das Diagramm ist ja 1-6 beschrieben.
>
> alle 60° Schaltet man um.
>
> Dankeschön für deinen Beitrag der kommt mir sehr gelegen.

gerne doch :-)

Jetzt möchte ich nur noch das Diagramm als SVG-Datei erstellen, damit es 
auch leicht angepasst werden kann. Mit Inkscape komme ich nicht so ganz 
zurecht, dann habe ich LibreOffice Draw genommen. Klappte perfekt, echt 
geniales Programm um solche Sachen zu zeichnen! Nur leider klappt der 
SVG-Export total bescheiden. Nach einer Internetrecherche scheint das 
Problem bekannt zu sein...

Kennt jemand ein gutes Linux-Programm um SVG-Dateien ähnlich simpel wie 
in OO Draw zu erzeugen?

Und an dieser Stelle noch: Es wäre wirklich schön wenn jemand noch 
Hinweise geben könnte zu den Themen die ich im Artikel nicht richtig 
beschreiben konnte.

mfg

von Martin R. (ich_e)


Lesenswert?

um deine Oszibilder zu kompletieren wäre ein Bild schön in dem man zeigt
wie die Phase von A-B geschaltet ist und wie man auf den Nulldruchgang
der Phase C wartet.

gruß Martin

von Urban B. (kami89)


Lesenswert?

hmm, also wie man auf etwas wartet ist schwierig darzustellen auf einem 
Oszi-Bild ;-)

Aber das dritte Bild sollte doch in dieser Hinsicht ziemlich viel 
erklären. Es sind die Signale NULL_A und MITTEL sichtbar, und genau bei 
der Kreuzung derselben löst der Komparator einen Interrupt aus (grüne 
Linie), dies wiederum löst eine Kommutierung aus. Diese Kommutierung ist 
dann auf der Phase A (gelb) sichtbar, da zu diesem Zeitpunkt vom Zustand 
"Floating" in den Zustand "PWM" gewechselt wird.

mfg

von Martin R. (ich_e)


Lesenswert?

Ja das Bild ist sehr gut das Oszi ist auch nicht ohne..

zum beitrag Anlauf:
Schaft man es nicht den Motor durch einen Impuls drehen zu lassen ?


Gruß
Martin

von Urban B. (kami89)


Lesenswert?

Martin R. schrieb:
> zum beitrag Anlauf:
> Schaft man es nicht den Motor durch einen Impuls drehen zu lassen ?

Vermutlich geht es, siehe letztes Oszi-Bild. So ganz einfach ist das 
aber nicht, ich habe noch nicht herausgefunden auf was man genau achten 
muss.

Wenn du aber den Artikel richtig gelesen hättest, hättest du den 
folgenden Absatz bemerkt:
> Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig
> geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch,
> dass gekaufte Regler das nicht so machen. Diese scheinen nur einen
> kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene
> BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes
> bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut,
> vielleicht weiss hier jemand besser Bescheid und könnte es hier
> beschreiben?

Das hätte deine Frage beantwortet...

von Martin R. (ich_e)


Lesenswert?

Urban wie ist das mit dem HI LOW Side treiber.

ich muss doch erst mal einen takt draufbringen damit der Highside 
N-Mosfet überhaupt funktioniert ? bzw. es ladet sich doch der 
Kondensator auf ?

gruß
martin

von Urban B. (kami89)


Lesenswert?

Martin R. schrieb:
> Urban wie ist das mit dem HI LOW Side treiber.
>
> ich muss doch erst mal einen takt draufbringen damit der Highside
> N-Mosfet überhaupt funktioniert ? bzw. es ladet sich doch der
> Kondensator auf ?

Der Kondensator C11 in der [[Brushless-Controller für 
Modellbaumotoren#Beispielschaltung]] lädt sich auf während der untere 
Mosfet leitend ist, also im Low-Zustand. Im High-Zustand entlädt sich 
dieser Kondensator um die Gatespannung des oberen Mosfets 
bereitzustellen. Nennt sich übrigens Bootstrap-Schaltung. Weil sich der 
Motor ja drehen soll hast du zwangsläufig immer einen Wechsel zwischen 
High und Low, der Kondensator lädt sich also automatisch immer schön 
auf, eigentlich musst du dir darüber keine Gedanken machen.

Nähere Informationen findest du z.B. hier:
Treiber: Versorgung durch eine Bootstrap Schaltung

von Mathias W. (lotstation)


Lesenswert?

@alle, @Urban,

bin neu hier und grüsse alle aktiven oder passiven Teilnehmer. Merci an 
Urban, dein Beitrag ist eine Bereicherung für Neueinsteiger wie mich.
Ich suche eine Möglichkeit ein "Netzteil" zu bauen, das 3-phasige 
Spannungen (<10Veff) erzeugt. Das Problem ist, dass kein typischer 
BLCD-Motor als Last vorgesehen ist. Was tun, wenn die Last (R<1Ohm, L < 
10uH) schwach induktiv ist, die BEMF-Spannung wird wohl zu klein sein um 
daraus die Kommutierung abzuleiten.
Bleibt die Möglichkeit die Anlaufphase (siehe Beitrag) zum Regelbetrieb 
zu machen, aber wie?

Mein Plan ist einen käuflichen RC-Controller durch Umprogrammieren auf 
diese Aufgabe anzupassen:
Meine Fragen sind insbesondere:
-welche Fabrikate kommen in Frage?
-welche Tools brauche ich zum Programmieren (PC oder Hand-held)?
-woher bekomme ich die Details zur (Um-)Programmierung (Datenblätter 
etc.)?

merci und Gruss Mathias

von Urban B. (kami89)


Lesenswert?

Hallo Mathias,

Mathias W. schrieb:
> Ich suche eine Möglichkeit ein "Netzteil" zu bauen, das 3-phasige
> Spannungen (<10Veff) erzeugt. Das Problem ist, dass kein typischer
> BLCD-Motor als Last vorgesehen ist.

Was soll denn genau betrieben werden? Ohne das zu wissen, kann man dir 
keine Tipps geben. Ist es überhaupt was drehendes? :-)

Bedenke, dass die Brushless-Regler die Frequenz des Drehfeldes immer dem 
Motor bzw. der Last anpassen, also nicht konstant ist. Ich weiss nicht, 
ob das wirklich das ist, was du brauchst.

Ausserdem wird bei Modellbau-Brushless-Reglern keine Sinusförmige 
Spannung erzeugt (Raumzeigermodulation), sondern lediglich eine 
Blockkommutierung ("trapezförmige Spannung"). Ob das für deine Anwendung 
geeignet ist, lässt sich ebenfalls nicht sagen, ohne dein genaues 
Vorhaben zu kennen.

mfg

von Mathias W. (lotstation)


Lesenswert?

Salü Urban,

ich will eine 3-phasige Stromversorgung bauen, um Experimente bei 
ungefährlichen Spannungen machen zu können.

Die Spannung muss nicht sinusförmig sein, die Grundschwingung und die 
120Grad Phasenverschiebung ist -neben den Strömen und variabler 
Frequenz- alles was ich brauche.
Habe auch schon überlegt, das mit diskreten TTL-Bausteinen 
("Schaltwerk") und MOSFET Endstufe aufzubauen, ist aber aufwendig, 
ausserdem gibts ja so schöne Controller zu kaufen. Einzig die BEMF macht 
mir Kopfscherzen.
Bin auch für Versuche zu begeistern, habe aber wenig Erfahrung mit 
Programmieren von BLCD Controllern, deswegen wende ich mich an euch.

Gruss Mathias

von Urban B. (kami89)


Lesenswert?

Mathias W. schrieb:
> ich will eine 3-phasige Stromversorgung bauen, um Experimente bei
> ungefährlichen Spannungen machen zu können.

Also kein Motor?

Die BEMF wird nur verwendet, damit die Kommutierung immer mit Rücksicht 
auf die Ankerposition durchgeführt werden kann, damit der Motor nicht 
ausser Tritt gerät. Gibt es kein Rotor, brauchst du keine BEMF. Ohne 
Motor gibts sowieso keine BEMF, da dies die induzierte Spannung des 
drehenden Rotors ist -> kein drehender Rotor, keine BEMF.

Wenn du einfach nur z.B. eine "Sinusspannung" (Trapezspannung) mit einer 
ganz bestimmten Frequenz brauchst, dann genügt dir die 
Zwangskommutierung. Aber ein BLDC wird dann an diesem Regler nicht 
drehen.

Du kannst nicht einen Regler bauen, der mit und ohne BLCD-Motor 
funktioniert. Entweder du baust einen Regler für einen BLDC-Motor, dann 
mit BEMF, oder du baust einen Regler für was anderes (etwas das 
mechanisch nicht dreht), dann ohne BEMF.
Du kannst aber auch einen Schalter verwenden, mit dem du der Software 
"sagst", ob sie mit oder ohne BEMF arbeiten soll, dann geht auch beides 
mit dem gleichen Regler.

Zum Thema "Gekaufte Regler mit eigener Software betreiben" gibts hier 
sehr viel zu lesen: 
http://www.rcgroups.com/forums/showthread.php?t=1513678

von Mathias W. (lotstation)


Lesenswert?

Merci für die rasche Antwort, Urban!

Urban B. schrieb:

> Also kein Motor?
Richtig.

> Die BEMF wird nur verwendet, damit die Kommutierung immer mit Rücksicht
> auf die Ankerposition durchgeführt werden kann, damit der Motor nicht
> ausser Tritt gerät. Gibt es kein Rotor, brauchst du keine BEMF. Ohne
> Motor gibts sowieso keine BEMF, da dies die induzierte Spannung des
> drehenden Rotors ist -> kein drehender Rotor, keine BEMF.

i.O. Meine Bedenken sind, ob der Controller seine Arbeit einstellt, wenn 
er keine BEMF registriert. Ich verstehe deine Aussage so, dass der 
Regler seine 3-phasige Ausgangsspannungen auch dann weiter erzeugt, wenn 
er keine BEMF misst.

> Wenn du einfach nur z.B. eine "Sinusspannung" (Trapezspannung) mit einer
> ganz bestimmten Frequenz brauchst, dann genügt dir die
> Zwangskommutierung. Aber ein BLDC wird dann an diesem Regler nicht
> drehen.

Ein BLDC ist nicht vorgesehen, die Frequenz soll manuell und variabel 
einstellbar sein.

> Du kannst aber auch einen Schalter verwenden, mit dem du der Software
> "sagst", ob sie mit oder ohne BEMF arbeiten soll, dann geht auch beides
> mit dem gleichen Regler.

Das ist es, was ich suche, PWM zur Einstellung der Effektivspannung wäre 
dann auch schon dabei. Was ist zu beachten, wenn ich Regler und 
Empfänger am gleichen Akku betreiben will?
Welcher Regler käme in Frage?

> Zum Thema "Gekaufte Regler mit eigener Software betreiben" gibts hier
> sehr viel zu lesen:
> http://www.rcgroups.com/forums/showthread.php?t=1513678

Werde ich mir ansehen, merci und Gruss

von Urban B. (kami89)


Lesenswert?

Mathias W. schrieb:
> Merci für die rasche Antwort, Urban!

Kein Problem :-)

Mathias W. schrieb:
> i.O. Meine Bedenken sind, ob der Controller seine Arbeit einstellt, wenn
> er keine BEMF registriert. Ich verstehe deine Aussage so, dass der
> Regler seine 3-phasige Ausgangsspannungen auch dann weiter erzeugt, wenn
> er keine BEMF misst.

Nein, ein Brushless-Regler mit der originalen Software wird ziemlich 
sicher nicht funktionieren wenn er keine BEMF erkennt. Dazu müsstest 
du schon eine modifizierte Software drauf flashen. Müsstest halt einen 
Regler kaufen, zu dem es auch eine OpenSource Software gibt, die du dann 
selbst anpassen kannst. Im Link, den ich gepostet habe, solltest du da 
fündig werden. Ansonsten kann ich dir da auch nicht weiter helfen, ich 
habe noch nie eine eigene Software auf einen gekauften Regler geflasht.

Mathias W. schrieb:
> Was ist zu beachten, wenn ich Regler und
> Empfänger am gleichen Akku betreiben will?

Eigentlich nichts, wird im Modellbau ja auch häufig so gemacht :-)

Übrigens solltest du dir darüber im klaren sein dass beim Betrieb ohne 
Motor nichtmal mehr annähernd eine Trapezspannung aus dem Regler kommt. 
Die Übergänge zwischen zwei Zuständen werden nämlich nur wegen der 
Induktion des drehenden Rotors so schön schräg. Ohne Induktion werden 
die Übergänge vermutlich einfach mehr oder weniger bei VCC/2 liegen.

Also hättest du kein Trapez, sondern sowas:
1
LOW - VCC/2 - PWM (HIGH-LOW-HIGH-LOW...) - VCC/2 - LOW - ...
(wobei VCC/2 aber auch mit der PWM-Frequenz zwischen LOW und HIGH 
toggelt)
Mit Drehstrom hat das so ziemlich nichts mehr zu tun ;-)

von Heiko P. (wuseltum)


Lesenswert?

Liebe Gemeinde,

auch von mir zunächst vielen herzlichen Dank für den Artikel und diese 
Vorlage!!

Ich würde den Controller gerne nachbauen, frage mich beim Platinenlayout 
aber gerade, warum die PWM eigentlich dem IN-Signal überlagert wird und 
nicht dem SD-Signal... Wenn ich das Datenblatt des 2104 richtig 
verstehe, wird dadurch der Ausgang doch dauernd von High nach Low 
umgeschaltet anstatt von High/Low nach Tristate... Will man das wirklich 
so haben?

Vielen Dank im Voraus für Eure Hilfe,
Heiko

von Urban B. (kami89)


Lesenswert?

Hallo Heiko!

Heiko P. schrieb:
> Will man das wirklich so haben?

Ja, das will man :-)
Man sieht zwar häufig dass es eben nicht so gemacht wird, obwohl es 
einen grossen Vorteil hat: Die Verlustleistung in den Mosfets wird sehr 
stark verringert.

So funktionierts:
Schaltet der obere Mosfet aus (nehmen wir an, es sei "Phase A"), 
"möchte" der Strom in der gleichen Richung weiterfliessen, also aus dem 
Anschluss von Phase A (auf dem Board) herausfliessen. Von VCC kann der 
Strom aber nicht geholt werden, da der obere Mosfet sperrt. Der untere 
Mosfet hat jedoch eine Freilaufdiode, die nun in Flussrichtung 
geschaltet ist. Der Strom kann nun von GND über diesen Mosfet fliessen. 
Über dem Mosfet fällt dabei aber eine Spannung im Bereich 0,5-0,7V ab, 
denn dies ist die Flussspannung der Diode im Mosfet. Mit Pv=U*I ergibt 
dies eine relativ hohe Verlustleistung.

Schaltet man in diesem Moment jedoch den unteren Mosfet gezielt ein, so 
muss der Strom nicht über die Diode, sondern kann direkt durch den 
leitenden Mosfet fliessen. Die Verlustleistung ist dann Pv=Ron*I^2, 
wobei der On-Widerstand Ron des Mosfets im Milliohm-Bereich ist, und 
damit die gesamte Verlustleistung relativ klein ist.

Dieses Prinzip wird übrigens auch "Aktiver Freilauf" genannt.

mfg

von Heiko P. (wuseltum)


Lesenswert?

Hallo Urban,

vielen Dank für Deine schnelle Antwort und die Erklärungen.

Ich verstehe, dass man auf diesem Wege die FETs schont, aber insgesamt 
sehe ich den Sinn trotzdem noch nicht ganz... Wenn ich nun dauernd vor 
und zurück arbeite, indem ich den Strom mal vorwärts und mal rückwärts 
durch den Motor schicke, mache ich in den "PWM aus"-Phasen doch wieder 
das zunichte, was ich während "PWM an" erreicht habe. Angenommen ich 
habe ein Tastverhältnis von 50%, dann beläuft sich die effektive 
Leistung im Motor doch auf null, oder habe ich da irgendwo einen 
Denkfehler...?

Nochmals danke und einen guten Start in die Woche!
Heiko

von Urban B. (kami89)


Lesenswert?

Heiko P. schrieb:
> Wenn ich nun dauernd vor
> und zurück arbeite, indem ich den Strom mal vorwärts und mal rückwärts
> durch den Motor schicke, mache ich in den "PWM aus"-Phasen doch wieder
> das zunichte, was ich während "PWM an" erreicht habe.

Nein das stimmt so nicht, denn in der PWM-Aus-Phase sind beide Seiten 
der Spule auf GND, der Strom in der Spule ändert dann also nicht seine 
Richtung, sondern er wird einfach kurzgeschlossen.

Betrachten wir mal eine der drei Spulen in einem der sechs Zyklen.
Anschluss A der Spule liegt die ganze Zeit auf GND, Anschluss B wechselt 
ständig zwischen VSS und GND (PWM).
1
(GND) A----SPULE----B (VSS): Strom fliesst von B nach A, also nach links
2
(GND) A----SPULE----B (GND): Strom fliesst weiterhin nach links, ist jetzt aber über GND kurzgeschlossen, wird also sehr schnell gegen Null gehen
3
(GND) A----SPULE----B (VSS): Strom fliesst von B nach A, also nach links
4
usw...

Der Strom ändert also nie seine Richtung nur wegen des PWMs.
Übrigens sieht es auch ohne das aktive Einschalten des unteren Mosfets 
genau gleich aus, nur dass dann halt zwischen den beiden gezeichneten 
GNDs noch eine Spannungsdifferenz wegen der Diode im Mosfet gibt, und 
damit der Mosfet mehr Verlustwärme "produziert".

Ich hoffe das war einigermassen verständlich ;-)
Mit einer schönen Grafik ists leichter verständlich, konnte aber leider 
grad keine finden.

(Dass die Spulen ihren Strom immer aufrecht erhalten wollen, muss man 
natürlich wissen. Ich weiss jetzt halt nicht wie es da bei dir 
diesbezüglich aussieht.)

mfg

von Heiko P. (wuseltum)


Lesenswert?

Lieber Urban,

vielen Dank für Deine Erläuterungen - jetzt habe ich's kapiert. Ich war 
fälschlicherweise davon ausgegangen, dass durch die PWM BEIDE Signale 
ihren Pegel ändern, dabei bleibt einer der beiden ja immer konstant. 
Alles andere macht dann natürlich völlig Sinn.

Nochmals vielen Dank,
Heiko

von wurstwasser (Gast)


Lesenswert?

Urban B. schrieb:
> (GND) A----SPULE----B (GND): Strom fliesst weiterhin nach links, ist jetzt
> aber über GND kurzgeschlossen, wird also sehr schnell gegen Null gehen

Soweit hatte ich mir das auch schon überlegt. Allerdings hätte mich an 
dieser Stelle interessiert, was mit dem MOSFET passiert wenn er auf 
einmal negative Ströme leiten muss. Ist das dann nicht ein Problem?

von Urban B. (kami89)


Lesenswert?

Heiko P. schrieb:
> Nochmals vielen Dank,

Kein Problem ;-)

wurstwasser schrieb:
> Soweit hatte ich mir das auch schon überlegt. Allerdings hätte mich an
> dieser Stelle interessiert, was mit dem MOSFET passiert wenn er auf
> einmal negative Ströme leiten muss. Ist das dann nicht ein Problem?

Hmm ich wüsste nicht, was da zum Problem werden könnte. Man kann aber 
natürlich nicht sagen, dass man dann einen Mosfet auch umgekehrt 
einbauen könnte wenn die Richtung des Stromes keine Rolle spielt. Denn 
verkehrt herum kann man den Mosfet ja nicht ausschalten, dann würde 
einfach die Diode den Strom trotzdem leiten...
Aber ich kenne mich auch nicht im Detail aus mit Mosfets, ist nur meine 
persönliche Vermutung (die nicht so falsch sein kann weil es ja 
anscheinend so funktioniert in der Praxis ;-)

von Basti B. (basti195) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo liebe community lieber Urban,
ich habe eine Frage zur Kommutierung.
Wann muss ich in die nächsten Zustand wechseln?
Momentan basiert meine Kommutierung auf eine selbstgemachte Sinus-Kurve.
Ich habe den Code so geschrieben, dass der nächste 
„Zustand“(pwm/fload/gnd)dann eintrifft, wenn das entsprechende 
Komparator-Ereignis eintritt.
Solange macht der Prozessor nichts (wartet auf das Ereignis)

Sobald Phase B größer als der Durchschnitt ist -> Zustand 1
Sobald Phase A kleiner als der Durchschnitt ist -> Zustand 2
Sobald Phase C größer als der Durchschnitt ist -> Zustand 3
Sobald Phase B kleiner als der Durchschnitt ist -> Zustand 4
Sobald Phase A größer als der Durchschnitt ist -> Zustand 5
Sobald Phase C kleiner als der Durchschnitt ist -> Zustand 6

Jedoch dreht der Motor sich nicht und stottert nur vor sich hin.
Würde mich freuen wen ihr mir eure Erfahrungen bezüglich dies mitteilen 
könnts.
Und vielen Dank für den sehr hilfreichen Artikel :D
Grüße
Basti

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Miss einfach die Zeit, die zwischen dem letzten Kommutieren und dem 
eintreten des Komparator-Ereignisses läuft. Diese Zeit wartest du jetzt 
wieder ab bis zum nächsten Kommutieren. Aber auch ohne diese 
Zeitverzögerung sollte er laufen, er wird zwar warm, sollte aber 
halbwegs rund laufen. Achso, probiers völlig ohne Last, könnte durchaus 
sein, das er mit Last und ohne Zeitverzögerung nicht wirklich läuft. Ich 
bastel jetzt schon eine ganze Weile an einem Regler, der Anlauf macht 
bei mir mit Last noch ganz schön Probleme, meistens gehts, aber es gibt 
eben auch manche Versuche, da läuft er eben nicht richtig los, der 
Anlauf ist also ein wenig kniffelig. Deswegen erstmal ohne Last und am 
besten mit Hand den ersten SChwung geben, dann sollte er in deiner 
beschriebenen Konfiguration ohne Probleme laufen, wenn nicht, ist noch 
was anderes nicht ok.


Dennis

von Thomas (Gast)


Lesenswert?

Hallo!

Ich versuche gerade den Artikel 
http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren 
nachzuvollziehen, hab da aber ein Verständnisproblem bezüglich der 
abgebildeten Bemf-Schaltung:

Der Sternpunkt spiegelt ja mehr oder weniger die halbe 
Versorgungsspannung wieder. Wenn ich den Motor jetzt so wie im Artikel 
mit 10-20V versorge, würde ich da ja im Mittel 5-10V als Vergleichsgröße 
auf den Komparator vom uC legen der mit zB 5V versorgt wird.(Sowohl Last 
als auch Logik haben ja vermutlich den gleichen gnd-Bezug, soll ja aus 
einer Batterie versorgt werden.) Übersehe ich da irgendetwas?

lg Thomas

von Basti B. (basti195) Benutzerseite


Lesenswert?

Hierzu musst du einfach den "Spannungsteiler" entsprechend 
Dimensionieren

grüße

von Thomas (Gast)


Lesenswert?

Sebastian Balz schrieb:
> Hierzu musst du einfach den "Spannungsteiler" entsprechend
> Dimensionieren
>
> grüße

lol, hab scheinbar einen ziemlichen Knoten im Kopf gehabt, habs mir 
jetzt mal aufgezeichnet ist eh ganz logisch :)
Danke!

lg

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Thomas schrieb:
> lol, hab scheinbar einen ziemlichen Knoten im Kopf gehabt,

Bist da nicht der einzigste, den hatte ich auch schon :-)


Dennis

von Elias W. (1987_ew)


Lesenswert?

Hallo,

beschäftige mich gerade mit folgendem Artikel:

http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren
Dazu habe ich folgende Verständnisfrage bezüglich der Ansteuerung der 
drei Zustände für jeweils eine Phase.
Je nach Zustand, ist ja jeweils die Phase in PWM-Mode,auf GND oder hängt 
in der Luft.
Soweit ich das verstanden habe, ist im PWM-Mode, das Signal IN_A beim µC 
als Eingang definiert. Um auf GND zu schalten, denk ich, muss ich den 
Treiber abschalten. Wie ich aber den dritten Zustand erreiche kann, 
kommt mir grad nicht in den Sinn...
Wäre nett, wenn ihr mir da kurz auf die Sprünge helfen könntet.

von Urban B. (kami89)


Lesenswert?

Hallo Elias,

Elias Weiß schrieb:
> Soweit ich das verstanden habe, ist im PWM-Mode, das Signal IN_A beim µC
> als Eingang definiert.

Richtig.

Elias Weiß schrieb:
> Um auf GND zu schalten, denk ich, muss ich den Treiber abschalten.

Nein, wenn du den Treiber abschaltest (mit SD_A) hängt die Phase in der 
Luft (beide Mosfets sperren). Um auf GND zu schalten muss der Treiber 
aktiv sein, und IN_A aktiv auf Low gezogen werden -> Mosfet nach GND ist 
leitend.

mfg

von Elias W. (1987_ew)


Lesenswert?

Danke für deine Erklärung!

Jetzt hab ich da noch ne Frage bezüglich IN_A aktiv auf GND schalten.
Nach meinem Verständnis, würde ich bei IN_A den Pulldown-Widerstand 
aktivieren.
Da man ja den Pulldownwiderstand nicht fest einbauen kann. Sonst könnte 
man den Widerstand über einen Transistor zuschalten.
Wie hast du das denn gelöst?

mfg
Elias

von Urban B. (kami89)


Lesenswert?

Elias Weiß schrieb:
> Nach meinem Verständnis, würde ich bei IN_A den Pulldown-Widerstand
> aktivieren.

Nein, um IN_A auf Low zu ziehen musst du den I/O Pin auf Ausgang 
schalten und Low Pegel einstellen. Im Betrieb muss dieser Pin also immer 
abwechselnd als Eingang oder Ausgang konfiguriert werden.

Über die beiden Pins, welche IN_A und SD_A steuern, kannst du also mit 
der Software folgende Zustände erreichen:
SD_A = Low (Ausgang): Beide Mosfets sperren --> Phase hängt in der Luft
SD_A = High (Ausgang):
 - IN_A = floating (Eingang ohne PU/PD): Durch R20 wird ein PWM auf den
   Eingang des Treibers gelegt --> PWM auf Phase (abwechselnd VSS/GND)
 - IN_A = Low (Ausgang): Unterer Mosfet leitet --> GND auf Phase
 - IN_A = High (Ausgang): Oberer Mosfet leitet --> VSS auf Phase

Der letzte Zustand wird für den BLDC jedoch gar nicht gebraucht.

von Karsten B. (karstenbrandt)


Lesenswert?

Hallo Urban,

vielen Dank für den tollen Artikel:) Daumen hoch.

könntest Du uns den Schaltplan, Gerberdaten und Software für den 
BLDC-Controller auf den Abbildungen in Deinem Artikel zur Verfügung 
stellen?
Man muss das Rad ja nicht neu erfinden.

MfG

Karsten

von Urban B. (kami89)


Angehängte Dateien:

Lesenswert?

Hallo Karsten,

Also hier habe ich den kompletten Schaltplan und das Layout (erstellt 
mit Eagle 5). Gerber Dateien kann ich leider nicht anbieten, da ich 
damals direkt die *.brd Datei dem PCB Hersteller geschickt habe...

Die Software möchte ich lieber nicht öffentlich machen, da sie teilweise 
sehr provisorisch ist und leider nie fertig gestellt wurde (wenn ich 
mich richtig erinnere gibts nichtmal eine Möglichkeit um die Drehzahl 
vorzugeben, war glaub alles nur hardgecoded...). Ausserdem habe ich die 
Software noch vor meinem Studium geschrieben und jetzt schäme ich mich 
für den hässlichen Code xD

Gruss,
Urban

von Karsten (Gast)


Lesenswert?

Hallo Urban,

vielen Dank für die Rückmeldung und die Daten.
Wenn Du zufällig noch eine Platine liegen hast, die Du mir verkaufen 
kannst, dann lasse es mich wissen ;)
Wäre echt cool, wenn Dein Beitrag durch das Board mit Eagle-Daten und 
Software richtig perfekt wird.
Vielleicht kannst Du mir Software ja per Mail zukommen lassen:
karstenbrandt1@gmx.de

Wenn ich eine funktionierende Software-Version habe, dann stelle ich die 
dem Forum hier auch zur Verfügung.

Gruß

Karsten

von Karsten B. (karstenbrandt)


Lesenswert?

Hallo Urban,

die Platine ist nun fertig. Ich warte noch auf das Vogelfutter in 0603.
Ich hatte auch so meine Verständnisprobleme mit der Ansteuerung der 
IR2104-Treiber und wie das mit den auf Eingang schalten der 
entsprechenden PINs funktioniert.
Ich würde im Artikel unbedingt noch erwähnen, dass wenn der PIN des 
ATmega168 als Eingang geschaltet ist, er als Source funktioniert und das 
PWM Signal über den Widerstand an Masse zieht (Das entspricht quasi 
einer Push-Pull-Ausgangsstufe). Das Signal IN_A (IN_B oder IN_C) ist 
dann Masse (LOw Pegel). Das LOW-Signal am IR-Eingang führt dann zum 
Öffnen des LOW-Side-Transistors.
Ich habe die Schaltung parallel noch mit einem ATxmega aufgebaut, da der 
für mich noch weitere Vorteile bietet. Die Ports im ATxmega bieten noch 
weitere Konfigurationsmöglichkeiten im PIN-Outputmodus.
Daher würde ich im Deinem Artikel unbedingt darauf hinweisen, warum 
Deine Schaltung bei aktivem  output LOW-Pegel für die Ausgänge IN_A, 
IN_B und IN_C funktioniert.
Ein Frage noch:
Hat es einen Vorteil, wenn die Bildung des virtuellen Mittelpunktes aus 
den heruntergeteilten und gefilterten Spannungen der Einzelphasen 
vorgenommen wird?
Bei vielen Applikationen wird der virtuelle Nullpunkt unabhängig von den 
Strangsignalen gebildet. D.h. der virtuelle Nullpunkt wird direkt an den 
Phasen über drei Widerstände gebildet. Das Signal des virtuellen 
Nullpunktes wird dann noch heruntergeteilt und gefiltert (wie den den 
einzelnen Strangsignalen auch).

Gruß

Karsten

von Urban B. (kami89)


Lesenswert?

Hallo Karsten,

Karsten B. schrieb:
> Ich würde im Artikel unbedingt noch erwähnen, dass wenn der PIN des
> ATmega168 als Eingang geschaltet ist, er als Source funktioniert und das
> PWM Signal über den Widerstand an Masse zieht (Das entspricht quasi
> einer Push-Pull-Ausgangsstufe).

Ich nehme an, das ist ein Schreibfehler und sollte eigentlich heissen 
"wenn der PIN des ATmega168 als Ausgang geschaltet ist"? Falls ja, 
dann stimme ich zu ;)

Karsten B. schrieb:
> Das Signal IN_A (IN_B oder IN_C) ist
> dann Masse (LOw Pegel). Das LOW-Signal am IR-Eingang führt dann zum
> Öffnen des LOW-Side-Transistors.

Nein, ein Low Signal an IN_A/B/C führt nicht zum öffnen des Low-Side 
Transistors, sondern zum Schliessen des Low-Side Transistors und zum 
Öffnen des High-Side Transistors.

Um beide Transistoren zu öffnen wird der "Shutdown" Eingang des Treibers 
benötigt.

Karsten B. schrieb:
> Daher würde ich im Deinem Artikel unbedingt darauf hinweisen, warum
> Deine Schaltung bei aktivem  output LOW-Pegel für die Ausgänge IN_A,
> IN_B und IN_C funktioniert.

Habe einen Satz im Artikel hinzugefügt: 
https://www.mikrocontroller.net/wikisoftware/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&diff=prev&oldid=92735

Karsten B. schrieb:
> Hat es einen Vorteil, wenn die Bildung des virtuellen Mittelpunktes aus
> den heruntergeteilten und gefilterten Spannungen der Einzelphasen
> vorgenommen wird?

Das kann ich auch nicht genau sagen, die Schaltung habe ich damals 
einfach so vom Mikrokopter Projekt übernommen. Was man aber teilweise 
auch sieht, ist dass der Mittelpunkt gar nicht aus den drei Phasen 
gebildet wird, sondern einfach nur VDD/2 (bzw. mit grösserem 
Teilerverhältnis um die Spannung an den ADC vom uC anschliessen zu 
können). Wie gut das funktioniert weiss ich nicht, aber im Prinzip 
beträgt die Sternpunktspannung eh immer etwa VDD/2...

mfg

von Karsten (Gast)


Lesenswert?

Hallo Urban,

Urban B. schrieb:

> Karsten B. schrieb:
>> Das Signal IN_A (IN_B oder IN_C) ist
>> dann Masse (LOw Pegel). Das LOW-Signal am IR-Eingang führt dann zum
>> Öffnen des LOW-Side-Transistors.
>
> Nein, ein Low Signal an IN_A/B/C führt nicht zum öffnen des Low-Side
> Transistors, sondern zum Schliessen des Low-Side Transistors und zum
> Öffnen des High-Side Transistors.
>
Im Datenblatt des IR2104 steht, dass der High-Side-Transistor dem 
Eingangssignal folgt. Das Low-Side-Signal ist entsprechend invertiert 
zum High-Side, d.h.
IN_A = High => High-Side Transistor leitend, Low-Side Transistor 
gesperrt.
IN_A = LOW => High-Side Transistor gesperrt, Low-Side Transistor 
leitend.

> Um beide Transistoren zu öffnen wird der "Shutdown" Eingang des Treibers
> benötigt.
SD-PIN = Low => beide Transistoren gesperrt, d.h. werden nicht 
angesteuert
SD-PIN = High => Transistoren werden entsprechend dem Signal am IN_A 
Eingang angesteuert.
Der IR2104 verhindert, dass beide Transistoren gleichzeitig offen sind. 
Wenn das so gemeint ist, dann bin ich bei Dir.

>
> Karsten B. schrieb:
>> Daher würde ich im Deinem Artikel unbedingt darauf hinweisen, warum
>> Deine Schaltung bei aktivem  output LOW-Pegel für die Ausgänge IN_A,
>> IN_B und IN_C funktioniert.
>
> Habe einen Satz im Artikel hinzugefügt:
> 
https://www.mikrocontroller.net/wikisoftware/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&diff=prev&oldid=92735
perfekt ;)

>
> Karsten B. schrieb:
>> Hat es einen Vorteil, wenn die Bildung des virtuellen Mittelpunktes aus
>> den heruntergeteilten und gefilterten Spannungen der Einzelphasen
>> vorgenommen wird?
>
> Das kann ich auch nicht genau sagen, die Schaltung habe ich damals
> einfach so vom Mikrokopter Projekt übernommen. Was man aber teilweise
> auch sieht, ist dass der Mittelpunkt gar nicht aus den drei Phasen
> gebildet wird, sondern einfach nur VDD/2 (bzw. mit grösserem
> Teilerverhältnis um die Spannung an den ADC vom uC anschliessen zu
> können). Wie gut das funktioniert weiss ich nicht, aber im Prinzip
> beträgt die Sternpunktspannung eh immer etwa VDD/2...
Die Annahme von VDD/2 wird z.B. in der ATMEL-Note zum Thema BLDC 
gemacht.
Ich habe Deine Schaltung nochmal etwas modifiziert und in 0805 
ausgeführt. Die Platine ist etwas doppelt so groß und enthält nun auch 
Stiftleisten als Meßpins. Die einzelnen Bereiche (Leistungsstufe, 
Treiber und Controller) sind sichtbar getrennt. Das macht das 
Ausprobieren mit der Platine einfacher. Außerdem kann auch ein externer 
anderer Controller angeschlossen werden (wenn der auf der Platine nicht 
bestückt wird)
Den Schaltplan werde noch hier noch Posten, wenn die Software fertig ist 
(wenn denn mein bestellter Testmotor irgendwann kommt). Vielleicht magst 
Du meinen Vorschlag in Deinem doch sehr verständlichen Tutorial 
übernehmen.
Dann ist das eine sehr runde Angelegenheit mit Hardware und Software.
Falls Du den Schaltplan vorab haben möchtest, dann kurze Mail an
karstenbrandt1@gmx.de.

Gruß

Karsten

von Urban B. (kami89)


Lesenswert?

Karsten schrieb:
>> Karsten B. schrieb:
>>> Das Signal IN_A (IN_B oder IN_C) ist
>>> dann Masse (LOw Pegel). Das LOW-Signal am IR-Eingang führt dann zum
>>> Öffnen des LOW-Side-Transistors.
>>
>> Nein, ein Low Signal an IN_A/B/C führt nicht zum öffnen des Low-Side
>> Transistors, sondern zum Schliessen des Low-Side Transistors und zum
>> Öffnen des High-Side Transistors.
>>
> Im Datenblatt des IR2104 steht, dass der High-Side-Transistor dem
> Eingangssignal folgt. Das Low-Side-Signal ist entsprechend invertiert
> zum High-Side, d.h.
> IN_A = High => High-Side Transistor leitend, Low-Side Transistor
> gesperrt.
> IN_A = LOW => High-Side Transistor gesperrt, Low-Side Transistor
> leitend.

Eben, wie ich geschrieben habe :) Mit "Schliessen" meinst du schon auch 
"leiten", und mit "Öffnen" = "sperren" (wie ein Schalter halt), oder? 
Falls nicht, würde das unser Missverständnis erklären...

Karsten schrieb:
>> Um beide Transistoren zu öffnen wird der "Shutdown" Eingang des Treibers
>> benötigt.
> SD-PIN = Low => beide Transistoren gesperrt, d.h. werden nicht
> angesteuert
> SD-PIN = High => Transistoren werden entsprechend dem Signal am IN_A
> Eingang angesteuert.
> Der IR2104 verhindert, dass beide Transistoren gleichzeitig offen sind.
> Wenn das so gemeint ist, dann bin ich bei Dir.

Jup, genau so habe ich es gemeint.

Den Schaltplan kannst du ja einfach in diesem Thread posten, dann kann 
man im Artikel einen Link hierhin einfügen.

Bezüglich Software, hast du dir schonmal überlegt diese unter einer Open 
Source Lizenz auf Github zu veröffentlichen? Das würde ich sehr cool 
finden.

mfg
Urban

von Cerberus (Gast)


Lesenswert?

Ich habe den Beitrag hier noch mal ausgegraben, weil das Wiki
gerade auf der Foren-Startseite erwähnt wurde.
Ein interessanter Artikel, wenn man ihn auf Anhieb auch so
im Wiki finden würde.
Statt "Bürstenlos..." zuschreiben, wurde hier Denglisch gewählt
und das ist wenn man nach "Bürstenlos" sucht,
nicht sonderlich Zielführend. Ich rege daher mal an das zu ändern.
Das gilt auch für andere Beiträge. Nichts spricht dagegen die
englische Bezeichnung mit der Deutschen zu verlinken.
Wenn ein interessanter Beitrag im Wiki zu gut versteckt ist, nützt
er nämlich niemanden etwas.  Das wollte ich mal los werden.

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]
  • [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.