some reorganization of files
							
								
								
									
										
											BIN
										
									
								
								doc/fanduct-e3dlite6-alt.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 51 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/swissclip1.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 357 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/swissclip2.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 372 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/swissclip3.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 229 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/x-axis-assembly-notes.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 70 KiB  | 
| 
		 Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 35 KiB  | 
| 
		 Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 55 KiB  | 
| 
		 Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 42 KiB  | 
| 
		 Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 26 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/z-rack.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 53 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/zrack-animation.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 233 KiB  | 
							
								
								
									
										24376
									
								
								scad/motor.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										203
									
								
								scad/rack_and_pinion.scad
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,203 @@
 | 
			
		||||
// Rack and pinion gears GPL (c) SASA October 2013.
 | 
			
		||||
//
 | 
			
		||||
// Very simple rack and pinion gear based on GPL code.
 | 
			
		||||
//
 | 
			
		||||
// I've made corrections to both rack and gear code I used (below) and unified
 | 
			
		||||
// and simplified both bits of code.  Corrects the use of circular pitch so
 | 
			
		||||
// rack and pinion match nicely.  Ammendments to the code and interface to
 | 
			
		||||
// simplify use and improve readability. Many bells and whistles dropped in
 | 
			
		||||
// favour of being dead simple.  I also opted for hard wiring the pressure
 | 
			
		||||
// angle to 20 degrees since this seemed a kind of standard.
 | 
			
		||||
//
 | 
			
		||||
// Based on the works (thanks!): Parametric Involute Bevel and Spur Gears by
 | 
			
		||||
// GregFrost GNU GPL license.  http://www.thingiverse.com/thing:3575 Parametric
 | 
			
		||||
// Modular Rack by Mark "Ckaos" Moissette GNU GPL license.  (Rack based on the
 | 
			
		||||
// work of MattMoses and Fdavies
 | 
			
		||||
// http://forums.reprap.org/read.php?1,51452,52099#msg-52099 and Forrest Higgs:
 | 
			
		||||
// 
 | 
			
		||||
// The originals have many fine additions such as helical gears which I've
 | 
			
		||||
// dropped in favour of simplicity (as befits my needs) - it wouldn't be a big
 | 
			
		||||
// jobs to nobble my changes backwards or their features forwards.
 | 
			
		||||
 | 
			
		||||
pi=3.1415926535897932384626433832795;
 | 
			
		||||
$fn=50;
 | 
			
		||||
 | 
			
		||||
// examples of usage
 | 
			
		||||
// include this in your code:
 | 
			
		||||
// use <rack_and_pinion.scad>
 | 
			
		||||
// then:
 | 
			
		||||
// a simple rack
 | 
			
		||||
// rack(4,20,10,1);//CP (mm/tooth), width (teeth), thickness(of base) (mm), # teeth
 | 
			
		||||
// a simple pinion and translation / rotation to make it mesh the rack
 | 
			
		||||
// translate([0,-8.5,0])rotate([0,0,360/10/2]) pinion(4,10,10,5);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
rack (4,18,10,3);
 | 
			
		||||
 | 
			
		||||
translate([0,-12,0]) rotate([0,0,13]) pinion(4,8,10,4);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module rack(cp, N, width, thickness){
 | 
			
		||||
// cp = circular pitch - for rack = pitch in mm/per tooth
 | 
			
		||||
// N = number of teeth
 | 
			
		||||
// width = width of rack in teeth
 | 
			
		||||
// thickness = thickness of support under teeth (0 for no support)
 | 
			
		||||
 | 
			
		||||
	a = 1.0*cp/pi; // addendum (also known as "module")
 | 
			
		||||
	d = 1.1*cp/pi; // dedendum (this is set by a standard)
 | 
			
		||||
	height=(d+a);
 | 
			
		||||
 | 
			
		||||
	// find the tangent of pressure angle once
 | 
			
		||||
	tanPA = tan(20);
 | 
			
		||||
	// length of bottom and top horizontal segments of tooth profile
 | 
			
		||||
	botL = (cp/2 - 2*d*tanPA);
 | 
			
		||||
	topL = (cp/2 - 2*a*tanPA);
 | 
			
		||||
 | 
			
		||||
	slantLng=tanPA*height;
 | 
			
		||||
	realBase=2*slantLng+topL;
 | 
			
		||||
 | 
			
		||||
	offset=topL+botL+2*slantLng;
 | 
			
		||||
	length=(realBase+botL)*N;
 | 
			
		||||
 | 
			
		||||
	supportSize=width;
 | 
			
		||||
	translate([botL/2,0,0])
 | 
			
		||||
	rotate([90,0,0]){
 | 
			
		||||
		translate([0,supportSize/2,0]){
 | 
			
		||||
			union(){
 | 
			
		||||
				cube(size=[length,width,thickness],center=true);
 | 
			
		||||
				for (i = [0:N-1]){
 | 
			
		||||
					translate([i*offset-length/2+realBase/2,0,thickness/2]){
 | 
			
		||||
						trapezoid([topL,supportSize],[realBase,supportSize],height);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
module pinion (cp, N, width, shaft_diameter, backlash=0){
 | 
			
		||||
// cp= circular pitch - for pinion pitch in mm/per as measured along the ptich radius (~1/2 way up tooth)
 | 
			
		||||
// N= number of teeth
 | 
			
		||||
// width= width of the gear
 | 
			
		||||
// shaft_diameter= diameter of hole for shaft
 | 
			
		||||
// backlash - I think this is just a bodge for making things fit when printed but I never tested it
 | 
			
		||||
 | 
			
		||||
	if (cp==false && diametral_pitch==false) 
 | 
			
		||||
		echo("MCAD ERROR: pinion module needs either a diametral_pitch or cp");
 | 
			
		||||
 | 
			
		||||
	//Convert diametrial pitch to our native circular pitch
 | 
			
		||||
	cp = (cp!=false?cp:180/diametral_pitch);
 | 
			
		||||
 | 
			
		||||
	// Pitch diameter: Diameter of pitch circle.
 | 
			
		||||
	pitch_diameter  =  N * cp / pi;
 | 
			
		||||
	pitch_radius = pitch_diameter/2;
 | 
			
		||||
	echo ("Teeth:", N, " Pitch radius:", pitch_radius);
 | 
			
		||||
	// Base Circle
 | 
			
		||||
	base_radius = pitch_radius*cos(20);
 | 
			
		||||
 | 
			
		||||
	// Addendum: Radial distance from pitch circle to outside circle.
 | 
			
		||||
	addendum = cp/pi;
 | 
			
		||||
 | 
			
		||||
	//Outer Circle
 | 
			
		||||
	outer_radius = pitch_radius+addendum;
 | 
			
		||||
 | 
			
		||||
	// Dedendum: Radial distance from pitch circle to root diameter
 | 
			
		||||
	dedendum = addendum*1.1;
 | 
			
		||||
 | 
			
		||||
	// Root diameter: Diameter of bottom of tooth spaces.
 | 
			
		||||
	root_radius = pitch_radius-dedendum;
 | 
			
		||||
 | 
			
		||||
	backlash_angle = backlash / pitch_radius * 180 / pi;
 | 
			
		||||
	half_thick_angle = (360 / N - backlash_angle) / 4;
 | 
			
		||||
 | 
			
		||||
	difference(){
 | 
			
		||||
		linear_extrude (height=width, convexity=10, twist=0)
 | 
			
		||||
		pinion_shape(N, pitch_radius = pitch_radius, root_radius = root_radius,
 | 
			
		||||
			base_radius = base_radius, outer_radius = outer_radius,
 | 
			
		||||
			half_thick_angle = half_thick_angle, involute_facets=0);
 | 
			
		||||
 | 
			
		||||
		translate([0,0,-1]) cylinder(r=shaft_diameter/2,h=2+width);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	echo("Root radius =",root_radius,"\nPitch radius=",pitch_radius,"\n Tip radius=",outer_radius,"\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
module pinion_shape ( N, pitch_radius, root_radius, base_radius, outer_radius, half_thick_angle, involute_facets) {
 | 
			
		||||
	union(){
 | 
			
		||||
		rotate (half_thick_angle) circle ($fn=N*2, r=root_radius);
 | 
			
		||||
		for (i = [1:N]) {
 | 
			
		||||
			rotate ([0,0,i*360/N]) {
 | 
			
		||||
				involute_pinion_tooth (
 | 
			
		||||
					pitch_radius = pitch_radius,
 | 
			
		||||
					root_radius = root_radius,
 | 
			
		||||
					base_radius = base_radius,
 | 
			
		||||
					outer_radius = outer_radius,
 | 
			
		||||
					half_thick_angle = half_thick_angle,
 | 
			
		||||
					involute_facets=involute_facets);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
module involute_pinion_tooth ( pitch_radius, root_radius, base_radius, outer_radius, half_thick_angle, involute_facets) {
 | 
			
		||||
	min_radius = max (base_radius,root_radius);
 | 
			
		||||
 | 
			
		||||
	pitch_point = involute (base_radius, involute_intersect_angle (base_radius, pitch_radius));
 | 
			
		||||
	pitch_angle = atan2 (pitch_point[1], pitch_point[0]);
 | 
			
		||||
	centre_angle = pitch_angle + half_thick_angle;
 | 
			
		||||
 | 
			
		||||
	start_angle = involute_intersect_angle (base_radius, min_radius);
 | 
			
		||||
	stop_angle = involute_intersect_angle (base_radius, outer_radius);
 | 
			
		||||
 | 
			
		||||
	res=(involute_facets!=0)?involute_facets:($fn==0)?5:$fn/4;
 | 
			
		||||
 | 
			
		||||
	union () {
 | 
			
		||||
		for (i=[1:res])
 | 
			
		||||
		assign ( point1=involute (base_radius,start_angle+(stop_angle - start_angle)*(i-1)/res), point2=involute (base_radius,start_angle+(stop_angle - start_angle)*i/res)) {
 | 
			
		||||
			assign (
 | 
			
		||||
				side1_point1=rotate_point (centre_angle, point1),
 | 
			
		||||
				side1_point2=rotate_point (centre_angle, point2),
 | 
			
		||||
				side2_point1=mirror_point (rotate_point (centre_angle, point1)),
 | 
			
		||||
				side2_point2=mirror_point (rotate_point (centre_angle, point2))) {
 | 
			
		||||
				polygon ( points=[[0,0],side1_point1,side1_point2,side2_point2,side2_point1], paths=[[0,1,2,3,4,0]]);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
// Mathematical Functions
 | 
			
		||||
//===============
 | 
			
		||||
 | 
			
		||||
// Finds the angle of the involute about the base radius at the given distance (radius) from it's center.
 | 
			
		||||
//source: http://www.mathhelpforum.com/math-help/geometry/136011-circle-involute-solving-y-any-given-x.html
 | 
			
		||||
 | 
			
		||||
function involute_intersect_angle (base_radius, radius) = sqrt (pow (radius/base_radius, 2) - 1) * 180 / pi;
 | 
			
		||||
 | 
			
		||||
// Calculate the involute position for a given base radius and involute angle.
 | 
			
		||||
 | 
			
		||||
function rotated_involute(rotate,base_radius,involute_angle)=[cos(rotate)*involute(base_radius, involute_angle)[0]+sin(rotate)*involute(base_radius, involute_angle)[1],cos(rotate)*involute(base_radius, involute_angle)[1]-sin(rotate)*involute(base_radius, involute_angle)[0]];
 | 
			
		||||
 | 
			
		||||
function mirror_point(coord)=[coord[0],-coord[1]];
 | 
			
		||||
 | 
			
		||||
function rotate_point(rotate,coord)=[cos(rotate)*coord[0]+sin(rotate)*coord[1],cos(rotate)*coord[1]-sin(rotate)*coord[0]];
 | 
			
		||||
 | 
			
		||||
function involute (base_radius, involute_angle)=[base_radius*(cos(involute_angle)+involute_angle*pi/180*sin(involute_angle)),base_radius*(sin(involute_angle)-involute_angle*pi/180*cos(involute_angle))];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module trapezoid(top,base,height){
 | 
			
		||||
	//echo ("test",base[0]);
 | 
			
		||||
	basePT1=[ -base[0]/2, base[1]/2, 0];
 | 
			
		||||
	basePT2=[ base[0]/2, base[1]/2, 0];
 | 
			
		||||
	basePT3=[ base[0]/2, -base[1]/2, 0];
 | 
			
		||||
	basePT4=[ -base[0]/2, -base[1]/2, 0];
 | 
			
		||||
	topPT1=[ -top[0]/2, top[1]/2, height];
 | 
			
		||||
	topPT2=[ top[0]/2, top[1]/2, height];
 | 
			
		||||
	topPT3=[ top[0]/2, -top[1]/2, height];
 | 
			
		||||
	topPT4=[ -top[0]/2, -top[1]/2, height];
 | 
			
		||||
	polyhedron(points=[ basePT1, basePT2, basePT3, basePT4, topPT1, topPT2, topPT3, topPT4],triangles=[[0,1,2], [0,2,3],[3,7,0], [7,4,0],[1,6,2], [1,5,6],[2,6,3], [3,6,7],[5,1,0],[4,5,0],[7,5,4],[5,7,6]]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9746
									
								
								scad/rack_and_pinion.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								sketchup/old-xend-rack-adapter.skp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								stl/alts-and-deprecated/fanduct-conical.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								stl/alts-and-deprecated/old-xend-rack-adapter.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								stl/alts-and-deprecated/power-switch-mount-Cherry-CR_E.stl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										6
									
								
								stl/alts-and-deprecated/readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,6 @@
 | 
			
		||||
/stl/alts-and-deprecated
 | 
			
		||||
 | 
			
		||||
The model files located in this folder are for 
 | 
			
		||||
rarely used alternate versions of some parts, or
 | 
			
		||||
deprecated models (things no longer recommended 
 | 
			
		||||
for the standard Wilson II build).
 | 
			
		||||