Last active
September 26, 2018 13:03
-
-
Save moonwatcher/71bb3c3bb9723c09c86c1d72dbb901cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
# indexing calculator for an alfine internal gear hub | |
# The SRAM 3x10 00.7018.068.004 10 speed shifter has a drum diammeter of 21.8mm, or a circumference of 68.4867mm | |
# The SRAM 11 and 12 gears speed shifter seem to have a 25.6mm drum diammeter, or a circumference of 80.42477mm | |
# Accounting for the 1.1mm of cable width by adding half the cable width to the radius or 1.1mm to the diameter. | |
# | |
# OD 22.9mm / C = 71.942 / 0.5C = 35.97 for the 10 Exact Actuation | |
# OD 26.7mm / C = 83.88 / 0.5C = 41.94 for the 11 and 12 X-Actuation | |
# | |
# since X-Actualtion should be 3.48mm of cable pull per gear on average even 12 movements are 41.76 | |
# and should fit, although only 11 are needed for 12 gears. | |
# http://blog.artscyclery.com/science-behind-the-magic/science-behind-the-magic-drivetrain-compatibility/ | |
import json | |
import math | |
def to_json(node): | |
return json.dumps(node, sort_keys=True, ensure_ascii=False, indent=4) | |
indexing = { | |
'cable diameter': 1.1, | |
'spool diameter': 25.6, | |
'hub': { | |
'sg s501': { | |
'indexing': [ | |
{ | |
'gear': 1, | |
'offset': 0 | |
}, | |
{ | |
'gear': 2, | |
'offset': 5.49 | |
}, | |
{ | |
'gear': 3, | |
'offset': 5.05 | |
}, | |
{ | |
'gear': 4, | |
'offset': 5.18 | |
}, | |
{ | |
'gear': 5, | |
'offset': 6.22 | |
}, | |
{ | |
'gear': 6, | |
'offset': 5.05 | |
}, | |
{ | |
'gear': 7, | |
'offset': 5.05 | |
}, | |
{ | |
'gear': 8, | |
'offset': 5.05 | |
}, | |
] | |
}, | |
'sg s501 sheldon brown': { | |
'indexing': [ | |
{ | |
'gear': 1, | |
'offset': 0 | |
}, | |
{ | |
'gear': 2, | |
'offset': 4.9 | |
}, | |
{ | |
'gear': 3, | |
'offset': 5.3 | |
}, | |
{ | |
'gear': 4, | |
'offset': 5.0 | |
}, | |
{ | |
'gear': 5, | |
'offset': 5.9 | |
}, | |
{ | |
'gear': 6, | |
'offset': 4.7 | |
}, | |
{ | |
'gear': 7, | |
'offset': 5.0 | |
}, | |
{ | |
'gear': 8, | |
'offset': 5.8 | |
}, | |
] | |
} | |
} | |
} | |
indexing['spool circumference'] = math.pi * indexing['spool diameter'] | |
indexing['corrected spool circumference'] = math.pi * (indexing['spool diameter'] + indexing['cable diameter']) | |
for name,hub in indexing['hub'].items(): | |
hub['total pull'] = 0 | |
hub['total angle'] = 0 | |
for gear in hub['indexing']: | |
gear['offset angle'] = 360.0 * (gear['offset'] / indexing['corrected spool circumference']) | |
hub['total pull'] += gear['offset'] | |
gear['absolute'] = hub['total pull'] | |
hub['total angle'] += gear['offset angle'] | |
gear['absolute angle'] = hub['total angle'] | |
print(to_json(indexing)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cable diameter": 1.1, | |
"corrected spool circumference": 83.88052385084748, | |
"hub": { | |
"sg s501": { | |
"indexing": [ | |
{ | |
"absolute": 0, | |
"absolute angle": 0.0, | |
"gear": 1, | |
"offset": 0, | |
"offset angle": 0.0 | |
}, | |
{ | |
"absolute": 5.49, | |
"absolute angle": 23.56208460875071, | |
"gear": 2, | |
"offset": 5.49, | |
"offset angle": 23.56208460875071 | |
}, | |
{ | |
"absolute": 10.54, | |
"absolute angle": 45.23576899384926, | |
"gear": 3, | |
"offset": 5.05, | |
"offset angle": 21.673684385098557 | |
}, | |
{ | |
"absolute": 15.719999999999999, | |
"absolute angle": 67.46738980866323, | |
"gear": 4, | |
"offset": 5.18, | |
"offset angle": 22.23162081481396 | |
}, | |
{ | |
"absolute": 21.939999999999998, | |
"absolute angle": 94.16250206120046, | |
"gear": 5, | |
"offset": 6.22, | |
"offset angle": 26.69511225253723 | |
}, | |
{ | |
"absolute": 26.99, | |
"absolute angle": 115.83618644629901, | |
"gear": 6, | |
"offset": 5.05, | |
"offset angle": 21.673684385098557 | |
}, | |
{ | |
"absolute": 32.04, | |
"absolute angle": 137.50987083139756, | |
"gear": 7, | |
"offset": 5.05, | |
"offset angle": 21.673684385098557 | |
}, | |
{ | |
"absolute": 37.089999999999996, | |
"absolute angle": 159.18355521649613, | |
"gear": 8, | |
"offset": 5.05, | |
"offset angle": 21.673684385098557 | |
} | |
], | |
"total angle": 159.18355521649613, | |
"total pull": 37.089999999999996 | |
}, | |
"sg s501 sheldon brown": { | |
"indexing": [ | |
{ | |
"absolute": 0, | |
"absolute angle": 0.0, | |
"gear": 1, | |
"offset": 0, | |
"offset angle": 0.0 | |
}, | |
{ | |
"absolute": 4.9, | |
"absolute angle": 21.029911581580777, | |
"gear": 2, | |
"offset": 4.9, | |
"offset angle": 21.029911581580777 | |
}, | |
{ | |
"absolute": 10.2, | |
"absolute angle": 43.77655063920896, | |
"gear": 3, | |
"offset": 5.3, | |
"offset angle": 22.746639057628183 | |
}, | |
{ | |
"absolute": 15.2, | |
"absolute angle": 65.2356440898016, | |
"gear": 4, | |
"offset": 5.0, | |
"offset angle": 21.45909345059263 | |
}, | |
{ | |
"absolute": 21.1, | |
"absolute angle": 90.5573743615009, | |
"gear": 5, | |
"offset": 5.9, | |
"offset angle": 25.321730271699302 | |
}, | |
{ | |
"absolute": 25.8, | |
"absolute angle": 110.72892220505798, | |
"gear": 6, | |
"offset": 4.7, | |
"offset angle": 20.17154784355707 | |
}, | |
{ | |
"absolute": 30.8, | |
"absolute angle": 132.18801565565062, | |
"gear": 7, | |
"offset": 5.0, | |
"offset angle": 21.45909345059263 | |
}, | |
{ | |
"absolute": 36.6, | |
"absolute angle": 157.08056405833807, | |
"gear": 8, | |
"offset": 5.8, | |
"offset angle": 24.89254840268745 | |
} | |
], | |
"total angle": 157.08056405833807, | |
"total pull": 36.6 | |
} | |
}, | |
"spool circumference": 80.4247719318987, | |
"spool diameter": 25.6 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment