concept.scad 3.96 KB
include <MCAD/gears.scad>

// geschwindigkeit
TIME = $t*50;

// rotationsrichtung
ROTATESMALL = (-TIME);
ROTATEBIG = (TIME);

// x-bewegung
//ROTATESMALL = (-TIME);
//ROTATEBIG = (TIME);

// extractormotor rotiert
//ROTATESMALL = (TIME);
//ROTATEBIG = (TIME);




SMALLROTATION = (ROTATESMALL*18);
BIGROTATION = (ROTATEBIG*6);


// haeh? das macht keinen sinn: (reicht aber fuer eine demo)
MEDIUMROTATION = ((BIGROTATION/2)+(-SMALLROTATION/2))*1.5;
FINALROTATION = (TIME - ((ROTATEBIG/2)+(-ROTATESMALL/2)))*9;


module achse(spiel=0){
    translate([0,0,-15]) cylinder(h=30,d=7+spiel,center=0);
    }


module stdrad(){
    difference() {
	linear_extrude(height = 2, center = false, convexity = 5,twist = 0)
	gear(number_of_teeth=20,circular_pitch=200, diametral_pitch=10,pressure_angle=85, clearance = 0.1);
	translate([0,0,-2]) cylinder(h=5,d=7,center=0);
	for ( aussparung = [0 : 5] ) {
	    rotate([0,0,60*aussparung]) translate([6.5,0,-1]) cylinder(h=4,d=4,center=0);
	}
    }
}

module kranz(teeth=25, height=5){
    diameter = teeth * 1.3;
    difference() {
	cylinder(h=height,d=diameter,center=0);
	translate([0,0,-0.5])
	linear_extrude(height = height+1, center = false, convexity = 5,twist = 0) {
	    gear(number_of_teeth=teeth,
		circular_pitch=200, diametral_pitch=0,
		pressure_angle=85, clearance = -1);
	}}
}

module bandspanner(){
    color("Gray") union() {
	translate([0,0,3]) cylinder(h=1,d=5,center=true);
	translate([0,0,0]) cylinder(h=5,d=4,center=true);
	translate([0,0,-3]) cylinder(h=1,d=5,center=true);
    }
}

rotate([90,90,0]) {

    translate([-29,29,0.5]) bandspanner();
    translate([-29,-29,0.5]) bandspanner();
    translate([8,17,-8.5]) bandspanner();
    translate([8,-17,-8.5]) bandspanner();


    // gehaeuse
    translate([0,0,-4.5]) union() {
	difference() {
	    union() {
		cylinder(h=11,d=80,center=false);
		translate([-28,-28,9]) {
		    minkowski() {
			cube([5,57,1],false);
			cylinder(h=1,d=10,center=false);
		    }}

	    }
	    translate([0,0,1]) cylinder(h=8,d=77,center=false);
	    difference(){
		union() {
		    translate([33,0,5]) cube([40,80,15],true);
		    translate([-33,0,1.5]) cube([40,80,15],true);
		}
		translate([0,0,0]) cylinder(h=1,d=30,center=0);
	    }
	    translate([0,0,-5]) cylinder(h=8,d=25,center=0);
	    translate([0,0,5]) cylinder(h=8,d=8,center=0);
	}

   }


    // antrieb inneres standardrad, muss in zwei teilen gedruckt werden !!(?)
    color("CadetBlue") rotate([0,0,SMALLROTATION]) difference() {
	union() {
	    stdrad();
	    translate([0,0,-5]) cylinder(h=6,d=19,center=0);
	    translate([0,0,-5])
	    difference() {
		translate([0,0,-7]) cylinder(h=7,d=30,center=0);
		translate([0,0,-6]) kranz(teeth=24, height=5);
	    }
	}
	achse(spiel=0.5);
    }

    // antrieb auesseres stdrad
    color("CadetBlue") rotate([0,0,BIGROTATION]) difference() {
	difference() {
	    // aeusserer kranz
	    translate([0,0,0.-3]) {
		difference() {
		    translate([0,0,0]) {
			cylinder(h=7,d=75,center=0);
		    }
		    translate([0,0,2.5]) rotate([0,0,9]) {
			linear_extrude(height = 3, center = false, convexity = 2,twist = 0) {
			    gear(number_of_teeth=60,
				circular_pitch=200, diametral_pitch=0,
				pressure_angle=85, clearance = 0.1);
			}}
		}

	    }
	    // zahnriemen auf aeusserem kranz
	    translate([0,0,-2]) kranz(teeth=64, height=5);
	}

	// innerer leerraum
	translate([0,0,-3.5]) cylinder(h=8,d=64,center=0);
    }

    // aufhängung mit extraktorachse
    rotate([0,0,FINALROTATION]){
	color("RosyBrown") union() {
	    translate([0,0,2.5]) {
	    achse(spiel=0);
	    difference() {
		cylinder(h=1.5,d=60,center=0);
		for ( aussparung = [0 : 3] ) {
			rotate([0,0,120*aussparung]) translate([0,15,-0.5]) cylinder(h=5,d=20,center=0);
		    }
	    }
	    for ( achse = [0 : 3] ) {
		rotate([0,0,120*achse]) translate([20,10,-2.6]) cylinder(h=3,d=6.7,center=0);
	    }
	}
	}

	// drei mittlere raeder
	for ( radnummer = [0 : 3] ) {
	    rotate([0,0,120*radnummer]) translate([20,10]) rotate([0,0,9+MEDIUMROTATION]) {
		stdrad();
	    }
	}
    }
}