X carriage and nut holder with anti backlash
Antibacklash device 2 nuts and 1 spring embedded in a plastic piece that screws to the X carriage For now only accepts springs up to 35mm long TODO: design can be trimmed to get any value.pull/3/head
							parent
							
								
									c6b1532239
								
							
						
					
					
						commit
						fd0b21282c
					
				| 
						 | 
				
			
			@ -0,0 +1,443 @@
 | 
			
		|||
// Cyclone PCB Factory: a 3D printable CNC machine for PCB manufacture
 | 
			
		||||
// Created by Carlosgs (http://carlosgs.es)
 | 
			
		||||
// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/)
 | 
			
		||||
 | 
			
		||||
use <../libs/obiscad/bcube.scad>
 | 
			
		||||
use <../libs/obiscad/bevel.scad>
 | 
			
		||||
use <../libs/build_plate.scad>
 | 
			
		||||
use <../libs/teardrop.scad>
 | 
			
		||||
 | 
			
		||||
use <../libs/teardrop.scad>
 | 
			
		||||
include <./lm8uu_holder.scad>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
cyl_res = 40;
 | 
			
		||||
 | 
			
		||||
layer_height = 0.4;
 | 
			
		||||
 | 
			
		||||
X_smooth_rods_sep = 50;
 | 
			
		||||
X_smooth_rods_sep_projected = sqrt((X_smooth_rods_sep*X_smooth_rods_sep)/2); // Be careful with this measure, it is not properly named since it is used with the following offset:
 | 
			
		||||
smooth_rod_margin = 1;
 | 
			
		||||
 | 
			
		||||
X_rod_sep_real = X_smooth_rods_sep_projected+smooth_rod_margin;
 | 
			
		||||
X_rod_sep_real_diag = sqrt(2*(X_rod_sep_real*X_rod_sep_real));
 | 
			
		||||
 | 
			
		||||
screw_diam = 4;
 | 
			
		||||
 | 
			
		||||
M8_rod_diam = 8.2;
 | 
			
		||||
M8_rod_hole_diam = M8_rod_diam+0.2;
 | 
			
		||||
 | 
			
		||||
M8_nut_diameter =  14.6 + .5;
 | 
			
		||||
 | 
			
		||||
// Adjust these values to match the thickness of the nuts you will use
 | 
			
		||||
//nut height between 6 - 7mm
 | 
			
		||||
M8_nut_height_Z = 4;
 | 
			
		||||
M8_nut_height_X = 6.5 + .5;
 | 
			
		||||
//SPRING ANTIBACKLASH
 | 
			
		||||
 | 
			
		||||
SPRING_OD = 11.76;
 | 
			
		||||
SPRING_LEN = 35;
 | 
			
		||||
SPRING_COMP = 10;
 | 
			
		||||
//SPRING ANTIBACKLASH
 | 
			
		||||
 | 
			
		||||
X_axis_nut_support_thickness = 10;
 | 
			
		||||
 | 
			
		||||
X_nut_screw_diam = 3;
 | 
			
		||||
 | 
			
		||||
lbearing_length = 24;
 | 
			
		||||
 | 
			
		||||
Z_smooth_rods_sep = 55;
 | 
			
		||||
Z_smooth_rods_len = 140;
 | 
			
		||||
 | 
			
		||||
Z_threaded_rod_len = 120;
 | 
			
		||||
 | 
			
		||||
lbearing_holder_length = Z_smooth_rods_sep+M8_rod_diam+5;
 | 
			
		||||
 | 
			
		||||
module rod(len=100) {
 | 
			
		||||
	color([0.8,0.8,0.8])
 | 
			
		||||
     rotate([90,0,0])
 | 
			
		||||
       cylinder(r=8/2,h=len,center=true,$fn=32);
 | 
			
		||||
}
 | 
			
		||||
module spring(len = SPRING_LEN, rad = SPRING_OD) {
 | 
			
		||||
	 translate([0,-SPRING_LEN/4 - M8_nut_height_X +1.5,0])
 | 
			
		||||
	    color([0.5,0.5,0.5]) 
 | 
			
		||||
	         rotate([90,0,0])
 | 
			
		||||
      			 cylinder(r = rad/2, h = len + 2, center=true,$fn=30);     			
 | 
			
		||||
}
 | 
			
		||||
module rodHole(len=100,radius=M8_rod_hole_diam/2, truncateMM=1) {
 | 
			
		||||
	color([0.8,0.8,0.8])
 | 
			
		||||
     rotate([90,-90,0])
 | 
			
		||||
       translate([0,0,-len/2])
 | 
			
		||||
         teardrop(radius, len, truncateMM);
 | 
			
		||||
}
 | 
			
		||||
//--->yOPERO
 | 
			
		||||
module X_nut_holder() {	  
 | 
			
		||||
	//x nut holder cover DEBUG only
 | 
			
		||||
	*translate([0,0,0-0])
 | 
			
		||||
		X_nut_holder_cover_v1();
 | 
			
		||||
	//x nut holder cover DEBUG only
 | 
			
		||||
 | 
			
		||||
		//block 		
 | 
			
		||||
		difference() {
 | 
			
		||||
			translate([0,-1.5,11.5])
 | 
			
		||||
				difference(){
 | 
			
		||||
					cube([M8_nut_diameter+8,13,42],center=true);
 | 
			
		||||
					translate([0,0,14])
 | 
			
		||||
						cube([M8_nut_diameter+10,13,10],center=true);
 | 
			
		||||
				}
 | 
			
		||||
			//X_Nut
 | 
			
		||||
			translate([0,-1.5,0])
 | 
			
		||||
				rotate([-90,0,0]) hull() {				
 | 
			
		||||
				rotate([0,0,90]){
 | 
			
		||||
					cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6,center=true);
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
 | 
			
		||||
				// translate([0,0,-5])
 | 
			
		||||
				// 	cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6,center=true);
 | 
			
		||||
			
 | 
			
		||||
				}
 | 
			
		||||
		//spring diff
 | 
			
		||||
		spring();
 | 
			
		||||
		//Nut embedding
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_rod_diam/2+2,h=40,center=true,$fn=6);
 | 
			
		||||
	
 | 
			
		||||
		
 | 
			
		||||
		//Upper screw 
 | 
			
		||||
		translate([M8_nut_height_X + 1.5,-1.5,0])
 | 
			
		||||
			cylinder(r=X_nut_screw_diam/2,h=60,center=true,$fn=20);
 | 
			
		||||
		//Lower screw 
 | 
			
		||||
		translate([-M8_nut_height_X - 1.5,-1.5,0])
 | 
			
		||||
			cylinder(r=X_nut_screw_diam/2,h=60,center=true,$fn=20);
 | 
			
		||||
		//Nut transversal cut 
 | 
			
		||||
		translate([0,-1.5,-M8_nut_diameter/2])
 | 
			
		||||
			cube([M8_nut_diameter+10,13,M8_nut_diameter],center=true);	
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
module X_nut_holder_cover_antibacklash_base(){
 | 
			
		||||
	//x nut holder cover DEBUG only
 | 
			
		||||
	*translate([0,0,0-0])
 | 
			
		||||
		X_nut_holder_cover_v1();
 | 
			
		||||
	//x nut holder cover DEBUG only
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		//block 		
 | 
			
		||||
		difference() {
 | 
			
		||||
				translate([0,-1.5,-M8_nut_diameter/2])
 | 
			
		||||
				difference(){
 | 
			
		||||
						cube([M8_nut_diameter+8,13,M8_nut_diameter],center=true);
 | 
			
		||||
					
 | 
			
		||||
				}
 | 
			
		||||
			//X_Nut
 | 
			
		||||
			translate([0,-1.5,0])
 | 
			
		||||
				rotate([-90,0,0]) hull() {				
 | 
			
		||||
				rotate([0,0,90]){
 | 
			
		||||
					cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6,center=true);
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
 | 
			
		||||
				// translate([0,0,-5])
 | 
			
		||||
				// 	cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6,center=true);
 | 
			
		||||
			
 | 
			
		||||
				}
 | 
			
		||||
		//spring diff
 | 
			
		||||
		spring(len=SPRING_LEN/2);
 | 
			
		||||
		//Nut embedding
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_rod_diam/2+2,h=40,center=true,$fn=6);
 | 
			
		||||
	
 | 
			
		||||
		
 | 
			
		||||
		//Upper screw 
 | 
			
		||||
		translate([M8_nut_height_X + 1.5,-1.5,0])
 | 
			
		||||
			#cylinder(r=X_nut_screw_diam/2,h=60,center=true,$fn=20);
 | 
			
		||||
		//Lower screw 
 | 
			
		||||
		translate([-M8_nut_height_X - 1.5,-1.5,0])
 | 
			
		||||
			cylinder(r=X_nut_screw_diam/2,h=60,center=true,$fn=20);
 | 
			
		||||
		//Nut transversal cut 
 | 
			
		||||
		// translate([0,-1.5,-M8_nut_diameter/2])
 | 
			
		||||
		// 	cube([M8_nut_diameter+10,13,M8_nut_diameter],center=true);	
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module X_nut_holder_cover_v12(){
 | 
			
		||||
		//upper join
 | 
			
		||||
		translate([-M8_nut_height_X-3,-(13/4+1.25),-2])
 | 
			
		||||
			difference(){			
 | 
			
		||||
				rotate([90,0,0])
 | 
			
		||||
					cylinder(r=X_nut_screw_diam,h=13/2,center=true,$fn=20);
 | 
			
		||||
			//screw 
 | 
			
		||||
			rotate([90,0,0])
 | 
			
		||||
				cylinder(r=X_nut_screw_diam/2,h=400,center=true,$fn=20);
 | 
			
		||||
			}
 | 
			
		||||
			difference() {
 | 
			
		||||
				translate([0,-1.5,11.5])
 | 
			
		||||
				cube([M8_nut_diameter+6,12.5,42],center=true);
 | 
			
		||||
	
 | 
			
		||||
			//block
 | 
			
		||||
			rotate([0,45,0]) translate([0,0,-26])
 | 
			
		||||
				cube([20,20,20],center=true);
 | 
			
		||||
			//bold
 | 
			
		||||
			translate([0,-1.5,0])
 | 
			
		||||
				rotate([-90,0,0]) hull() {
 | 
			
		||||
			
 | 
			
		||||
			rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6,center=true);
 | 
			
		||||
			}
 | 
			
		||||
		//Nut embedding
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_rod_diam/2+2,h=40,center=true,$fn=6);
 | 
			
		||||
		//Joints body
 | 
			
		||||
		translate([-M8_nut_height_X-3,13/4-2,-2])
 | 
			
		||||
			rotate([90,0,0])
 | 
			
		||||
				cylinder(r=X_nut_screw_diam,h=20,center=true,$fn=20);
 | 
			
		||||
		
 | 
			
		||||
		//Upper screw
 | 
			
		||||
		translate([M8_nut_height_X+2,-1.5,0])
 | 
			
		||||
			cylinder(r=X_nut_screw_diam/2,h=60,center=true,$fn=20);
 | 
			
		||||
		//corte para obtener unicamente el nut cover
 | 
			
		||||
		translate([0,-1.5,13.25+M8_nut_diameter/2])
 | 
			
		||||
			cube([M8_nut_diameter+6,13,42],center=true);	
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
//yOPERO<----
 | 
			
		||||
module X_nut_holder_cover_v1(){
 | 
			
		||||
		//upper join
 | 
			
		||||
		translate([-M8_nut_height_X-2,-(13/4+1.25),-2])
 | 
			
		||||
			difference(){			
 | 
			
		||||
				rotate([90,0,0])
 | 
			
		||||
					cylinder(r=X_nut_screw_diam,h=13/2,center=true,$fn=20);
 | 
			
		||||
			//taladro m2
 | 
			
		||||
			rotate([90,0,0])
 | 
			
		||||
				cylinder(r=X_nut_screw_diam/2,h=400,center=true,$fn=20);
 | 
			
		||||
			}
 | 
			
		||||
			difference() {
 | 
			
		||||
				translate([0,-1.5,11.5])
 | 
			
		||||
				cube([M8_nut_diameter+6,12.5,42],center=true);
 | 
			
		||||
	
 | 
			
		||||
			//embellecedor
 | 
			
		||||
			rotate([0,45,0]) translate([0,0,-26])
 | 
			
		||||
				cube([20,20,20],center=true);
 | 
			
		||||
			//bold
 | 
			
		||||
				translate([0,-1.5,0])
 | 
			
		||||
					rotate([-90,0,0]) hull() {
 | 
			
		||||
			
 | 
			
		||||
			rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6,center=true);
 | 
			
		||||
		}
 | 
			
		||||
		//bold embedding
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_rod_diam/2+2,h=40,center=true,$fn=6);
 | 
			
		||||
		//Taladro base
 | 
			
		||||
		translate([-M8_nut_height_X-2,13/4-2,-2])
 | 
			
		||||
			rotate([90,0,0])
 | 
			
		||||
				cylinder(r=X_nut_screw_diam,h=20,center=true,$fn=20);
 | 
			
		||||
		//taladro m2
 | 
			
		||||
		*rotate([90,0,0])
 | 
			
		||||
				cylinder(r=X_nut_screw_diam/2,h=40,center=true,$fn=20);
 | 
			
		||||
		//Taladro superior >seguro
 | 
			
		||||
		translate([M8_nut_height_X+1,-1.5,0])
 | 
			
		||||
			cylinder(r=X_nut_screw_diam/2,h=60,center=true,$fn=20);
 | 
			
		||||
		//corte para obtener unicamente el nut cover
 | 
			
		||||
		translate([0,-1.5,13.25+M8_nut_diameter/2])
 | 
			
		||||
			cube([M8_nut_diameter+6,13,42],center=true);	
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
//yOPERO<----
 | 
			
		||||
 | 
			
		||||
module X_nut_holder_cover() {
 | 
			
		||||
	X_nut_screw_diam = X_nut_screw_diam*1.2;
 | 
			
		||||
	scale([1,1,-1]) rotate([-90,0,0])
 | 
			
		||||
	difference() {
 | 
			
		||||
		translate([0,0,7])
 | 
			
		||||
			cube([M8_nut_diameter+2,3,67],center=true);
 | 
			
		||||
		rotate([0,45,0]) translate([0,0,-16])
 | 
			
		||||
			cube([20,20,20],center=true);
 | 
			
		||||
 | 
			
		||||
		rotate([0,45,0]) translate([0,0,19])
 | 
			
		||||
			cube([60,20,20],center=true);
 | 
			
		||||
 | 
			
		||||
		rotate([-90,0,0]) hull() {
 | 
			
		||||
			translate([0,-1,0.5])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6);
 | 
			
		||||
			translate([0,10,0.5])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_nut_diameter/2,h=M8_nut_height_X,$fn=6);
 | 
			
		||||
		}
 | 
			
		||||
		rotate([90,0,0])
 | 
			
		||||
				rotate([0,0,90])
 | 
			
		||||
					cylinder(r=M8_rod_diam/2+2,h=40,center=true,$fn=6);
 | 
			
		||||
		translate([-4,0,10])
 | 
			
		||||
			rotate([90,0,0])
 | 
			
		||||
				cylinder(r=X_nut_screw_diam/2,h=40,center=true,$fn=20);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module X_carriage(show_printbed = 0, show_support = 1) {
 | 
			
		||||
  if(show_printbed) {
 | 
			
		||||
    //for display only, doesn't contribute to final object
 | 
			
		||||
    translate([0,0,-lbearing_holder_width/2])
 | 
			
		||||
      build_plate(3,110,140);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  difference() {
 | 
			
		||||
 | 
			
		||||
  union() {
 | 
			
		||||
 | 
			
		||||
  // Origin is set on the base of the Z threaded rod
 | 
			
		||||
  // ---------- Support for the X nut -------------
 | 
			
		||||
  translate([-X_rod_sep_real/2,-lbearing_holder_length/2+X_axis_nut_support_thickness/2+0,0]) {
 | 
			
		||||
    rotate([180,235,0]){ X_nut_holder();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
  // Now, the origin is set on the top smooth rod, and we make a 45deg turn
 | 
			
		||||
  translate([-X_rod_sep_real/2,0,X_rod_sep_real])
 | 
			
		||||
   rotate([0,45,0]) {
 | 
			
		||||
     // --------- Linear bearing supports ------------
 | 
			
		||||
	  lm8uu_bearing_holder_XZ(lbearing_holder_length);
 | 
			
		||||
	  translate([X_rod_sep_real_diag,0,0])
 | 
			
		||||
	    lm8uu_bearing_holder_XZ(lbearing_holder_length);
 | 
			
		||||
	  difference() {
 | 
			
		||||
       union() { // Join both linear bearing holders
 | 
			
		||||
	      translate([X_rod_sep_real_diag/2,0,lbearing_holder_height/4+2])
 | 
			
		||||
	        cube([X_rod_sep_real_diag+8,lbearing_holder_length,lbearing_holder_height/2],center=true);
 | 
			
		||||
         rotate([0,-45,0]) // Draw a cube for the Z nut holder
 | 
			
		||||
           translate([M8_nut_diameter,0,0])
 | 
			
		||||
	          cube([M8_nut_diameter*1.5,lbearing_holder_length,lbearing_holder_height/2],center=true);
 | 
			
		||||
       }
 | 
			
		||||
       // Leave clear the inside of the bearing holders
 | 
			
		||||
	    rotate([90,0,0]) {
 | 
			
		||||
	      cylinder(r=lbearing_holder_extDiam-1, h=lbearing_holder_length+0.1, center=true, $fn=40);
 | 
			
		||||
	      translate([X_rod_sep_real_diag,0,0])
 | 
			
		||||
	        cylinder(r=lbearing_holder_extDiam-1, h=lbearing_holder_length+0.1, center=true, $fn=40);
 | 
			
		||||
	    }
 | 
			
		||||
	  }
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   // ------- Z smooth rods holder -------
 | 
			
		||||
	translate([0,Z_smooth_rods_sep/2,30/2])
 | 
			
		||||
     cube([M8_rod_diam+9,M8_rod_diam+5,50],center=true);
 | 
			
		||||
	translate([0,-Z_smooth_rods_sep/2,30/2])
 | 
			
		||||
     cube([M8_rod_diam+9,M8_rod_diam+5,50],center=true);
 | 
			
		||||
	if(show_support) translate([0,0,-10+2/2])
 | 
			
		||||
     cube([M8_rod_diam+9,lbearing_holder_length,2],center=true);
 | 
			
		||||
 | 
			
		||||
   } // End of union
 | 
			
		||||
 | 
			
		||||
   // -------- Z axis rod holes --------
 | 
			
		||||
	translate([0,0,40-M8_nut_height_Z])
 | 
			
		||||
     cylinder(r=M8_nut_diameter/2,h=100,$fn=6);// Nut holder (Z)
 | 
			
		||||
	rotate([90,0,0]) {
 | 
			
		||||
	  translate([0,70/2-5,0]) // --- Hole for the threaded rod ---
 | 
			
		||||
       rodHole(len=50,radius=M8_rod_diam/2+2, truncateMM=2.5);
 | 
			
		||||
	  translate([0,Z_smooth_rods_len/2-5,Z_smooth_rods_sep/2])
 | 
			
		||||
	    rodHole(len=Z_smooth_rods_len);
 | 
			
		||||
	  translate([0,Z_smooth_rods_len/2-5,-Z_smooth_rods_sep/2])
 | 
			
		||||
	    rodHole(len=Z_smooth_rods_len);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
   } // End of difference
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module X_carriage_assembled(show_printbed = 0, show_Xrods = 0, show_Zrods = 0) {
 | 
			
		||||
  X_carriage(show_printbed);
 | 
			
		||||
 | 
			
		||||
  if(show_Xrods){
 | 
			
		||||
	  // ---- Rods (for reference) ----
 | 
			
		||||
	  translate([-X_rod_sep_real/2,0,0]) {
 | 
			
		||||
	    color([0.5,0.5,0.5]) rod(len=100);
 | 
			
		||||
	  }
 | 
			
		||||
	  translate([-X_rod_sep_real/2,0,X_rod_sep_real]) {
 | 
			
		||||
	    rod(len=100);
 | 
			
		||||
	  }
 | 
			
		||||
	  translate([X_rod_sep_real/2,0,0]) {
 | 
			
		||||
	    rod(len=100);
 | 
			
		||||
	  }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if(show_Zrods)
 | 
			
		||||
	  translate([0,0,0])
 | 
			
		||||
	    rotate([90,0,0]) {
 | 
			
		||||
	      translate([0,Z_threaded_rod_len/2-10,0])
 | 
			
		||||
	        color([0.5,0.5,0.5]) rod(len=Z_threaded_rod_len);
 | 
			
		||||
	      translate([0,Z_smooth_rods_len/2-5,Z_smooth_rods_sep/2])
 | 
			
		||||
	        rod(len=Z_smooth_rods_len);
 | 
			
		||||
	      translate([0,Z_smooth_rods_len/2-5,-Z_smooth_rods_sep/2])
 | 
			
		||||
	        rod(len=Z_smooth_rods_len);
 | 
			
		||||
	    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module X_carriage_print_plate() {
 | 
			
		||||
  //for display only, doesn't contribute to final object
 | 
			
		||||
  build_plate(3,110,140);
 | 
			
		||||
  translate([0,0,lbearing_holder_length/2])
 | 
			
		||||
	  rotate([90,0,0])
 | 
			
		||||
	    X_carriage(show_printbed = 0, show_support = 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
X_carriage_assembled(show_printbed = 0,show_Xrods = 1,show_Zrods = 0);
 | 
			
		||||
//X_carriage_print_plate();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//uncomment the line below to get the x nut cover
 | 
			
		||||
module backlash2(){
 | 
			
		||||
 | 
			
		||||
	translate([0,SPRING_LEN+M8_nut_diameter/2,0])
 | 
			
		||||
		X_nut_holder_cover_antibacklash_base();
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
module backlash1(){
 | 
			
		||||
	
 | 
			
		||||
	union(){
 | 
			
		||||
		mirror([0,1,0])
 | 
			
		||||
			translate([0,0,-0.1])
 | 
			
		||||
				rotate([0,0,0])
 | 
			
		||||
					X_nut_holder_cover_antibacklash_base();
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
module antibacklash_cover(){
 | 
			
		||||
difference(){
 | 
			
		||||
union(){
 | 
			
		||||
	//front left nut
 | 
			
		||||
	backlash1();	
 | 
			
		||||
	//front right nut
 | 
			
		||||
	backlash2();
 | 
			
		||||
	//back left nut
 | 
			
		||||
	mirror([0,0,1])
 | 
			
		||||
		backlash1();
 | 
			
		||||
	//Middle body
 | 
			
		||||
	difference(){
 | 
			
		||||
		translate([0,SPRING_LEN/2+5,-M8_nut_diameter/2])
 | 
			
		||||
			cube([M8_nut_diameter+8,SPRING_LEN-5,M8_nut_diameter/2],center=true);
 | 
			
		||||
	translate([0,SPRING_LEN,0])
 | 
			
		||||
		spring(SPRING_LEN-5);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
//triming to save plastic
 | 
			
		||||
translate([0,0,-M8_nut_diameter-2])
 | 
			
		||||
	cube([M8_nut_diameter+10,13*10,M8_nut_diameter],center=true);
 | 
			
		||||
translate([0,0,M8_nut_diameter+2])
 | 
			
		||||
	cube([M8_nut_diameter+10,13*10,M8_nut_diameter],center=true);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
#translate([-X_rod_sep_real/2-.1,-lbearing_holder_length/2+X_axis_nut_support_thickness/2+SPRING_LEN+7.5 ,0]) {
 | 
			
		||||
    rotate([180,235,0])
 | 
			
		||||
 | 
			
		||||
	antibacklash_cover();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue