/* * Rueda concava para robot Plumabot * * Por Rafael Jurado * * * Los parámetros de la rueda se pueden cambiar en la sección "Parámetros de usuario" * Partimos del tamaño de una junta tórica, de las utilizadas en fontanería y el tamaño del eje del motor. */ /**************************************************/ /* Parámetros de usuario */ /************************************************/ DiametroInteriorJunta=60; //Mínimo 20 GruesoJunta=5; EjeMotor=[3, 2.5]; //descomentar para Micro/Mini metal gearmotor de pololu //EjeMotor=[5, 4]; /******************************************************/ DiametroRueda=DiametroInteriorJunta+GruesoJunta+1; /*Para que se tenga que estirar la junta y se adapte * mejor a la rueda*/ GruesoRueda=GruesoJunta+2; Llanta=GruesoRueda/2+2; union() { difference() { disco(); radios(); cylinder (r=EjeMotor[0], h=GruesoRueda+0.1, $fn=25, center=true); translate([-0.5,-EjeMotor[0]-2,-GruesoRueda/2-0.1]) cube([1,EjeMotor[0]+2, GruesoRueda+0.1]); } buje(); } module disco() { difference() { cylinder (r=DiametroRueda/2, h=GruesoRueda, $fn=100, center=true); translate ([0, 0, -GruesoRueda/2+2]) cylinder (r=DiametroRueda/2-Llanta, h=GruesoRueda, $fn=100); rotate_extrude( $fn=100) translate([DiametroRueda/2, 0, 0]) rotate([0, 0, 0]) circle(r=GruesoJunta/2); } } module radios() { RadioHueco=(DiametroRueda-Llanta)*3.1416/32-1; //RadioHueco=DiametroRueda/18; CentroHueco=DiametroRueda/2-Llanta-RadioHueco; //CentroHueco=DiametroRueda/3.7; for( i=[0:15]) rotate(i*45,[0, 0, 1]) hull() { translate ([CentroHueco, 0,-0.1]) cylinder (r=RadioHueco, h=GruesoRueda+1, $fn=50,center=true); translate ([EjeMotor[0]+2, 0,-0.5]) cylinder (r=1, h=GruesoRueda, $fn=50,center=true); } } module buje() { union() { difference() { cylinder (r=EjeMotor[0]+1, h=GruesoRueda, $fn=25, center=true); cylinder (r=EjeMotor[0]/2, h=GruesoRueda+0.1, $fn=25,center=true); translate([-0.5,-EjeMotor[0]-1,-GruesoRueda/2-0.1]) cube ([1,EjeMotor[0], GruesoRueda+0.2]); } translate([-EjeMotor[0]/2, (EjeMotor[0]/2)-(EjeMotor[0]-EjeMotor[1]),-GruesoRueda/2]) cube([EjeMotor[0],1,GruesoRueda]); } }