PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensorlose Drehzahlmessung möglich?



moin
07.08.2006, 23:00
Bitte nehmt Stellung zu meinen Ideen über eine sensorlosen Drehzahlmessung bei kleinen Elektromotoren.

Ich bin auf der Suche nach einer Möglichkeit die Umdrehungsgeschwindigkeit oder beim Robot die zurückgelegte Strecke zu messen, ohne mit einer optischen Drehscheibe und Lichtschranken zu arbeiten.
Bei der Suche im Internet bin ich auf die Idee gestoßen die erzeugte Gegenspannung (EMK oder engl. EMF) zu messen, die proportional zur Umdrehungsgeschwindigkeit sein soll.

Idee 1:
--------
Motor mit einer Gleichspannung versorgen und dann die anliegende Spannung und über einen Shunt den Strom messen. Hieraus müsste man dann eigentlich indirekt die Drehzahl ermitteln können.
- Funktioniert das nur in der Theorie oder ist das so einfach?
- Idee 1 hat den Nachteil, dass der Motor über eine Gleichspannung versorgt werden müsste.

Idee 2:
--------
Motor mit PWM-Regelung und eine „gemittelte“ Spannung und Strom messen.
- Frage: geht das?

Idee 3:
--------
Motor mit PWM-Reglung, die kurzzeitig (für wenige ms) unterbrochen wird. In dieser Zeit würde der Motor dann als Generator wirken und man könnte die induzierte Spannung messen und auswerten.
- Könnte eine solche Schaltung über ein Zusatzboard an die Motorsteuerung RN-MOTORCONTROL angeschlossen werden und die Rolle der Lichtschranken und Tachoscheiben übernehmen. Die Zusatzschaltung müsste dann je nach Geschwindigkeit/induzierter Spannung Impulse in unterschiedlicher Geschwindigkeit abgeben.

Was haltet ihr von diesen Ideen. Hat jemand Erfahrung mit einer sensorlosen Drehzahlregelung


Schon mal vielen Dank für eure Antworten
Euer moin

ranke
08.08.2006, 08:34
Moin moin,
Erfahrung habe ich damit auch nicht, aber schon mal ein paar Gedanken gemacht. Im Prinzip dürfte das schon gehen, man darf sich aber von der Genauigkeit des Verfahrens keine Wunder erwarten.
Die EMK kann ja nicht direkt gemessen werden, sondern nur indirekt über den Strom, der sich ergibt aus: (Klemmenspannung-EMK)/Widerstand.
Der Widerstand des Motors ist aber nicht so genau definiert, der Wicklungswiderstand ist temperaturabhängig, bei Kollektormotoren kommen noch Übergangswiderstände am Kollektor und der Widerstand der Bürsten dazu. Man wird also mit einem gewissen Meßfehler für die Drehzahl rechnen müssen, der nur schwer zu kompensieren ist.
Für die Berechnung der zurückgelegten Strecke muß man die Drehzahlwerte zeitlich aufaddieren (eigentlich: über die Zeit integrieren). Der Meßfehler wird natürlich mit aufaddiert, so daß das Ergebnis - speziell für eine längere Meßzeit - nicht besonders genau werden dürfte.
Um die Fahrtrichtung Deines Robos zu ermitteln, wirst Du die Streckendifferenz zwischen dem linken und rechten Rad ausrechnen. Spätestens dann werden Deine Meßdaten zu ungenau werden.
Ich denke, daß man das Verfahren schon brauchen kann, um die zurückgelegte Strecke des Robos abschätzen zu können. Odometrie wird damit nicht gehen.
Gruß Uli

dwod
08.08.2006, 10:36
Hi,

wie willst Du denn die verschiedenen Rollwidersände des Robots kompenieren ? Wenn dieser über Gras fährt oder eine Steigung hinauf, wird mehr Strom verbraucht als wenn er über eine glatte Fläche fährt.

m.f.G.

Wolfgang

ranke
08.08.2006, 11:32
Wenn dieser über Gras fährt oder eine Steigung hinauf, wird mehr Strom verbraucht als wenn er über eine glatte Fläche fährt.

Ja, und das ist genau die Idee, die dahinter steckt!
Wenn der Rollwiderstand größer wird, dann verbraucht er mehr Strom und fährt gleichzeitig langsamer! Und dieses "langsamer werden", also die Differenz zwischen Sollgeschwindigkeit und tatsächlicher Geschwindigkeit ist es, was man über den erhöhten Stromverbrauch mißt.
Die Sollgeschwindigkeit ist proportional zur Spannung am Motor, die Differenz zwischen Sollgeschwindigkeit und tatsächlicher Geschwindigkeit ist proportional zum Stromverbrauch. Damit kann man aus Spannung am Motor und Strom durch den Motor die tatsächliche Geschwindigkeit ausrechnen.

dwod
08.08.2006, 11:58
Gut, aber Du hast keinen Bzgspunkt.
Der Robot fährt gegen eine Wand : evtl. drehen die Räder durch, oder sie drehen nur langsam, trotzdem ist in beiden Fällen die Geschwindigkeit = 0.
Ebenso wenn Du Schlufp hast (ein Rad dreht durch) oder je nach dem ob die Batteriespannung schwankt, auf jedenfall ist das ne irre rechnerei und dazu auch noch ungenau.

P.S. Hab mal enem so ein elektrisches Golfcaddy repariert. Die Dinger sind billig in der Herstellung, werden aber teuer verkauft.Da gab es 4 Tasten 10m,20m,30m und start. Der Caddy fährt dann die eingestellte Strecke und bleibt dann stehen.
Die haben an der Achse des Motors einfach eine Lochscheibe montiert und die Umdrehungen gezählt (ich weiss, geht auch nicht wenn die Räder durchdrehen).

m.f.G.

Wolfgang

Madgyver
08.08.2006, 12:04
Nur aus interesse: Warum muss ein Golfcaddy eine gewissen Strecke (in meter) abfahren können und dann stehen bleiben? bin mit dem sport nicht so vertraut.

dwod
08.08.2006, 12:36
Hi,
ich auch nicht O:)

auf dem Caddy befindet sich nur das Golfbag (nicht so ein Teil wo man selber drinsitzt).
Der Golfer nimmt seine Schläger , den er zum spielen braucht, und startet dann den Caddy. Dieser fährt dann die vorgegebene Strecke nach vorne. Nach dem Schlag des Golfballs braucht man diese Strecke nicht mehr zurückzugehen.
Ist zu Zeit der Renner bei älteren Leuten [-(

m.f.G.

Wolfgang

Madgyver
08.08.2006, 12:49
Achso verstehe. Dann wäre ja so ein Caddy der einem Beacon hinterherfährt (Asuromässig) ja wohl voll der bringer.

dwod
08.08.2006, 12:55
Hi,

wir sollten uns zusammen tun O:) O:) .
Hab ich auch schon drangedacht, so eine "Follow me" Funktion, das Ding bleibt immer 10m hinter einem.
Das Problem ist nur, wenn man über eine Brücke geht oder an einem Bunker (ein grosses Loch mit Sand) vorbeigeht.
Das Ding müsste immer auf dem Weg bleiben.

m.f.G.

Wolfgang

moin
08.08.2006, 22:56
Um von der Golfcaddy Diskussion wieder zurück zur Ausgangsfrage zu kommen, möchte ich meine Gedanken aus dem ersten Beitrag weiter präzisieren:
Idee 1 und 2 müssen wohl verworfen werden. Der zweiten Idee weine ich ein wenig hinterher, da man eine solche Schaltung in fast jeder PWM-Schaltung verwenden könnte.

Idee 3 wird in der Industrie oder im Modellbau verwendet – wenn man dem Internet glauben darf. Schaltungen zum Abändern habe ich keine gefunden.

In eine bestehende PWM-Regelung mit einem L298 wird für einige Millisekunden der Enable-Eingang des L298 gegen LOW gezogen. Die Ausgänge des L298 sind meines Wissens dann hochohmig. Der Motor dreht dann aufgrund seiner Trägheit aber noch weiter. Nun müssen wir eine gewisse Zeit warten, damit sich die bestehenden Magnetfelder abbauen können (Dauer unbekannt – erster Ansatz 1ms). Dann wird mit einem Differenzialverstärker die Spannung gemessen die am Motor induziert wird (erste Ansatz 10ms).

Um die Spannung zu messen fallen mir zwei Möglichkeiten ein:

(1) Mit einer aktiven Filterschaltung eine mittlere Spannung ermitteln und mit einem AD-Wandler messen.

(2) Die induzierte Spannung mit einer Integrierschaltung mit einem OPV ermitteln und mit einem AD-Wandler messen. Die Zeitglieder müssten dann noch experimentell ermittelt werden. Vor jeder Messung müsste dann die Integrierschaltung entladen werden.

Wie würdet ihr an die Sache herangehen?

Euer moin

Madgyver
08.08.2006, 23:44
Das Magnetfeld bricht wesentlich früher zusammen und die Spannung tritt während des Zusammenbruches auf.
Sofort nachdem die ON-Phase des PWM signals sich ausgeschgaltet hat, kann man die induzierte Spannung messen. Diese macht sicht als kleiner Peak am ende jedes Blockes bemerkbar. Diese Peaks sind aber so schmal, dass man sich schon eine wirklich gute methode ausdenken muss um diese zu messen.

Manf
09.08.2006, 10:21
In eine bestehende PWM-Regelung mit einem L298 wird für einige Millisekunden der Enable-Eingang des L298 gegen LOW gezogen. Die Ausgänge des L298 sind meines Wissens dann hochohmig. Der Motor dreht dann aufgrund seiner Trägheit aber noch weiter. Nun müssen wir eine gewisse Zeit warten, damit sich die bestehenden Magnetfelder abbauen können (Dauer unbekannt – erster Ansatz 1ms). Dann wird mit einem Differenzialverstärker die Spannung gemessen die am Motor induziert wird (erste Ansatz 10ms). ...
Wie würdet ihr an die Sache herangehen?
Du kannst Dir ja einmal ansehen, was bei PWM wirklich abläuft, welche Periodendauer der PWM zu welcher elektrischen Zeitkonstante passt.
Bei den beiden Spannungen die bei PWM abwechselnd an den Motorklemmen anliegen (Quelle und Freilaufdiode) wird der Strom größer und kleiner, manchmal bei kleinen Mittelwerten treten auch Lücken auf ("lückender Betrieb").

Die Spannungen die zusammen die Klemmenspannung des Motors ergeben sind die induzierte Spannung, der Spannungsabfall des Stroms am Wicklungswiderstand, die Spannung an der Induktivität der Motorwicklung aufgrund der Stromänderung (und die Spannung an den Kontaktbürsten die bei guten Motoren klein sein soll).
Manfred

BoogieDave
29.08.2006, 08:01
Hallo
ich bin auch gerade an dem Thema sensorlose Drehzahlregelung interessiert. Mein Ansatz ist folgender:
Wenn man den Stromverlauf (eines Gleichstrommotors) aufm Oszi anguckt sieht man eine periodische Schwingung, deren Frequenz proportional zur Drehzahl sein müsste. Diese Schwingung resultiert meines erachtens aus der EMK beim Spulenwechsel im Kommutartor. Es gibt eine Kurze Stromspitze, die aus dem Abrissfunken bei unterbrechen der "alten" Spule resultiert und dann eine Rampe die vom Aufbau des Magnetfeldes um die "neue" Spule herrühert. Wenn ich den Motor belaste, geht auf Grund der verringerten Drehzahl Frequenz runter und durch den höheren Laststrom die Amplitude hoch. Wenn man nun das Signal entkoppelt entsprechend aufbereitet (Clipper, Filter, Trigger), dann müsste man daran ideal die Drehzahl messen können. So bringt ein RB35 Motor bei 12 Volt unbelastet ca. 300 Hz und wenn er gerade noch so unbelastet läuft ca. 80 Hz.

Mein Problem ist nun die PWM. Wenn ich die PWM von unserem µC-Board nehme, die mit 80 Hz arbeitet, überlagern sich im niedriegen Drehzahlbereich die Frequenzen so, dass ich kein Drehzahlsignal heraus bekomme. Mein Lösung wäre jetzt eine "hochfrequente" PWM zu nehmen, die z.B. auf 5 kHz arbeitet. Die Frequenz kann man denn gut rausfiltern, dass man nen sauberes Drehzahlsignal bekommt.
Was meint ihr dazu? Könnte das klappen?

sigo
29.08.2006, 22:05
Boogie, wenn du eine 5kHz - PWM nimmst, fließt ein fast konstanter Strom durch den Motor, da dieser bei einer Induktivität bekanntlich pertout nicht springen möchte. Du wirst von der PWM kaum noch was im Strom sehen.. Aber wenn der Motor kommutiert, passiert ja was mit der Indktivität und dem Widerstand, sodass es einen kurzen Sprung im Strom gibt, weil die "frische" Wicklung ja noch nicht gesättigt ist.

Ich denke, dass man bei einer 5-15kHz PWM die Kommutierungsfrequenz mit geringen Aufwand aus dem Strom extrahieren kann.. solange die Bürsten gut sind, nun nicht "feuern".

sigo

BoogieDave
30.08.2006, 09:42
Ich hab die Schaltung gestern erstmal aufgebaut und nen bissl rumgerechnet. Ich hab mit ner PWM-Frequenz von 15-30 kHz gearbeitet. Diese ist bei meinem Aufbau relativ unkritisch, da ich nen aktiven Tiefpass mit ner Güte von 2,3 auf 1,88 kHz habe um die PWM rauszufiltern. Nach dem Filter und nem Verstärker bekommt man mit nem Schmitt-Trigger mit geringer Hysterese sogar im niedrigen Drehzahlbereich sehr saubere Pulse.
Also es funktioniert :)

jeffrey
01.09.2006, 00:56
Hi,
kannst du deine Schaltung und deine Messergebniss hier bitte veröffentlichen?
Gute Nacht Jeffrey

frank-findus
01.09.2006, 07:42
Hab ich auch schon drangedacht, so eine "Follow me" Funktion, das Ding bleibt immer 10m hinter einem.



Witzig. Und wenn man drauf zu geht, fährt es weg - es soll ja Abstand halten :-)

Ok, zum Motor. Könnte man nicht über einen Hochpass direkt am Motor die Störimpulse vom Bürstenfeuer auskoppeln und zählen? Ich bin sicher, die korrellieren gut mit der Drehzahl ...

Frank

BoogieDave
01.09.2006, 22:53
Hi,
kannst du deine Schaltung und deine Messergebniss hier bitte veröffentlichen?
Gute Nacht Jeffrey
Ich könnte die Filterschaltung veröffentlichen aber ich bin momentan noch an der Regelung, deshalb würde ich alles komplett posten, aber das kann noch ein bis zwei Wochen dauern. Die Regelung läuft soweit ganz gut. Ich wandele den Drehzahlimpuls linear in ne Spannung um, subtrahiere sie vom Sollwert und regele über nen PID-Regler die PWM für den Motor. Im unteren Drehzahlbereich flattert die PWM etwas, aber das hängt meines Erachtens am Motortreiber. Das krieg ich aber noch in den Griff.
Wie gesagt ich werde alles dokumentieren.

mfg Dave

jeffrey
13.10.2006, 13:17
Hallo,
ich wollte mal fragen, was aus dem Versuch geworden ist.
MfG Jeffrey

BoogieDave
14.10.2006, 23:51
ich wollte mal fragen, was aus dem Versuch geworden ist.
Hallo
der Versuchsaufbau funktioniert einwandfrei. Unter Belastung regelt die Schaltung den PWM-Grad hoch, sodass die Drehzahl gehalten wird. Für unseren Fußballroboter habe ich jetzt die Leiterplatten mit Drehzahlregelung und Spannungswandler entworfen. Jetzt werde ich mich demnächst ans ätzen machen. Die Dokumentation kann noch nen bissl dauern, da ich im Moment im Abi-Stress bin und daher wenig Zeit für den Schreibkram hab.

MfG Dave

stupsi
15.10.2006, 12:26
ich habe vor einiger Zeit die Stromaufnahme eines RB35-Motors bei verschiedener Belastung oszillografiert.
(Die im Schaltplan vorhandene Drehzahlauswertung hab ich nicht weitergeführt !!! )

Link: Messprotokoll_3_Strom_RB35.pdf (http://home.arcor.de/stupsi74/infos/Messprotokoll_3_Strom_RB35.pdf)

@ boogiedave: Siehst du Ähnlichkeiten mit deinen Messungen des Motorstroms?


Gruß Stupsi

BoogieDave
15.10.2006, 23:08
Hallo
wie ich deinen Aufzeichnungen entnehme, misst du die Drehzahl anhand des Gleichstromanteils. Ich benutze, wie du es in der abschließenden Bermerkung angebracht hast, die Frequenz des Motorstroms. Dazu filtere ich zuerst die PWM-Frequenz heraus, verstärke das Signal und mache mit nem Schmitt-Trigger schöne Pulse draus. Diese steuern dann den Frequenz-Spannungs-Wandler. Dessen Ausgansspannung wird dann mit dem Sollwert, der via original PWM vom Controller-Board kommt verglichen. Die Differenz geht an den Regler (da bin ich noch am experimentieren ob PI oder PID), der mit Hilfe des Pulweitenmodulators den Motor steuert. Das konzept ist noch im Test aber soweit funktioniert es.

Gruß Dave

stupsi
16.10.2006, 22:24
nein, es ist nur eine untersuchung, wie stark die messspannung am Strommessshunt geglättet werden muss, um ihn mit einem a/d-wandler den gleichstromwert eines motorstromes möglichst genau zu messen.

BoogieDave hatte geschrieben:
------------
Wenn man den Stromverlauf (eines Gleichstrommotors) aufm Oszi anguckt sieht man eine periodische Schwingung, deren Frequenz proportional zur Drehzahl sein müsste. Diese Schwingung resultiert meines erachtens aus der EMK beim Spulenwechsel im Kommutartor. Es gibt eine Kurze Stromspitze, die aus dem Abrissfunken bei unterbrechen der "alten" Spule resultiert und dann eine Rampe die vom Aufbau des Magnetfeldes um die "neue" Spule herrühert. Wenn ich den Motor belaste, geht auf Grund der verringerten Drehzahl Frequenz runter und durch den höheren Laststrom die Amplitude hoch.
-------------

ich hab nur zu deiner schönen Beschreibung die bilder hinzufügen wollen.
Das sieht man doch auf den oszillogrammen vom RB35 ganz gut.

die eingezeichnete drehzahlauswertung hab ich nicht weiter verfolgt.

Gruß stupsi

jeffrey
17.10.2006, 01:24
@stupsi

hi,
welche auflösung hat denn die y achse auf deinen plots?
mfg jeffrey

stupsi
17.10.2006, 08:47
für diesen thread gilt die obere, ungefilterte Bilderrreihe mit 100mV/teil und 1ms/Teil
Da ja der RB35-Strom gemessen wird, entspricht es einem Motorstrom von ca. 0,25A/Teil.

BoogieDave
17.10.2006, 23:02
Der Verlauf der EMK ist auf den Oszillogrammen wirklich sehr gut sichtbar. Danke, jetzt kann man das Prinzip meiner Regelung besser nachvollziehen.

mfg Dave

jeffrey
15.03.2007, 13:00
Hallo,
wollte das hier mal wieder rauskramen. Was ist denn bei der Regelung jetzt eigentlich rausgekommen.
Oder hat jemand ne Idee, wie man den Schmitt Trigger realisieren kann. Irgendwie sehe ich ein Problem darin, dass sich die Referenzspannung ja die ganze Zeit ändert. Außerdem sit ja bei voller Motorleistung die referenzspannung gleich der Versorgungspannung, es müssen also Spitzen erkannt werden, die über der Versorgungspannung liegen.
MfG jeffrey

MrDeeds1981
12.04.2007, 09:41
Hallo zusammen,

ein paar Fragen/Anregungen meinerseits. Warum einen PID Regler nutzen? Meiner Meinung wird Drehzahlregelung immer mittels PI Regler gemacht? Und eine andere Sache, wenn geregelt wird und somit das PWM Verhältniss geändert wird, muss ja auch sicher gestellt werden, dass der Strom zur richtigen Zeit vom Controller ausgewertet wird. Hat damit schon irgendjemand Erfahrungen ´gemacht?

nice_to_know
19.04.2007, 01:26
Hi @ all.

nur mal so laut gedacht:

die drehzahl einer GSM ergibt sich doch aus

n=(U-I*Ra) / (c1 * phi)

dabei sind Ra, c1 und phi = const.

wenn man jetzt mit hilfe der pwm und stromsensor konstant hält bzw regelt, dann kann man ist U ~ n.

hm...

da M= phi * c2 * Ia mit c2=c1/(2*pi)
kann man mit vorgabe eines soll-stromes auch das drehmoment regeln und damit beschleunigen oder bremsen um die gewünschte solldrezahl zu erreichen.

problematich könnte die welligkeit Ua's werden vor allen bei geringen drehzahlen(Filter, mittelwert???)

Ua -> Ankerspannung, messen?!
c1,c2 -> motorkonstanten, evtl aus datenblatt der GSM
phi -> eregerfeld, evtl unbekant
-- manchmal wird auch c1*phi als kombinierte konstante angegeben, müsste wenn unbekannt aus der motorkennlinie ermittelt werden(oder trial and error)

Stromreglung : PI-Regler, meist reicht aber auch n 2-Pulsregler(fensterkomperator erzeugt direckt n pwmsignal)
Drehzalreglung : PI Regler

PID-Regler setzt man nur ein wenn unbedingt nötig, wegen der starken anfälligkeit gegenüber störimpulsen und sollwertsprüngen --> kann zum unkontrollierten schwingen führen

ok was meint ihr dazu?


-- cu