PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehzahlmessung BL-Motor



Minifriese
07.01.2009, 21:22
Moin moin!

Ich teste gerade die angehängte Schaltung für die Drehzahlmessung an einem Brushless-Motor. Scheint auch zumindest nicht ganz falsch zu sein: Auf dem Oszi sieht es so aus wie auf dem zweiten Bild im Anhang. Die weiße Kurve ist bei mir "Null C", die rote Kurve ist "Mittel", letzteres allerdings noch mit einem weiteren Kondensator 100 nF gegen Masse gedämpft (vorher war's sehr zappelig).

Was mir einleuchtet, ist daß "Mittel" immer drei Perioden durchläuft, während "Null C" genau eine schafft. Der Motor hat ja drei Pole, von denen C nur einer ist.

Mich wundert aber die Frequenz von "Null C". Eine Periode dauert 2,78 ms, das wären also 360 Hz. Der Motor läuft hier aber mit einer Drehzahl von 3140 rpm, das sind 52,3 Hz. Liegt also um einen Faktor 6,88 falsch. Bei einer anderen Drehzahl (knapp 4900 rpm) kam ich auf einen Faktor sieben.

Wo kommt diese sieben her? Wenn ich den Motor von Hand drehe, gibt es genau 12 "Einrast"-Stellungen. Ich weiß nicht genau, wie die Pole im Motor angeordnet sind, daß aus drei Polen 12 Positionen werden, aber zum Faktor sieben paßt das irgendwie gar nicht, oder? Hat jemand eine Idee?

Nils

EDIT: Thread-Titel angepaßt

ranke
09.01.2009, 06:47
Hallo Minifriese,

ich halte mich zwar auch nicht unbedingt für den Motorspezialist, aber vielleicht kann ich doch etwas beitragen.

1. Zum Drehzahlproblem:
Stellen wir uns einen sehr einfachen Brushless vor, im Stator mit nur drei Spulen, jeweils um 120° versetzt und einem einfachen, zweipoligen Permanentmagnet im Läufer.
Dieser Motor wird während einem Sinusdurchlauf an (z.B. Phase C) genau eine Umdrehung des Läufers machen, die Ansteuerfrequenz wäre also gleich der Drehzahl.
Modifiziert man diesen Motor, indem man 6 Spulen einbaut (jeweils 2 gegenüberliegende Spulen werden vom gleichen Strom im gleichen Wickelsinn durchflossen), dann muß man auch den Läufer mit insgesamt 4 Magnetpolen ausrüsten. Die Anordnung ist also punktsymetrisch zur Drehachse. Man erhält dann eine Drehzahl, die nur halb so groß ist, wie die Eingangsfrequenz, da sich das Drehfeld ja immer nur drei Spulen weiterbewegt.
Das Drehmoment sollte sich dafür verdoppelt haben, weil ja beide Motorhälften gemeinschaftlich am Rotor drehen.
Wenn Du bei Deinem Motor eine Drehzahl von einem siebtel der Ansteuerfrequenz mißt, dann sollte Dein Motor also 7 Polpaare besitzen (im Läufer) und insgesamt 21 Spulen (im Stator).

2. Rasten:
Das Rasten im unbestromten Zustand hat wenig mit der Anzahl der Polpaare zu tun. Es ist einfach die Tatsache, daß sich die Permanentmagnete (2 Pole pro Polpaar) bezüglich dem gezahnten Läufer (3 Zähne pro Polpaar) ausrichten wollen. Wie die optimale Ausrichtung ist, hängt auch stark von der Form der Zähne ab. Meistens sind 6 oder 12 Raststellungen fühlbar, gelegentlich wird auch die Geometrie auf minimales Rasten optimiert.

Minifriese
09.01.2009, 10:29
Moin moin!

Das klingt sinnvoll. Ich habe jetzt mal den Motor zerlegt und siehe da: Der Stator hat 12 Spulen und der Läufer hat 14 Magneten, also wohl in der Tat 7 Polpaare. Daß es nur 12 Spulen gibt, könnte das die von dir erwähnte Auslegung auf minimales Rasten sein? Wenn die Spulenzahl kein Vielfaches der Polzahl ist, kann der Läufer sich ja nicht genau auf einen Pol ausrichten, weil die andere Seite dann zwischen zwei Polen steht.

Mein nächster Schritt ist jetzt die eigentliche Drehzahlmessung. Dazu will ich das Signal an "Null C" (oder A oder B) mit einem etwas größeren Kondensator gegen Masse noch etwas glätten. Dieses Signal lege ich dann auf den positiven Eingang des Analog Comparators im AVR. Am negativen Eingang werde ich über einen separaten Spannungsteiler genau den DC-Offset des Signals "Null C" einstellen. Dadurch sollte der ADC bei jeder Periode einmal auf Eins und wieder auf Null gehen. Brauche ich eigentlich die komplette Schaltung, mit allen drei Phasen und dem virtuellen Sternpunkt, oder würde quasi ein Drittel der Schaltung (ohne Sternpunkt) auch reichen?

Gruß,
Nils

ranke
09.01.2009, 13:27
12 Spulen und 14 Magnete scheint nicht unüblich zu sein. Hier werden verschiedene mögliche Bewicklungsschemata angegeben:

http://www.powercroco.de/Schema.html

Für die Drehzahlmessung sollte eine Frequenzmessung an einer Phase genügen. Ein Tiefpass ist sicher notwendig um die PWM-Frequenz herauszufiltern, andererseits sollte die maximale Ansteuerfrequenz noch erkennbar sein.

Minifriese
11.01.2009, 11:07
Moin,

So, mit dem linken Teil der Schaltung auf dem angehängten Bild bekomme ich ein schönes Signal von einer der Motorphasen. Nicht direkt ein Sinus, aber annähernd, und auf jeden Fall periodisch. Der DC-Offset des Signals ist 3V (vermutlich relativ gut einstellbar über die beiden Widerstände ganz links), die Amplitude ist knapp 1V Spitze-Spitze. Ich will jetzt die Frequenz dieses Signals mit einem AVR-Pin messen. Da ich vier dieser Signale habe, aber keine vier Interrupt-Pins, will ich dafür jeweils normale Input-Pins verwenden (mit der Pin-Change-Interrupt Funktion des AVRs).

Dafür muß ich natürlich den DC-Offset wegbekommen bzw. dafür sorgen, daß das Signal zwischen den High- und Low-Pegeln des AVR-Pins toggelt. Also vorzugsweise zwischen 0 und 5 V hin und her schaltet, mit der ursprünglichen Frequenz.

Die Schaltung rechts im Bild sollte das prinzipiell können, oder? Ich weiß nur mal wieder nicht, wie ich die Bauteile dimensionieren muß. Kann da jemand helfen?

Oder ist vielleicht eine andere Schaltung nötig? Sowas ähnliches hatte ich mal für einen Ultraschall-Empfänger gebaut, da hatte ich noch einen Kondensator zur Entkopplung und zwei Widerstände für eine Vorspannung des Transistors mit drin. Leider habe ich davon aber keinen Schaltplan mehr und wüßte erst recht nicht, wie das zu dimensionieren wäre...

Schönen Sonntag,
Nils

avion23
11.01.2009, 12:51
Hallo Nils,
zwei Vorschläge:
An einer Z-diode fällt Spannung ab, d.h. du kannst die Spannung damit abschneiden. Ein Portpin schaltet bei ungefähr 0,2*Vcc = low und 0,7*Vcc = high, je nach Betriebsspannung (Datenblatt). Damit müsstest du es anpassen können. Statt einer Z-Diode kannst du auch Normale Silizium-Dioden verwenden. Dort fallen 0,6V - 0,7V ab.

Zweiter Vorschlag:
Du könntest den AD-Wandler verwenden und das Signal abtasten. Der Vorteil ist, dass du eine kleinere externe Beschaltung brauchst (weniger Hardware) und mit der Software flexibel reagieren kannst. Den AD-Eingang könntest du kontinuierlich samplen und in deiner ISR ein flag setzen, wenn die Spannung über einem bestimmten Wert war. Ein Nachteil ist die Zeit, eine Wandlung dauert ungefähr 13,5µs.

Minifriese
11.01.2009, 16:26
Moin!

Kannst du genauer erklären, wie das mit den Zenerdioden gehen soll? Das kann ich mir nicht so recht vorstellen.

Die Analogeingänge könnte ich zwar benutzen und der Hardwareaufwand wäre wohl in der Tat gering. Aber dafür ist dann softwaremäßig ein ziemlicher Overkill und eigentlich hatte ich die ADCs schon anders verplant...

Gruß,
Nils

Minifriese
02.02.2009, 13:53
Moin moin!

Ich versuche gerade mit der angehängten Schaltung das ungefähr sinusförmige Signal von der Motorphase in ein Rechtecksignal gleicher Frequenz umzuwandeln. Von letzterem will ich dann per AVR die Frequenz und damit die Drehzahl messen. Leider bleibt der OPV-Ausgang stabil auf Null. Zwischen Cin und dem positiven Eingang des OPVs sehe ich mein Sinussignal, ohne DC-Offset. Am negativen Eingang liegen etwa 2,5V an, die per Spannungsteiler aus Vcc erzeugt werden.

Die OPV-Schaltung habe ich aus einem Buch (OpAmps Single Supply), das sollte eine reine Verstärkerschaltung sein. Mit meinen Bauteilen wäre die Verstärkung 11.
Muß ich vielleicht stattdessen doch einen Differenzialverstärker aufbauen?

Gruß,
Nils

PICture
02.02.2009, 21:16
Hallo Minifriese!

Ich möchte nur eine einfachste Schaltung im Code vorschlagen. Mit dem Trimmpoti P kann man Amplitude des Ausgangsrechtecks ändern.

MfG

VCC
+
|
+---------+---------+ M = Motor
| |
| .-.
C| | | Rc
L C| | |
C| C '-'
| || |
+-||-+ +-----> Zähler
| || | Rb |
/ \ .-. ___ |/
( M ) | |<-|___|-+--| T
\_/ | |P | |>
| '-' - |
| | D ^ |
| | | |
=== === === ===
GND GND GND GND

ranke
03.02.2009, 06:09
Hallo minifriese,
ich vermute, daß Deine Schaltung nicht geht, weil der Gleichspannungspegel am Operationsverstärker (+) Eingang nicht definiert ist. Mögliche Abhilfe: Cin weglassen oder durch einen Widerstand ersetzen. Du sagst zwar, daßss Du keinen DC-Offset über dem Kondensator messen kannst, es ist aber möglich, dass der Offset nur dann verschwindet, wenn ein Meßgerät angeschlossen ist (weil es einen hohen aber endlichen Innenwiderstand hat).
Wenn Du den Cin wegläßt, sollte man vielleicht noch daran denken, die Eingangsspannung zu begrenzen (manche OPs mögen keine Spannungen am Eingang, die höher oder niedriger sind, als die Betriebsspannung des OP). Das könnte man mit je einer Diode vom (+) Eingang zu Vcc bzw. zu Masse machen, die so gepolt sind, dass sie normalerweise sperren.

Oder Du verwendest gleich die einfache Schaltung, die PICture vorschlägt.

Minifriese
03.02.2009, 09:54
Moin moin!

Danke für die Tips. Ich habe die Schaltung von PICture getestet, mit einem BC547 (hFE=340), einem 10k-Poti und 10k als Kollektorwiderstand. Für den Kondensator habe ich Werte zwischen 22pF und 0,1 µF getestet, aber damit bekomme ich kein Signal (Ausgang bleibt unabhängig von der Potistellung auf 5V). Lasse ich den Kondensator weg und lege das Signal direkt auf das Poti, kann ich letzteres so einstellen, daß ein schönes Rechteck (bzw. Trapez) rauskommt. Allerdings ist diese Einstellung stark drehzahlabhängig. Vermutlich, weil bei steigender Drehzahl die Akkuspannung einbricht und daher der DC-Offset anders ist, der ja ohne Kondensator nicht mehr herausgefiltert wird.

In welcher Größenordnung müßte denn der Kondensatorwert liegen, damit ein Signal durchkommt?

Ich habe auch mal probiert, durch einen Spannungsteiler die Basisspannung so einzustellen, daß am Ausgang 2,5V DC anstehen. Dann habe ich das Signal über einen Kondensator (mit den oben erwähnten Werten) an die "vorgespannte" Basis gelegt. Dabei kommt aber nur ein leichtes Rauschen auf dem Ausgang raus...

Das Eingangssignal hat eine Amplitude von knapp 2V Spitze-Spitze, der DC-Offset schwankt wie gesagt lastabhängig, so zwischen 11 und 7V.

Gruß,
Nils

ranke
03.02.2009, 14:14
Ich habe auch mal probiert, durch einen Spannungsteiler die Basisspannung so einzustellen, daß am Ausgang 2,5V DC anstehen. Dann habe ich das Signal über einen Kondensator (mit den oben erwähnten Werten) an die "vorgespannte" Basis gelegt. Dabei kommt aber nur ein leichtes Rauschen auf dem Ausgang raus...


Keine schlechte Idee. Wahrscheinlich ist der Kondensator zu klein, ein Elko im zweistelligen Mikrofaradbereich darf es schon sein, eventuell mit einem kleinen Widerstand zur Begrenzung des maximalen Basisstroms (z.B. 1kOhm).

Minifriese
03.02.2009, 21:42
Moin!

So, endlich hat mal was funktioniert...

Mit der angehängten Schaltung kam das ebenfalls angehängte Signal raus. Die weiße Kurve ist das Signal vor dem Koppelkondensator, die rote Kurve der Ausgang. Das sollte klar genug sein, daß der AVR die Frequenz damit messen kann.

Vielen Dank für die Típs!

Nils