Hi,
ich bin zwar mit Mikrocontrollern einigermaßen vertraut, aber
Operationsverstärker sind ein neues Thema für mich. Insofern gehe ich
fast davon aus, dass meine Schaltung nicht perfekt ist. Konstruktive
Kritik ist natürlich erwünscht ;).
Ich versuche einen Brushless DC Motor mittels eines
Operationsverstärkers als Encoder zu benutzen. Der Operationsverstärker
in meinem Fall ist ein LM358. Der Motor ist ein "MYSTERY D2825-5000 5000
Rpm/V Brushless Outrunner", welchen ich noch von meinem Modellflieger
über habe. Angeschlossen ist das Gebilde letztendlich an einem ATmega88.
Die Schaltung sieht im Wesentlichen so aus wie im Bild im Anhang dieses
Beitrags angedeutet. Die drei "freien" Leitungen auf der linken Seite
sind mit den 3 Phasen des BLDC Motors verbunden, die zwei "freien"
Leitungen auf der Rechten Seite führen zu je einem Pin an meinem
ATmega88.
Der Mikrocontroller schaut sich dann den jeweils aktuellen Zustand der
zwei Pins an und vergleicht diesen mit dem vorhergehenden Zustand und
inkrementiert bzw. dekrementiert eine Variable. Der relevante Ausschnitt
sieht in etwa so aus:
1 | uint8_t val = (PINB & 0x03);
|
2 |
|
3 | if (val == last) { continue;
|
4 |
|
5 | } else if (last == 1 && val == 3) {
|
6 | increase();
|
7 | } else if (last == 1 && val == 0) {
|
8 | decrease();
|
9 | } else if (last == 2 && val == 0) {
|
10 | increase();
|
11 | } else if (last == 2 && val == 3) {
|
12 | decrease();
|
13 | }
|
14 |
|
15 | last = val;
|
Prinzipiell funktioniert das Ganze auch schon. Es ist nur so, dass zum
Teil (wenn man langsam dreht, oder sich die Drehung zum Ende hin von
selbst verlangsamt) "Schritte" verloren gehen bzw. sogar falsch, d.h.
als Schritte in die "falsche" Richtung erkannt werden. Meine Erklärung
dafür ist, dass der Operationsverstärker nicht "stark" genug ist und
dadurch "Zustände" verloren gehen.
Bevor ich jetzt aber aus solchen Vermutungen heraus einen (teuren)
empfindlicheren Operationsverstärker erwerbe (gäbe es dafür
Vorschläge?), wollte ich fragen, was ihr zu dem Ganzen sagt? Lässt sich
mit dem aktuellen Aufbau mehr herausholen?
Leider steht mir kein Oszilloskop zur Verfügung. Im Min-Max Modus meines
Multimeters messe ich bei "langsamer" Drehung des BLDC Motors in etwa
0,1 - 1 mV zwischen je zwei Phasen. Das liegt halt einfach unter dem
Wert, für den der LM358 spezifiziert ist. Nur ist das mit dem Multimeter
eher eine Schätzung als eine Messung ;).
Im Übrigen frage ich mich auch warum bei vielen (allen?) Aufbauten mit
Komparatoren Widerstände verwendet werden? Dienen diese lediglich zur
Strombegrenzung oder haben die auch einen anderen Zweck?
Vielen Dank!