Forum: Mikrocontroller und Digitale Elektronik BLDC nur mit 0-5V am AVR möglich?


von BLDC (Gast)


Lesenswert?

Ich habe einen kleinen Modellbau-Brushless-Motor geschenkt bekommen. Ich 
möchte ihn gerne einmal ausprobieren und dazu die 3 Anschlüsse mit 3 
Widerständen (150 Ohm) an AVR-Pins anschließen.

Zur Ansteuerung habe ich mir dies hier angesehen:

https://de.nanotec.com/support/tutorials/animation-buerstenlose-dc-motoren/?tx_nanotec_animation%5Binitial%5D=motor_bldc_block_delta

Kann ich den so zum Drehen bekommen, also mit diesen 6 "Phasen"? Also 
wenn ich nur 0V, 5V und Hochohmig (Input) schalten kann, oder brauche 
ich zwingend die Umpolung / negative Spannung?

von BLDC (Gast)


Lesenswert?


von BLDC (Gast)


Lesenswert?

Also auf der Seite muss man auf BLDC-Motoren / "Block-Delta" klicken..

von Jens G. (jensig)


Lesenswert?

Auch wenn ich nicht weis, welche Daten der BLDC hat, würde ich 
behaupten, daß mit den 150Ohm (30mA) sich wohl nix drehen wird.
Ansonsten: solch ein Modellbaumotor braucht ein 3-Phase-Drehfeld (also 
wie bei Drehstrom). Du mußt also das entsprechende Impulsmuster an den 
Phasen erzeugen (120° Versatz).

>Kann ich den so zum Drehen bekommen, also mit diesen 6 "Phasen"? Also
>wenn ich nur 0V, 5V und Hochohmig (Input) schalten kann, oder brauche
>ich zwingend die Umpolung / negative Spannung?

Du brauchst eine Spannungsdifferenz. Ob das jetzt +/-2,5V sind, oder 
0V/5V, ist egal.

von Peter S. (Gast)


Lesenswert?

Du musst halt jeden Anschluss des Motors zwischen positiver und 
negativer Versorgung umschalten können.
Vorausgesetzt die 5V bzw. der Strom der AVR-Pins reicht, könnte man wohl 
schon erreichen, dass der BLDC irgendwie zuckt. Aber etwas was den Namen 
"Drehbewegung" verdient, wird da nicht so einfach heraus kommen.

von BLDC (Gast)


Lesenswert?

Peter S. schrieb:
> Du musst halt jeden Anschluss des Motors zwischen positiver und
> negativer Versorgung umschalten können.

also wenn das Bild da stimmt (so wie verlinkt), müsste ich doch 2 
beliebige von den 3 Anschlüssen ansteuern können: wenn ich den einen auf 
HIGH 5V und den anderen auf LOW 0V schalte, und danach genau anders 
herum, müsste sich doch der Motor um 180° drehen, oder?

von BLDC (Gast)


Lesenswert?

Ach und was ich nicht weiß: ist so ein Modellbaumotor intern "Delta" 
oder "Star" angeschlossen? (also siehe Animation)

von Hinweiser (Gast)


Lesenswert?

BLDC schrieb:
> müsste sich doch der Motor um 180° drehen, oder?

Du hast das mit dem Strom aber schon gelesen?

von BLDC (Gast)


Lesenswert?

Hinweiser schrieb:
> Du hast das mit dem Strom aber schon gelesen?

Ja. Ich habe mal am Netzteil probiert: mit 50mA schafft er es, sich 180° 
zu drehen beim umpolen. Ich müsste wohl 2 Pins zusammenschalten, dann 
käme ich auf max. 80mA, und ich müsste die Widerstände auf ca. 30 Ohm 
verringern..

Ich probiere mal morgen weiter. Sollten nicht 3 Takte reichen?:

Anschlüsse
1 2 3
Takte (Z= hochohmig)
H L Z
Z H L
L Z H
H L Z
Z H L
L Z H
H L Z
Z H L
L Z H

usw?

von Jens G. (jensig)


Lesenswert?

>also wenn das Bild da stimmt (so wie verlinkt), müsste ich doch 2
>beliebige von den 3 Anschlüssen ansteuern können: wenn ich den einen auf

Ich sehe in Deinem Liunk nur zwei Spulen-/Polpaare. Also kein 
3-Phasenteil.

>HIGH 5V und den anderen auf LOW 0V schalte, und danach genau anders
>herum, müsste sich doch der Motor um 180° drehen, oder?

Wenn Du Deinen BLDC meinst - nein. Der hat mehrere Magnetpolpaare, also 
nicht nur 2 N-S-Wechsel. Der würde da also nur paar Grad 
weiterschlüpfen. Nur wird der Motor unschlüssig sein, in welche 
Richtung.

>Ach und was ich nicht weiß: ist so ein Modellbaumotor intern "Delta"
>oder "Star" angeschlossen? (also siehe Animation)

Beides möglich.

>Ich probiere mal morgen weiter. Sollten nicht 3 Takte reichen?:

>Anschlüsse
>1 2 3
>Takte (Z= hochohmig)
>H L Z
>Z H L
>L Z H
>H L Z
>Z H L
>L Z H
>H L Z
>Z H L
>L Z H

>usw?

Ja.

von BLDC (Gast)


Lesenswert?

Jens G. schrieb:
> Ich sehe in Deinem Liunk nur zwei Spulen-/Polpaare. Also kein
> 3-Phasenteil.

Ja, das lässt sich nicht direkt verlinken, Du musst noch auf auf 
BLDC-Motoren / "Block-Delta" klicken..

Jens G. schrieb:
(Stern oder Dreieck)
> Beides möglich.

kann ich das ausmessen an den 3 Leitungen? War wohl mal in einem kleinen 
Multicopter..

von BLDC (Gast)


Lesenswert?

Jens G. schrieb:
> Nur wird der Motor unschlüssig sein, in welche
> Richtung.

Warum? in Richtung des nächsten Taktes, hoffe ich doch?

von Jens G. (jensig)


Lesenswert?

>(Stern oder Dreieck)
>> Beides möglich.

>kann ich das ausmessen an den 3 Leitungen? War wohl mal in einem kleinen
>Multicopter..

Klar - anhand mehrerer R-Messungen an den Anschlüssen. Einmal einfach an 
zwei Anschlüssen, und einmal an drei Anschlüssen, wobei zwei davon 
gebrück werden. Das Verhältnis beider R-Messungen ist bei Dreieck und 
Stern unterschiedlich (0,5 bzw 0,75). Natürlich brauchst Du ein 
Messgerät für niedrige R's (also normalerweise 4-Leiter-Messung).


>> Nur wird der Motor unschlüssig sein, in welche
>> Richtung.

>Warum? in Richtung des nächsten Taktes, hoffe ich doch?

Die Drehrichtung ist ungewiss, denn er könnte ja in beide Richtungen um 
180° wegdrehen.
Allerdings wird ein BLDC nicht so radikal von H auf L umgepolt, sondern 
es sind eben auch die Tristate (Z)-Phasen dazwischen, damit eben das 
(180°) nicht passiert.
Übrigens wird ein Modellbau-BLDC wie ein sensorless BLDC gesteuert, also 
die 4. Variante in deinem Link.

von Peter S. (Gast)


Lesenswert?

BLDC schrieb:
> Ach und was ich nicht weiß: ist so ein Modellbaumotor intern
> "Delta"
> oder "Star" angeschlossen? (also siehe Animation)

Das müsstest du dem Datenblatt entnehmen. Aber prinzipiell ist für dich 
erst mal egal, ob der Motor im Stern oder Dreieck verschaltet ist. Das 
hat keine Auswirkung auf die Ansteuerung. Abgesehen von ein paar 
Nebeneffekten, hat Stern oder Dreieck nur Auswirkung auf die 
Betriebsparameter (z. B. die maximale Drehzahl).

Du musst einfach nur die Phasen in der Richtigen Reihenfolge bestromen, 
damit sich der Motor "dreht", bzw in 60°-Schritten (elektrisch gesehen) 
weiter hüpft. Das wäre dann so eine Art "gesteuerter Six-Step-Betrieb".

Vielleicht googelst du einfach mal nach "BLDC Six-Step Kommutierung". 
Das ist im Endeffekt das was du machen musst.

von Peter S. (Gast)


Lesenswert?

Achja, das Thema "Freilaufdioden" könnte noch interessant sein. Es kann 
sein, dass dir deine AVR-Pins wegschmoren, wenn diese eine induktive 
Last schalten müssen.

Das Thema ist in deinem Fall wahrscheinlich gar nicht so trivial zu 
lösen. Vielleicht versuchst du es zunächst einfach mal ohne, aber dann 
nicht wundern, wenn der AVR die Grätsche macht ;)

von BLDC (Gast)


Lesenswert?

Peter S. schrieb:
> Achja, das Thema "Freilaufdioden" könnte noch interessant sein.

Ich hoffe, die Dioden im AVR reichen aus bei den relativ kleinen 
Induktivitäten.

von avr (Gast)


Lesenswert?

Die sind bis 1mA spezifiziert. Wenn der Motor auch nur einigermaßen 
anständig dreht geht der avr wahrscheinlich kaputt.

von BLDC (Gast)


Lesenswert?

neuer Stand: ich habe jetzt je 56 Ohm zwischen Motoranschluss und Pin.

Der Motor bewegt sich, aber er dreht sich nicht: Ob ich ihn nun in 6 
Schritten oder in 3 schritten ansteuere (der auskommentierte Teil)

Bei 3 Schritten geht er auf eine Position im ersten Schritt, dann ein 
Stück weiter im 2. Schritt (wahrscheinlich aufs nächste Polpaar?) aber 
beim dritten schritt macht er nichts - dann dreht er wieder zurück zur 
ersten Position. Also Schritt-RückSchritt-Pause

Bei 6 Schritten macht er 2 Schritte in die eine Richtung, dann nichts, 
dann 2 Schritte in die andere Richtung, dann nichts. Also Also 
Schritt-Schritt-Pause-RückSchritt-RückSchritt-Pause.

Woran liegt das? Evtl. ist im Motor was kaputt? Ich habe die Ansteuerung 
durchgemessen und auch die Motoranschlüsse - sieht alles richtig aus.. 
hier mein Programm:
1
#define L1 5
2
#define L2 6
3
#define L3 7
4
int pause = 200;
5
6
void setup() {
7
}
8
9
void loop() {
10
  // schritte nacheinander ausführen
11
  p1();  delay(pause);
12
  p2();  delay(pause);
13
  p3();  delay(pause);
14
  p4();  delay(pause);
15
  p5();  delay(pause);
16
  p6();  delay(pause);
17
  
18
  /*
19
  pX();  delay(pause);
20
  pY();  delay(pause);
21
  pZ();  delay(pause);
22
  */
23
}
24
25
//siehe https://www.daedalus.ei.tum.de/en/archiv/bldc-regler
26
27
void p1() { //1-Z-3
28
  pinMode(L2, INPUT);
29
  pinMode(L3, OUTPUT); digitalWrite(L3, LOW);
30
  pinMode(L1, OUTPUT); digitalWrite(L1, HIGH);
31
}
32
33
void p2() { //Z-2-3
34
  pinMode(L3, INPUT);
35
  pinMode(L3, OUTPUT); digitalWrite(L3, LOW);
36
  pinMode(L2, OUTPUT); digitalWrite(L2, HIGH);
37
}
38
39
void p3() { //2-1-Z
40
  pinMode(L3, INPUT);
41
  pinMode(L1, OUTPUT); digitalWrite(L1, LOW);
42
  pinMode(L2, OUTPUT); digitalWrite(L2, HIGH);
43
}
44
45
void p4() { //3-Z-1
46
  pinMode(L2, INPUT);
47
  pinMode(L1, OUTPUT); digitalWrite(L1, LOW);
48
  pinMode(L3, OUTPUT); digitalWrite(L3, HIGH);
49
}
50
51
void p5() { //3-2-Z
52
  pinMode(L1, INPUT);
53
  pinMode(L2, OUTPUT); digitalWrite(L2, LOW);
54
  pinMode(L3, OUTPUT); digitalWrite(L3, HIGH);
55
}
56
57
void p6() { //1-2-Z
58
  pinMode(L3, INPUT);
59
  pinMode(L2, OUTPUT); digitalWrite(L2, LOW);
60
  pinMode(L1, OUTPUT); digitalWrite(L1, HIGH);
61
}
62
63
64
65
void pX() { //1-2
66
  pinMode(L3, INPUT);
67
  pinMode(L2, OUTPUT); digitalWrite(L2, LOW);
68
  pinMode(L1, OUTPUT); digitalWrite(L1, HIGH);
69
}
70
71
void pY() { //2-3
72
  pinMode(L1, INPUT);
73
  pinMode(L3, OUTPUT); digitalWrite(L3, LOW);
74
  pinMode(L2, OUTPUT); digitalWrite(L2, HIGH);
75
}
76
77
void pZ() { //3-1
78
  pinMode(L2, INPUT);
79
  pinMode(L1, OUTPUT); digitalWrite(L1, LOW);
80
  pinMode(L3, OUTPUT); digitalWrite(L3, HIGH);
81
}

von BLDC (Gast)


Lesenswert?

ergänzend: Die Schritte liegen vielleicht so 5 Grad auseinander. 
Auffällig ist, dass wenn ich den Motor mit der Hand auf eine beliebige 
andere Position drehe, geht er dahin zurück. Als hätte er so eine 
"Lieblingsposition" über die er nicht hinweg kommt

Vielleicht reicht ja wirklich einfach der Strom nicht.. schade,,

von Andreas S. (igel1)


Lesenswert?

BLDC schrieb:
> sorry falscher Link, hier der richtige:
>
> 
https://de.nanotec.com/support/tutorials/animation-buerstenlose-dc-motoren/?tx_nanotec_animation%5Binitial%5D=motor_bldc_block_delta

Ich kann hier zwar leider inhaltlich nichts beitrage, wollte mich aber 
für den super Link bedanken.

Er verweist auf eine geniale Animation, um die Funktionsweise von BLDC 
Motoren zu verstehen!

Viele Grüße

Igel1

von Stefan F. (Gast)


Lesenswert?

> Die sind bis 1mA spezifiziert.

Ich meine mich zu erinnern, dass die Belastbarkeit der ESD Dioden der 
AVR mC gar nicht spezifiziert sind. Lediglich eine ziemlich alte App 
Note weist darauf hin, dass man sie nicht über 1mA belasten soll.

Doch eine App Note ist keine Spezifikation und gilt sicher auch nicht 
automatisch für alle neueren Modelle, die danach konstruiert wurden.

von avr (Gast)


Lesenswert?

Stefan U. schrieb:
> Doch eine App Note ist keine Spezifikation und gilt sicher auch nicht
> automatisch für alle neueren Modelle, die danach konstruiert wurden.

Kann sein, dafür hab ich zu lange nicht mehr mit den Teilen gearbeitet. 
Ich würde aber nicht davon ausgehen, dass es besser geworden ist.

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.