Welchen Motor für Kabelzug? Geht das mit BLDC?

Fesh

User
Ich will gar kein Modell bauen, sondern eine Fahrrad-Kettenschaltung elektrifizieren.
Klar, falsches Forum - aber hier sind die Kleinmotor-Experten.
thumbs up


Ich favorisiere eine Getriebelösung mit Schnecke. Am klassischen mechanischen Schalthebel wird der Schaltzug ja auch auf ein Rädchen aufgewickelt das man mit dem Daumenhebel dreht. Sowas sollte man auch mit einem E-Motor drehen können. Die Schnecke verhindert eine Rückdrehung durch die Rückstellfeder im Schaltwerk wenn der Motor stromlos ist.

Also Motor dreht Schnecke, Schnecke dreht Untersetzungszahnrad, auf derselben Welle sitzt ein Kunstoffrad mit einer Nut wo der Schaltzug aufwickelt wird (eh nur eine halbe Umdrehung), zieht am Schaltzug (bzw. lässt los), und das Schaltwerk (bzw. dessen Rückstellfeder) bewegt die Kette auf ein anderes Ritzel.

Anforderungen hinten (Schaltwerk für 8-12 Ritzel)
Zugweg: max 40mm
Speed: >50mm/sec (<0,8sec für 40mm)
Zugkraft: max 15kg (150N)

Vorne kommt als Nachteil hinzu, dass der Umwerfer zwischen Kettenblatt und Ritzel, d.h. im Kettenzug sitzt. Wenn der Fahrer beim Schalten nicht den Druck auf das Pedal verringert steigt die benötigte Kraft. Hinten sitzt das Schaltwerk "hinter" dem Ritzel, also nicht im Kettenzug.

Anforderung vorne (Umwerfer für 2-3 Kettenblätter)
Zugweg: max 20mm
Speed: >40mm/sec (<0,5sec für 20mm)
Zugkraft: max 30kg (300N) wenn unter Last geschaltet wird

Wie berechnet man das nötige Motordrehmoment (aus Zugkraft und Radius des Aufwickelrades und Rotationsgeschwindigkeit)?

Montiert werden soll das Ding unter der Kettenstrebe, so dass der Schaltzug nur noch 20cm kurz wird. In der Länge hat man viel Platz (>30cm), Breite und Höhe so klein wie möglich. Ich suche also einen eher langen, dünnen Motor der stark genug ist dass auf Knopfdruck am Lenker flott geschaltet wird.

Stromversorgung: Zwei 18650 Lithiumzellen. Also Akku voll 8,4V, typisch 7,2V, ziemlich leer 6,0V, spätestens bei 5,8V wird auf ein mittleres Ritzel geschaltet damit man nicht im größten oder kleinsten nach hause fahren muss, und zum Schutz der Akkus alles heruntergefahren. 3 Ampere oder auch mehr sind kein Problem.

Welchen Motor könnte man dafür verwenden?

Ansteuerung via Arduino Nano 33 BLE.
Rein theoretisch sollte ein BLDC-Motorcontroller doch mitzählen können wieviel Umdrehungen der Motor macht. Gibt es einen Controller der das an den Arduino zurückmelden kann oder gar eine simple MOSFET-Konstruktion die direkt vom Arduino gesteuert wird (Motorcontroller in Software)?

Zwischen zwei Gängen sind (je nach Schaltwerk) z.b. 1,8mm Kabelzug. Wenn sich nach ein paar Tagen (oder Wochen) das um 0,2mm verschiebt dann leidet die Schaltgenauigkeit. Also, ich brauche keine Hundertstel mm Präzision, aber Zehntel schon.

Beim Fahrrad passiert es durchaus wenn man im Gelände fährt dass ein Ast im Schaltwerk landet. Bei mechanischen Schalthebeln merkt der Fahrer am ungewohnten Gegendruck dass da was nicht stimmt, aber ein Drucktaster am Lenker gibt keine Rückmeldung...
Damit der Arduino eine LED blinken lassen kann (so dass der Fahrer mitbekommt dass was nicht stimmt), braucht er selber diese Info vom Motorcontroller. Dazu muss der Controller irgendwie feststellen können dass der Motor nicht dreht, ohne zu versuchen mit brachialer Gewalt den Schaltzug zu zerreißen oder das Schaltwerk zu verbiegen.

Wenn ich mit meinen Fragen hier völlig falsch bin, wäre ich dankbar für einen Tip auf ein besser geeignetes Forum (deutsch oder englisch)...
Danke
 
Hallo !
Du kanst dein Untersetzungszahnrad direkt mit einem Hallwinkelsensor koppeln : https://www.ebay.de/itm/25487064523...MIj8_egefd7wIVFKWyCh2FZAOrEAQYBSABEgLQ8fD_BwE
Du könntest auch die Schnecke von einem Steppermotor antreben lassen, dann kannst du die Schritte mitzählen, das wird aber groß & schwer.
Lieber dann einen kleinen Motor und eher drehzahl zum Stellen verwenden. Was auch geht ist ein Servo ohne Endanschlag mit einer Nockenscheibe, die einen Hebel drückt, da ist nur die Frage, ob der weg reicht. Schmutz ist immer ein problem, deshalb auch der Hallsensor.
Viele Grüße,
Sebastian
 
Zuletzt bearbeitet:

Fesh

User
Hallo !
Du kanst dein Untersetzungszahnrad direkt mit einem Hallwinkelsensor koppeln : https://www.ebay.de/itm/254870645237
Du könntest auch die Schnecke von einem Steppermotor antreben lassen, dann kannst du die schritte mitzählen, das wird aber groß& schwer.
Deswegen fragte ich ja ob es einen BLDC-Controller gibt der mitzählen kann. Letztlich muss der ja auch die drei Phasen einzeln ansteuern, dann kann man die ja auch gleich zählen statt extra einen Hallsensor zu verbauen.
Eigentlich ist das trivial - man legt einen Ausgang des Controllers auf einen Eingang des Arduino und der zählt...

Lieber dann einen kleinen Motor mehr drehzahl zum stellen verwenden.
Genau. Erhöht auch die Positioniergenauigkeit.

Was auch geht ist ein Servo ohne endanschlag mit einer Nockenscheibe, die einen Hebel drückt, da ist nur die Frage, ob der weg reicht.
Servo müsste in den langen (Leerlauf-)Phasen zwischen zwei Gangwechseln aktiv gegen die Rückstellfeder halten, verbraucht also Haltestrom. Bei einem BLDC mit Schnecke kann man den Motor stromlos schalten, und die Schnecke hält den Zug.

Bleibt die Frage: welcher BLDC-Motor und welcher Controller?
 
Hi !
Zur Nockenscheibe :
Da muss das Servo nichts halten, da es nur den Hebel wegdrückt, das ist auch selbsthemmend. Drehpunkt des Hebels ist nicht Rotationsachse der Scheibe.

Ansonsten: Hallsensor deshalb, weil du evtl auch Schrittverluste hast. Nur über gezählte umdrehungen weiss dein Motor nach dem Anschalten auch nicht wo er ist,da brauchst du eh irgendeine Referenz. Ich würd deshalb lieber den Hallsensor nehmen, da schlägst du mehrere fliegen mit einer klappe, für Motor und regler reicht dann irgendwas einfaches an Standardmaterial.

VG,
Sebastian
 

S_a_S

User
BDLC ist overkill. Und ganz trivial ist die Bestimmung der Rotorlage auch nicht. Geht einfacher mit einem normalen Bürstenmotor mit Hallsensor am Rotor. Auch da lassen sich dann ganze Umdrehungen zählen. So sind z.B. Sitzsteuerung oder Spiegel mit Memory-Funktion im Auto realisiert.

Grüße Stefan
 

Fesh

User
Ich habe bei AliExpress was gefunden: DC Motor 6V 12V Turbo Worm With Encoder.
Wirings:
Red Wire - positive power supply of motor(+)
Black Wire - negative power supply of motor(-)
Green Wire - negative power supply of encoder(-) (positive and negative power supply of encoder do not allow connect wrong;
Blue Wire - positive power supply of encoder(+) (positive and negative power supply of encoder do not allow connect wrong,(5-12v)
Yellow Wire - signal feedback (11 signals per motor turns a circle)
White Wire - signal feedback (11 signals per motor turns a circle)

30rpm heißt eine halbe Umdrehung pro Sekunde, das wäre genau richtig für den Schaltzug.
Das ist zwar kein BLDC, aber er gibt Feedback wieviel Umdrehungen der Motor macht. Bleibt die Frage ob das für die Motorachse oder die Ausgangsachse ist.
Da die Elektronik in der runden schwarzen Kappe auf dem Motor sitzt, und keine Kabel in die eckige Getriebebox führen ist aber wohl die Motorachse gemeint.
Prima.
 

S_a_S

User
die Übersetzung ist fest, der Encoder sitzt am Motor. Was eventuell noch Probleme machen könnte, ist das Getriebespiel, dürfte aber in der Auflösung des Encoders liegen.
Sehe da aber keine Selbsthemmung (auch wenn da was von Wurm steht), sondern nur ein "normales" Getriebe.

Grüße Stefan
 

Fesh

User
Zur Nockenscheibe :
Da muss das Servo nichts halten, da es nur den Hebel wegdrückt, das ist auch selbsthemmend. Drehpunkt des Hebels ist nicht Rotationsachse der Scheibe.
Hmm, hast Du mal ein Bild davon?

Ansonsten: Hallsensor deshalb, weil du evtl auch Schrittverluste hast. Nur über gezählte umdrehungen weiss dein Motor nach dem Anschalten auch nicht wo er ist,da brauchst du eh irgendeine Referenz. Ich würd deshalb lieber den Hallsensor nehmen, da schlägst du mehrere fliegen mit einer klappe, für Motor und regler reicht dann irgendwas einfaches an Standardmaterial.
Jupp, wie schon in #7 beschrieben habe ich bei AliExpress einen wahrscheinlich passenden Motor mit Encoder gefunden. Mehr Power und Speed als ein Schrittmotor, und 11 Positionen pro Motorumdrehung mal 1:50 Untersetzung ergibt bei einem Gesamtweg von einer halben Umdrehung der Abtriebswelle 550/2 = 275 anfahrbare Positionen. Bei max. 40mm Kabelzug sind das knapp 7 Positionen pro mm, plus Spiel. Aber das wirkt immer nur einseitig, weil die Rückstellfeder den Schaltzug ja immer unter Zug hält. Genauigkeit also ca. 1/5mm. Reicht dicke für eine Kettenschaltung.
 

Wattsi

User
Elektrische Schaltung und dann vom Lenker aus? Da muss ja immer gegen die Kraft der Rückstellfeder geabeitet werden, also Motor der die Reibung im Kabelzug und die Kraft der Rückstellfeder überwinden muss: Ein Volltreffer!
Warum nicht gleich den Umwerfer direkt steuern?
 

Fesh

User
die Übersetzung ist fest, der Encoder sitzt am Motor. Was eventuell noch Probleme machen könnte, ist das Getriebespiel, dürfte aber in der Auflösung des Encoders liegen.
Sehe da aber keine Selbsthemmung (auch wenn da was von Wurm steht), sondern nur ein "normales" Getriebe.
Hier gibt es eine geöffnete Ansicht des Getriebes - da ist die Schnecke direkt auf der Motorachse angebracht und macht einmalig die Umlenkung der Rotation von längs auf quer.
 

Fesh

User
Elektrische Schaltung und dann vom Lenker aus? Da muss ja immer gegen die Kraft der Rückstellfeder geabeitet werden, also Motor der die Reibung im Kabelzug und die Kraft der Rückstellfeder überwinden muss: Ein Volltreffer!
Der Zugmechanismus kommt unter die Kettenstrebe, so dass der Bowdenzug nur noch 20cm lang wird.

Warum nicht gleich den Umwerfer direkt steuern?
Zunächst mal soll nur das Schaltwerk elektrifiziert werden.
Den vorderen Umwerfer kann man (später) mit einem Servo steuern, wenn man einfach die Rückstellfeder entfernt oder aushängt.
 
Hallo !
Habe kein Foto mehr, ist schon länger her als ich das gebaut habe. Das musst du dir in etwa wie einen Stößelstangenantrieb beim Viertakter vorstellen, nur, dass ich um den Hub zu erhöhen seitlich gegen die einseitig drehbar gelagerte Stange gedrückt habe, nicht an die Stirnfläche.
Zum direkten Steuern des Umwerfers :
Mach das gleich, du sparst dir einen haufen ärger (z.B. die hohe Rückstellfederkraft) Dann reicht aushängen der Feder aber nicht, da man mit einem üblichen Bowdenzug nur vernünftig ziehen kann und ganz schlecht bis gar nicht drücken. Da würde ich ein Closed Loop System vorschlagen. Das löst aber nicht das Problem, dass dein Motor immer noch nicht weiß, wo er nach dem Anschalten steht.
VG,
Sebastian
 

Fesh

User
Zum direkten Steuern des Umwerfers :
Mach das gleich, du sparst dir einen haufen ärger (z.B. die hohe Rückstellfederkraft)
Nein, der bleibt erstmal mechanisch (Original Schalthebel) bis das Schaltwerk so läuft wie gewünscht. Ein Bekannter hat sich bereits den Umwerfer an seinem Liegerad mit einem Servo mit Kugelkopf umgerüstet (und einfach die Feder mit einem Seitenschneider abgekniffen), und steuert das mit einem billigen 2€ Servotester an. Er meint er könne auch mit dicken Handschuhen am Poti drehen. Für die drei Kettenblätter ist das einfach - links, mitte, rechts am Poti bekommt man leicht hin. Man muss lediglich in der Mitte schauen dass die Kette nicht am Umwerferkäfig schleift - links und rechts werden die Positionen ja mit den Einstellschrauben des Umwerfers mechanisch begrenzt.
Servotester mit Analog-Poti entspricht ungefähr dem Friktionshebel der 2x5-Schaltung meines ersten Rennrades.
Bei einem 8-12fach Schaltwerk will man aber digitale Indexe haben und nicht "ungefähr da so"...

Dann reicht aushängen der Feder aber nicht, da man mit einem üblichen Bowdenzug nur vernünftig ziehen kann und ganz schlecht bis gar nicht drücken. Da würde ich ein Closed Loop System vorschlagen. Das löst aber nicht das Problem, dass dein Motor immer noch nicht weiß, wo er nach dem Anschalten steht.
Ein Arduino hat genug Flash-Speicher um sich bei jeder Schaltung zu merken in welche Position er den Motor gefahren hat, so dass dieser Wert beim Kaltstart wieder zur Verfügung steht.
Sinnvoll wäre evtl. eine Erkennung einer Null-Position (also entweder kleinstes oder größtes Ritzel) zur automatischen Kalibrierung, aber das kann man auch händisch triggern wenn man merkt dass die Schaltpräzision nachlässt.
 
Du kannst das genau so machen wie dein Bekannter, nur anstelle des Servotesters nimmst du deinen Arduino, da kannst du dann die Servostellungen drin ablegen.
Da kannst du dann mittels 2er Taster durch die Presets rauschen.
Das dauert mit halbwegs übung einen Nachmittag um ein Mockup zu bauen und zu coden..
(ist aber verm. nicht selbsthemmend)
Die Arduino standardbibliothek hat auf den Servoausschlag 255 Positionen, ist also noch genauer als der Motor mit encoder.
Keine Digitalservos verwenden bei dieser Bibliothek, da die ziemlich schnell abrauchen können, wenn das Servo um den Vorgabewert Pendelt, Analoge sind da robuster.

Zum Nullen (falls du kein Servo verwendest):
Wenn du sicherstellen kannst, dass im ausgeschalteten Zustand keine mech. Belastung auf deine Umwerfer kommt, kannst du das so machen. Meine bisherigen Erfahrungen mit ähnlichen Dingen sagen : Unwahrscheinlich. Wie würdest du dir manuell die null holen ? Das kann man automatisieren. Oder halt absoulutwerte aus Winkelgeber..
VG,
Sebastian
 
Zuletzt bearbeitet:
Ansicht hell / dunkel umschalten
Oben Unten