"SpinPulse" concept: Re-thinking the bottom bracket

MattyCiii

100 kW
Joined
May 5, 2007
Messages
1,374
Location
Boston, MA, USA
Overview.jpgHello ES!
Probably not a new idea, but here goes...
The concept is to take the down tube, bottom bracket, etc. and re-think it as a power module, merging human and electric power sources. Another variation on StokeMonkey, Cyclone, and j3tch1u's Mag Max, influenced heavily by the RC stuff and Recumpense's multi-stage reduction drives.

Design goals:
1) Modularity: If 10 or 100 are built, can they be used as prime movers in a variety of bikes?
2) Practicality: Can it be built without dozens of custom parts?
3) Performance: Keep the weight low and central. Minimize unsprung weight in the wheels.
4) Economy: Building the e-drive components into frame components means I'm getting double-duty out of high strength/stiffness components, vice adding in strong (~= heavy) stiffeners strictly for the e-drive
5) Flexibility: Bike should work well in pedal only mode. It should work well in e-drive only mode.

Implementation:
Here's a picture of what I have in mind:
 
OK, I'm new at posting stuff so the pic did not end up where I'd hoped...

Some custom components will likely be required - but I hope to minimize them. All suggestions welcome! Let's start with the crank. I should be able to use an off-the-shelf crank. The drawing below shows a 22mm diameter spindle trials crank with front freewheel adapter and freewheel. Pardon my crude 3D drawing skills:
 

Attachments

  • Trials Crank.jpg
    Trials Crank.jpg
    14.2 KB · Views: 1,669
The e-drive piece is embedded in the bike frame. To transfer power out to the chain ring will require a collection of off-the-shelf and custom parts. First, two needle roller bearings are added (in blue), one inside the frame and one outside...
 

Attachments

  • Crank, needle bearings and frame.png
    Crank, needle bearings and frame.png
    12.9 KB · Views: 1,664
Next in maroon, the "Power Input Shaft".
View attachment 1

Hopefully not too custom, depending on material strength and inside/outside diameters available, this can be built up from thick walled tubing and an off-the-shelf gear, interfaced together...
Power Input Shaft in context.jpg
 
The whole thing would need to be able to spin freely in the frame. Note the "bottom bracket bearings" added, in blue
 

Attachments

  • Concentric cranks in frame with bearings.jpg
    Concentric cranks in frame with bearings.jpg
    15.5 KB · Views: 1,662
In this graphic I add a second freewheel, between the bike frame and the crank freewheel.

This freewheel's center is secured to the Power Input Shaft, so when the motor spins that shaft, the second freewheel spins. The Power Input Shaft and its freewheel are mounted onto the spindle via a pair of needle bearings, and penetrate the frame through a bearing. Yes there will be friction losses, but the motor will easily overcome that.
 

Attachments

  • With second freewheel.jpg
    With second freewheel.jpg
    14.8 KB · Views: 1,658
The output coupler fits securely to the outsides (pressed on?) of the two freewheels. When either freewheel spins, the output coupler spins.
 

Attachments

  • Output Coupler.jpg
    Output Coupler.jpg
    9 KB · Views: 1,657
Add the Power Coupler into the Big Picture...
 

Attachments

  • Output Coupler in context.jpg
    Output Coupler in context.jpg
    17.3 KB · Views: 1,656
And that's about it for the concept phase.

Once I figure out how to post the data file, I'll post it so y'all can manipulate it in 3D, turn parts on/off, etc. It's built in OpenSCAD, a 3d modeling program.

I designed the system with parameterized values - so if I go from a 22mm spindle to a 19mm, I just change a couple of values and re-render. But, it's not that simple because I also looked up source/availability of matching components. For example, standard spindles are available in 22mm OD, and needle bearings can be had in 22mm ID, reducing the necessity for custom parts.

OK, so the door is open to comments. Thanks for looking!!
~Matt
 
I've found I can't post the OpenSCAD file because the ".scad" extension is not allowed. I suppose I could rename the file extension to ".txt" and instruct interested parties to change the extension back.

But I just realized, since OpenSCAD draws the 3D object based on code written in an editor, all I really need to do is post the code:

If you are interested in looking at this in 3d, do:
1) Install OpenSCAD. It's free.
2) Copy/paste the below into the Editor window
3) Press [F5] to render.
4) Comment pieces out (using C or Java like comments) to turn parts off, to see parts in isolation.

That's it!
Code:
slop=0.5;
spindleD = 22;
freewheelID = 35;
freewheelOD = 62;
needleOD = 28;

module hollowShaft( ht, od, id ) {
	difference() {
		cylinder(h=ht, r=od/2);	
		translate([0,0,-10])	
			cylinder(h=2*ht, r=id/2);
	}	
}

module crankArm() {
	difference() {
		translate([-10,0,0])
			cube(size = [20,150,15], center = false);
		translate([0,140,-1])
			cylinder(h=17, r=6);
	}
}

module outputCoupler() {	// Combines the electric and human powered sprag clutches into one
	distance = 80;
	d1 = 50;
	union() {
		difference(){
			cylinder(h=4, r=65);
			translate([0,0,-5])
			cylinder(h=10, r=(freewheelOD+slop)/2);
			translate([0,0,-10])
				for (i = [0:4]) {
					translate([sin(360*i/5)*distance, cos(360*i/5)*distance, 0 ])
						cylinder(h = 20, r=35);
				}
			translate([0,0,-10])
				for (i = [0:4]) {
					translate([sin(360*i/5+36)*d1, cos(360*i/5+36)*d1, 0 ])
						cylinder(h = 20, r=8);
				}

		}
		translate([0, 0, -14.5])
			hollowShaft( 33, 67, freewheelOD+slop );			
	}
}

module spindle() {
	spindleH = 147;
	cylinder(h=spindleH, r=spindleD/2);
	cylinder(h=30, r=freewheelID/2);	
	//Crank arm - right
	crankArm();
	//Crank arm - left
		translate([0,0,132])
	rotate(a=[0,0,180])
		crankArm();
}

module freewheel() {
	color([0.9, 0.9, 0.7, 1])
	hollowShaft( 16, freewheelOD, freewheelID+slop );	
}

module needleBearing( needleOD, needleH ) {
	//http://www.qbcbearings.com/BuyRFQ/NeedleB_ST_OE_M.htm
	//Heights: 10, 12, 16, 20
	color([0.1, 0.2, 0.8, 1])
	hollowShaft( needleH, needleOD, spindleD+slop );	
}

module powerShaft() {
	translate([0,0,30])
	color([0.7, 0.3, 0.5, 1])	{
		translate([0,0,47])
			hollowShaft( 10+slop, 130,freewheelID );

		hollowShaft( 57, freewheelID, needleOD );	

	}	
}

/*
 *	Cutaway effect for the drawing
 */

module cutaway() {
	cutR = 40;
	translate([0,cutR/2+10,-slop])	
		cylinder(h=200, r=cutR/2);
}

/*
 *	Building the main picture
 */


translate([-90,30,50])
rotate(a=[45, 45, 0])

difference() {

	union() {

		// Off the shelf trials crank plus freewheel
		translate([0,0,14])
			freewheel();
		spindle();

		//Off the shelf neede bearings 
		translate([0,0,71])
			needleBearing( needleOD, 16);
		translate([0,0,30])
			needleBearing( needleOD, 16);



		powerShaft() ;

		//right side bearing
		translate([0,0,49])
		color([0.3, 0.3, 0.7, 0.9])
			hollowShaft( 16, 50, 22+slop );
		//Left side bearing
		translate([0,0,110])
		color([0.3, 0.3, 0.7, 0.9])
			hollowShaft( 16, 50, 22+slop );


		translate([0,0,30+slop])
			freewheel();		



		translate([0,0,28])
			outputCoupler();



		//Drive Shaft
		color([0.7, 0.3, 0.5, 1])	{
			translate([100,-20,48])	
				cylinder(h=79, r=12);
			translate([150,-40,48])	
				cylinder(h=79, r=18);
		}
		//Belt
		color([0, 0, 0, 1]) {
			translate([0,-65,78])
			rotate(a=[0,00,2.5])
				cube(size = [156,5,8], center = false);
			translate([98,-32.5,78])
			rotate(a=[0,00,7])
				cube(size = [55,5,8], center = false);
			translate([57,20,78])
			rotate(a=[0,0,-55])
				cube(size = [55,5,8], center = false);
		}			

		//Bike Frame
		color([0.7, 0.3, 0.5, 0.5])
			difference() {
				translate([-80,-80,50])
					cube(size = [300,160,75], center = false);
				translate([-81,-70,60])
					cube(size = [310,140,55], center = false);							}

	}
//	cutaway();
}
 
Back
Top