Forum: Mikrocontroller und Digitale Elektronik BLDC Motor als Rotationsencoder


von BLDC (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin gerade auf folgendes Video gestoßen 
(https://www.youtube.com/watch?v=bHgAbA7qq0w) und würde das Ganze nun 
gerne nachbauen.

Ich bin gerade dabei, dass Prinzip zu verstehen. Leider bin ich mit der 
Ansteuerung (bzw. dem Auslesen) von BLDC Motoren nicht so ganz vertraut.

Auf der im Video verlinkten Webseite 
(http://www.fleurey.com/franck/pmwiki.php?n=Main.HDDEncoder) findet man 
neben einer SKizze auch den Quellcode.

Ich habe mal die Schaltung als Skizze angehängt.

Im Quellcode passiert nun (unter anderem) folgendes:
1
int enc_last = 0;
2
void pool_enc() {
3
  int val =  ENCVAL;
4
  if (val == enc_last) return;
5
  else if (enc_last == 1 && val == 3) (*enc_dec)();
6
  else if (enc_last == 1 && val == 0) (*enc_inc)();
7
  else if (enc_last == 2 && val == 0) (*enc_dec)();
8
  else if (enc_last == 2 && val == 3) (*enc_inc)();
9
  enc_last = val;
10
}

Ich verstehe ich nicht, warum hier "enc_last" nur auf die Fälle "1" und 
"2" geprüft wird? Prinzipiell können doch auch die Fälle "0" und "3" 
auftreten. Des Weiteren wird "val" nur auf "0" und "3" geprüft, nicht 
aber auf "1" und "2". Vermutlich macht es schon Sinn so, nur verstehe 
ich leider nicht so ganz warum. Kann mir da einer von euch eben auf die 
Sprünge helfen?

Vielen lieben Dank!

von Wolfgang (Gast)


Lesenswert?

Wie kommst du drauf, dass das ein BLDC Motor sein soll?

von BLDC (Gast)


Lesenswert?

Wolfgang schrieb:
> Wie kommst du drauf, dass das ein BLDC Motor sein soll?

Das wird irgendwo in den Kommentaren des Videos vermutet:

> looks more like a hard drive spindle motor which is a BLDC motor, not a
> stepper. BLDC motors have integral hall switches (usually)

von Wolfgang (Gast)


Lesenswert?

BLDC schrieb:
> Ich verstehe ich nicht, warum hier "enc_last" nur auf die Fälle "1" und
> "2" geprüft wird?

In den Spulen wird nur eine Spannung induziert, wenn das Feld sich 
ändert. Weil die Spulen versetzt angeordnet sind, wird immer nur in 
einer der beiden Windungen eine nennenswerte Spannung induziert, so dass 
die anderen Fälle nicht auftreten.

von BLDC (Gast)


Lesenswert?

Wolfgang schrieb:
> In den Spulen wird nur eine Spannung induziert, wenn das Feld sich
> ändert. Weil die Spulen versetzt angeordnet sind, wird immer nur in
> einer der beiden Windungen eine nennenswerte Spannung induziert, so dass
> die anderen Fälle nicht auftreten.

Aber es wird doch "val" auf "3" hin geprüft. Hinter "val" steckt das 
Makro "ENCVAL", dahinter dann "(PINENC & 0x03)". Es sind also PC0 und 
PC1 gesetzt?

von Michael A. (Gast)


Lesenswert?

Das Signal, dass aus den Spulen herauskommt, ist ein Sinus und ein Cos 
bzw. -Cos (je nach Drehrichtung). Das Programm erzeugt die Zählimpulse, 
aus den Phasen, wo bei der vorhergehenden Ablesung nur eins der Signale 
high waren (enc_last=1 bzw. 2) und bei der folgenden beide gleich sind 
(val=0 bzw. 3)

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.