Go Down

Topic: Bike shifter: direct servo, trigger shifter of grip shift? (Read 4964 times) previous topic - next topic



I would like to shift a 9-speed Shimano derailleur electronically using an Arduino.
I don't want to make alterations to the derailleur itself, just pull and release the bowden cable.

I can see 4 ways of accomplishing this:

1. Pull and release the bowden wire directly with a strong enough servo motor to pull through the 9 increments
2. Use a strong enough stepper motor to pull through the 9 increments
3. Use a trigger shifter from the handle bar and use 2 actuators to pull the triggers to go up or down
4. Use a grip shift shifter and use a servo to turn the axel of the shifter

What do you guys think would be the easiest way to go aboutt this in terms of programming?
Thanks a lot.


There's no significant difference from the programming side, but from the mechanical point of view I think all of those options will be difficult to implement due to the forces and positional accuracy required. I suggest you need to figure out where and how you're going to attach it, and the force and travel required, and then source the stepper/servo/solenoid/whatever and then figure out how you're going to power it and select the driver. The software will be quite trivial compared to that.


That's very good to hear.
I was only worried about that.
The travel of the bowden wire for each gear is only 1mm.
I found a servo from hobbyking that will pull 30kg.
That will be more than enough for the bowden wire directly.

Pulling the triggers or turning the grip shift will require even less force as the travel on the grip is much longer.

From a mechanical standpoint, connecting a servo to the gripshift is not that big an issue.
I have someone to take care of that.

As for the position.
I have a rather large diamond frame bike with a aluminium frame fitted inside the main triangle. This houses the battery for the ebike and all electronics. That triangle has a 90° angle and 45cm and 50cm sides. Mounting the bowden wire to that frame requires no more than drilling one hole for it to go through and a fixing a little jacket

I'll be glad to show you some pictures.

Do you have any suggestions, which way to go? My thinking is that the gripshift solution might be easiest. It will only require the shifter, one motor (to go in both directions), a housing to hold both in place and the connection between motor and shifter.

All I want it to do is:
- Have 9 discrete settings
- 2 buttons for up and down
- serial output to another arduino on which gear is selected


On the mechanical side consider whether you need to provide a way to operate the gears if the controller fails, and also whether there can ever be conflict between the servo operation and manual operation, and how you would resolve that. (You will probably need to design in a 'servo saver' torque limiter for the servo linkage.)



I'm building an ebike with more than enough power to get me anywhere at any gear.
Worst case scenario (1000Wh battery and gear shifter fails) I'll have to push up the hill to my home.
I don't need to shift too much.

I might program a long push to go into the highest gear directly as this is, where I'm gonna be most of the time.

So the electric system will completely replace the manual one, it's not that big a deal.

Do I need a special type of servo for the arduino to know it's current position?
What materials would I need? Servo motor, arduino, power supply, control buttons... anything else?
If the servo gets a direct drive transmission, it'll be around 180° for all 9 positions.

I'm only just beginning to learn how to program. I'd appreciate any pointers and help you could offer.


With a conventional servo, you command it to go to a given position and assume that it goes there. Servos can only produce a finite torque though, so if there's too much resistance it may sit there struggling instead of going to the position you specified. You'll need to figure out how you're going to drive the gear shift mechanism and then how much torque/force and travel you need, and then decide what actuator you're going to need to provide that.


I have that figured out.

I want to use the gripshift shifter and turn the the grip using a high torque RC motor like this one

The torque they produce will be more than enough.
I still don't understand the controls exactly. Do you give the servo 6V and whatever current you can for a set amount of time, which is supposed to determine the position, or is there another way to set the travel?
What happens afterwards? Does it stay in position or go back to its original one?
If it goes back, I'll definitely have to use a shifter.
However it might be easier to control 2 actuators with 2 triggers, one to go up and one down.
They' each need to pull some 2 cm.
With the gripshift, I would have to be able to set a certain positon in degrees, that it's going to move to.


Servo has three wires: ground, power and signal. Ground and power are connected all the time. Position is determined by the signal wire which provides continuous PWM-like signal. The servo moves to the positon determined by that signal.


From the point of view of your sketch, you just create a Servo object representing your servo and then call servo.write(angle) to tell the servo to move to a certain angle; it will stay there until you tell it to move somewhere else. The servo has a position sensor and electronics inside it to control the motor so that it applies whatever power is required to move to the position you specified and stay there, as long as the force being applied to the servo does not exceed the torque capability of the servo. This seems like a very suitable solution for your problem and the coding side will be straight forward - it is only the hardware side that I see as being a problem.


I have seen a project where someone did it, I just can't find the link again right now.
This guy, as far as I remember, used a servo to pull/release the cable and he trippered the shifting with two small buttons on the handle bars.

I would not bother with a grip shifter. In the end you need only two tiny buttons that you can push and then the servo will shift.
How would you sense in which position your grip shifter is anyway?

Usually grip shifts are only used in very low end bikes, don't use them and go for cool buttons  :smiley-eek-blue:


Oh, you misunderstand the intention of the gripshift.

The gripshift was supposed to be turned by the servo instead of the servo pulling the bowden wire directly.

No matter how the mechanics work, there will always be 2 buttons on the handlebar for controls. That's a given.

At this point I believe the best approach in terms of mechanics is using a trigger shifter.

Here are my reasons:

- simple controls (pull motor1 once: shift up, pull motor2 once: shift down)
- The positions of the gear will always be in fixed positions (no fine tuning required)
- The end positions in case of failures will not be exceeded. If the motor pulls too often, it wil pull another 2mm, but won't snap in, so nothing will break
- Once a gear is selected, no energy is required to keep it in place
- Tuning the length of the bowden wire is very simple and already built in.

So from a mechanical standpoint, all I need to find is two light actuators, that are strong enough to pull the triggers (down trigger is just a release and needs virtually no power) and have enough travel (2cm if pulled on the outside, less if further inside)

Maybe one small servo that pulls one trigger if turned right and the other if turned left would be ideal. Then it would only take one motor for both jobs.


If you use a grip shift or existing handlebar levers, won't the riders hands be in the way and opposing the effect of the servo? I would have thought the more practical solution would be to terminate the shifter cable on the frame and attach it to the shifter servo, and use a counter spring to compensate for the static forces from the dérailleur springs. Mounting and terminating a bowden cable would be much easier than making up servo attachments to exiting grips and levers.

I'm still concerned about the forces you're going to need from your servo - manually operated gear shifters in my experience requires much greater forces than ordinary hobby servos would provide. I think you're going to need to do some bench testing and see how much force you actually need to change gear and hold a given gear.


Dont Shimano already make electrically operated shifters ?

I know that they have been used in racing in the past.

Duane B
Read this
then watch this



Dont Shimano already make electrically operated shifters ?

I know that they have been used in racing in the past.

Duane B

Correct, but I believe "in the past" is the operative phrase.


Read this
then watch this


Go Up