Outils pour utilisateurs

Outils du site


servomoteur_lineaire

Ceci est une ancienne révision du document !


Élaboration d'un servomoteur linéaire

$fn = 100;
epTigeTeflon = 5.2;
diametre = 220; // Diamètre minimum 150mm
longueur = 260;
epaisseurCoque = 45;

servomoteur();

module servomoteur() {
    color("black") moteur();
    color("red") translate([-70, -9, -5.6])  fader1(); // y = 8.2
    translate([15, 0, 0]) poulie();
    translate([-150, 0, 5]) poulieLibre();
    color("red") translate([-155, 7.5, -10]) rail();

    // Couroie
    color("black") translate([0, 0, 6.5]) difference() {
        hull() {
            translate([15, 0, 0]) cylinder(d = 13, h = 6);
            translate([-150, 0, 0]) cylinder(d = 13, h = 6);
        }
        translate([0, 0, -1]) hull() {
            translate([15, 0, 0]) cylinder(d = 10, h = 8);
            translate([-150, 0, 0]) cylinder(d = 10, h = 8);
        }
    }
    color("white") translate([-134, -1, -2]) chariot();
    color("white") 
    translate([46, 0, 0]) rotate([0, 0, 180]) piece();
    color("pink") translate([-103.25, 11.3, 10]) rotate([0, -90, 0]) cylinder(d = 5, h = 200); // Tige
}

module fader1() {
    color("white") translate([0, 0, -6.1]) import("RSA0N11S9A0K.stl");
}


module piece() {
    // Plaque moteur
    translate([-4, -16, 0]) difference() { 
        cube([50, 32, 4]);
        translate([7, 7, -1]) cylinder(d = 3.2, h = 10);
        translate([7, 25, -1]) cylinder(d = 3.2, h = 10);
        translate([40, 7, -1]) cylinder(d = 3.2, h = 10);
        translate([40, 25, -1]) cylinder(d = 3.2, h = 10);
        translate([31, 16, -1]) cylinder(d = 15, h = 10); // Espace poulie
    }
    // Support fixation
    translate([-4, 12, 0]) difference() {
        cube([27, 4, 18]);
        translate([20, 20, 7]) rotate([90, 0, 0]) cylinder(d = 3.2, h = 40);
        translate([7, 20, 14]) rotate([90, 0, 0]) cylinder(d = 3.2, h = 40);
    }
    translate([-4, -16, 4]) prisme(4, 28, 14);
    translate([19, -16, 4]) prisme(4, 28, 14);
    // Support rail
    translate([46, -16, -14]) difference() {
         cube([137, 18, 4]); 
         for(i = [0 : 10]) {
            translate([12.5 + i * 15, 8.5, -1]) cylinder(d = 2.2, h = 7);
        } 
    }
    // Support potentiomètre
    translate([46, 14, -14]) cube([137, 2, 11]); 
    translate([46, 2, -14]) cube([137, 2, 11]);
    translate([46, -16, -14]) cube([4, 32, 18]);
    translate([46, 16, -14]) difference() { // Support potentiomètre
        translate([0, -14, 7.82]) cube([140, 14, 3.18]);
        translate([14, -8.5, 7]) cube([112, 3, 6]);
        translate([10, -7, 10.9]) visFraisee(3, 15, 10);
        translate([130, -7, 10.9]) visFraisee(3, 15, 10);
    }
    // Extrémité
    translate([182, -16, 0]) difference() {
        union() {
            // Bloc
            translate([0, 0, -14]) cube([24, 25, 18]);
            translate([0, 25, -3]) rotate([0, 90, 0]) cylinder(d = 14, h = 24);
            translate([0, 0, -14]) cube([24, 32, 11]);
            // Coulisse tige
            translate([0, 0, 0]) cube([24, 9, 10]);
            translate([0, 4.5, 10]) rotate([0, 90, 0]) cylinder(d = 9, h = 24);
            // Support poulie
            hull() {
                translate([9, 7, 10]) rotate([0, 90, 0]) cylinder(d = 14, h = 15);
                translate([9, 25, 10]) rotate([0, 90, 0]) cylinder(d = 14, h = 15);
            }
            translate([9, 0, -4]) cube([15, 32, 14]);
        }
        translate([-1, 4.7, 10]) rotate([0, 90, 0]) cylinder(d = 5.2, h = 40); // Insertion tige
        translate([8, 9, 4]) cube([20, 14, 11]); // Insertion poulie
        translate([-1, 4, -10]) cube([40, 9, 10]); // Passage de rail
        // Axe poulie L : 20
        translate([14, 16, -3]) cylinder(d = 3, h = 33); 
        translate([14, 16, 13]) cylinder(d = 3.2, h = 33);
        // Trou de fixxaxtion sur l'hexagone L : 30
        translate([2, 17, -10]) rotate([0, 90, 0]) cylinder(d = 3, h = 50);
        translate([2, 28, -1]) rotate([0, 90, 0]) cylinder(d = 3, h = 50);
    }
}

module chariot() {
    difference() {
        translate([0, -11, 0]) union() {
            cube([30.8, 28, 5]);
            hull() {
                translate([1.5, 0, 0])cylinder(d = 3, h = 5);
                translate([29.3, 0, 0]) cylinder(d = 3, h = 5);
            }
        }
        translate([8.9, 2.5, -1]) cylinder(d = 2, h = 7);
        translate([21.9, 2.5, -1]) cylinder(d = 2, h = 7);
        translate([8.9, 14.5, -1]) cylinder(d = 2, h = 7);
        translate([21.9, 14.5, -1]) cylinder(d = 2, h = 7);
        translate([6.7, -8.8, -1]) cube([18.6, 1.5, 5]); // Fente potentiomètre

    }
    translate([1.5, -11, 4]) difference() {
        coinceurCourroie();
        translate([5, 10, 13]) rotate([90, 0, 0]) cylinder(d = 3, h = 20);
        translate([22.5, 10, 13]) rotate([90, 0, 0]) cylinder(d = 3, h = 20);
    }
    translate([0, 12.5, 2]) difference() {
        union() {
            translate([0, -4.5, 0]) cube([30.8, 9, 10]);
            translate([0, 0, 10]) rotate([0, 90, 0]) cylinder(d = 9, h = 30.8);
        }
        translate([-1, -0.2, 10]) rotate([0, 90, 0]) cylinder(d = 5.2, h = 40); // Insertion tige
        translate([8.9, 2, -1]) cylinder(d = 4.4, h = 20); // Trou de tête de vis
        translate([21.9, 2, -1]) cylinder(d = 4.4, h = 20); // Trou de tête de vis
        translate([27, 0, 2]) cylinder(d = 2, h = 13); // Blocage tige
    }
}

module rail() {
    // Rail
    translate([0, -3.5, 0]) difference() {
        cube([150, 7, 4.8]);
        for(i = [0 : 10]) {
            translate([7.5 + i * 15, 3.5, -1]) cylinder(d = 2.4, h = 7);
            translate([7.5 + i * 15, 3.5, 2.]) cylinder(d = 4.2, h = 3);
        } 
        
    }
    // Chariot
    translate([119, -8.5, 1.5]) difference() {
        cube([30.8, 17, 6.5]);
        translate([8.9, 2.5, 3]) cylinder(d = 2, h = 6);
        translate([21.9, 2.5, 3]) cylinder(d = 2, h = 6);
        translate([8.9, 14.5, 3]) cylinder(d = 2, h = 6);
        translate([21.9, 14.5, 3]) cylinder(d = 2, h = 6);
    }
}

module coinceurCourroie() {
    difference() {
        union() {
            // 
            hull() {
                sphere(d = 3);
                translate([27.8, 0, 0]) sphere(d = 3);
                translate([0, 0, 15]) sphere(d = 3);
                translate([27.8, 0, 15]) sphere(d = 3);
            }
            hull() {
                translate([0, 3.5, 0]) sphere(d = 3);
                translate([10, 3.5, 0]) sphere(d = 3);
                translate([0, 3.5, 15]) sphere(d = 3);
                translate([10, 3.5, 15]) sphere(d = 3);
            }
            translate([17.8, 0, 0]) hull() {
                translate([0, 3.5, 0]) sphere(d = 3);
                translate([10, 3.5, 0]) sphere(d = 3);
                translate([0, 3.5, 15]) sphere(d = 3);
                translate([10, 3.5, 15]) sphere(d = 3);
            }
        }
        translate([30 , 1.75, 0.001]) rotate([0, 0, 90]) Trapeze(1, 2.5, 32, 40);
    }
}

module arrondisseurAngle(rayon, hauteur)  {
    difference() {
        cube([rayon, rayon, hauteur]);
        cylinder(r = rayon, h = hauteur);
    }
}

module Trapeze(b1, b2, p, h) {
    CubePoints = [
  [ -b1 / 2,  0,  0 ],  //0
  [ b1 / 2,  0,  0 ],  //1
  [ b1 / 2,  p,  0 ],  //2
  [ -b1 / 2,  p,  0 ],  //3
  [ -b2 / 2,  0,  h ],  //4
  [ b2 / 2,  0,  h ],  //5
  [ b2 / 2,  p,  h ],  //6
  [ -b2 / 2,  p,  h ]]; //7
  
    CubeFaces = [
  [0,1,2,3],  // Base
  [4,5,1,0],  // Face
  [7,6,5,4],  // Haut
  [5,6,2,1],  // Droite
  [6,7,3,2],  // Arrière
  [7,4,0,3]]; // Gauche
  
    polyhedron( CubePoints, CubeFaces ); 
}

module poulie() {
    translate([0, 0, 6]) {
        cylinder(d = 9, h = 7);
        for (angle = [0:7]) {
            rotate([0, 0, angle * 22.5]) translate([-5.055, -0.5,0]) cube([10.19, 1, 7]);
        }
    }
    translate([0, 0, 13]) cylinder(d = 13, h = 1);
    difference() {
        cylinder(d = 13, h = 6);
        translate([0, 0, 3]) rotate([90, 0, 0]) cylinder(d = 4, h = 7);
    }
}

module poulieLibre() {
    difference() {
        union() {
            cylinder(d = 13, h = 1);
            translate([0, 0, 1]) {
                cylinder(d = 9, h = 7);
                for (angle = [0:7]) {
                    rotate([0, 0, angle * 22.5]) translate([-5.055, -0.5,0]) cube([10.19, 1, 7]);
                }
            }
            translate([0, 0, 8]) cylinder(d = 13, h = 1);
        }
        translate([0, 0, -1]) cylinder(d = 3, h = 12); // Axe poulie
    }
}

module moteur() {
    translate([0, -16, -25.2]) cube([46, 32, 23.2]);
    translate([46, 3.8, -13.2]) rotate([0, 90, 0]) cylinder(d = 24.4, h = 30.8);
    translate([15, 0, -2]) cylinder(d = 6, h = 14);
    translate([6, 9, -2]) difference() {
        cylinder(d = 7.4, h = 2);
        cylinder(d = 3, h = 3);
    }
    translate([6, -9, -2]) difference() {
        cylinder(d = 7.4, h = 2);
        cylinder(d = 3, h = 3);
    }
    translate([39, 9, -2]) difference() {
        cylinder(d = 7.4, h = 2);
        cylinder(d = 3, h = 3);
    }
    translate([39, -9, -2]) difference() {
        cylinder(d = 7.4, h = 2);
        cylinder(d = 3, h = 3);
    }
}

module visFraisee(d, l, puit = 0) {
    if (d == 3) {
        translate([0, 0, -l]) cylinder(d = 3.2, h = l);
        translate([0, 0, -1.6009]) cylinder(d1 = 3.2, d2 = 6.3, h = 1.7);
        if (puit != 0) {
            cylinder(d = 6.3, h = puit);
        }
    }
}

module prisme(l, w, h){
    polyhedron(
        points=[[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
        faces=[[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
    );
}
servomoteur_lineaire.1622299883.txt.gz · Dernière modification : 2021/05/29 14:51 de Mushussu