Outils pour utilisateurs

Outils du site


servomoteur_lineaire

Ceci est une ancienne révision du document !


Élaboration d'un servomoteur linéaire

Présentation

Code OpenSCAD

$fn = 100;
 
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("red") translate([-36, -1, -2]) chariot();
    color("white") 
    translate([46, 0, 0]) rotate([0, 0, 180]) piece();
    color("pink") translate([-5.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() {
        translate([0, -1, 0]) cube([50, 33, 4]);
        translate([11, 7, -1]) cylinder(d = 3.2, h = 10);
        translate([11, 25, -1]) cylinder(d = 3.2, h = 10);
        translate([44, 7, -1]) cylinder(d = 3.2, h = 10);
        translate([44, 25, -1]) cylinder(d = 3.2, h = 10);
        translate([35, 16, -1]) cylinder(d = 14, h = 20); // Espace poulie
    }
    // Support fixation
    translate([-4, -20, 4]) prisme(4, 32, 14);
    translate([20, -20, 4]) prisme(4, 32, 14);
    translate([-4, 12, 0]) difference() {
        cube([28, 4, 18]);
        translate([21, 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);
    }
    // Support rail
    translate([46, -16, -14]) difference() {
         translate([0, -1, 0]) cube([137, 19, 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, -17, -14]) cube([4, 33, 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, -1, -14]) cube([24, 26, 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, 3, 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, -4, -4]) cube([15, 36, 14]);
            // Support fixation
            translate([9, 25, 17]) rotate([0, 0, -90]) prisme(4, 11, 18);
            translate([9, 7, 17]) rotate([0, 0, -90]) prisme(4, 11, 18);
            translate([20, 3, 17]) cube([4, 22, 18]);
        }
        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.2, h = 33); 
        translate([14, 16, 13]) cylinder(d = 3.2, h = 33);
        // Trou de fixation sur l'hexagone L : 30
        translate([2, 17, -10]) rotate([0, 90, 0]) cylinder(d = 3.2, h = 50);
        translate([2, 28, -1]) rotate([0, 90, 0]) cylinder(d = 3.2, h = 50);
        // Fixation hexagone
        translate([19, 14, 30]) rotate([0, 90, 0]) cylinder(d = 3.2, h = 40);
 
    }
    // Renfort côté
    translate([-4, -20, -14]) cube([210, 3, 18]);
    // Extension impression
    translate([26, -16, -14]) cube([20, 32, 2]);
    translate([206, -20, -14]) cube([20,36, 2.2]);
}
 
module chariot() {
    difference() {
        translate([0, -11, 0]) union() {
            // Plaque
            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);
            }
            // Coinceurs courroie
            translate([1.5, 0, 4]) difference() {
                coinceurCourroie();
                translate([5, 10, 14]) rotate([90, 0, 0]) cylinder(d = 2.2, h = 20);
                translate([22.5, 10, 14]) rotate([90, 0, 0]) cylinder(d = 2.2, h = 20);
            }
        }
        // Trou de vis
        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);
        // Fente potentiomètre
        translate([5.4, -8.8, -1]) cube([20, 1.5, 5]); 
 
    }
    // Support de tige
    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, 16]) sphere(d = 3);
                translate([27.8, 0, 16]) sphere(d = 3);
            }
            hull() {
                translate([0, 3.5, 0]) sphere(d = 3);
                translate([10, 3.5, 0]) sphere(d = 3);
                translate([0, 3.5, 16]) sphere(d = 3);
                translate([10, 3.5, 16]) 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, 16]) sphere(d = 3);
                translate([10, 3.5, 16]) sphere(d = 3);
            }
        }
        translate([30 , 1.75, 0.001]) rotate([0, 0, 90]) Trapeze(1, 2.5, 32, 40);
    }
}
 
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 arcCylinder(d, h, a) {
    difference() {
        cylinder(d = d, h = h);
        translate([- d / 2, -d,  -1]) cube([d, d, h + 2]);
        rotate([0, 0, a]) translate([- d / 2, 0,  -1]) cube([d, d, h + 2]);
    }
}
 
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]]
    );
}

Matériel

Visserie

Qtt Nom Diamètre Taille Référence Fournisseur
4 Vis TCHC acier 8.8 noir DIN 912 3 6 TCHC03/006A8NOEF FIXNVIS
2 Vis TFHC acier 10.9 noir DIN 7991 3 6 TFHC03/006A10NOEF FIXNVIS
10 Vis TCHC acier 12.9 noir DIN 912 2 10 TCHC02/010A12NOEF FIXNVIS
9 Rondelle Blanc NFE 25513 2 M RONM02ZN FIXNVIS
9 Ecrou hexagonal HU acier brut DIN 934 2 ECRHU02BR FIXNVIS
4 Vis TCHC acier 12.9 noir DIN 912 2 8 TCHC02/008A12NOEF FIXNVIS
1 Vis TCHC acier 8.8 noir DIN 912 3 20 TCHC03/020A8NOEF FIXNVIS
1 Rondelle Blanc NFE 25513 3 M RONM03ZN FIXNVIS
2 Vis TCHC acier 8.8 noir DIN 912 3 10 TCHC03/010A8NOEF FIXNVIS
2 Écrou nylstop zingué blanc DIN 985 3 ECRNYL03ZN FIXNVIS
  • Rail linéaire 150 mm MGN7H Aliexpress
  • Moto-réducteur Bringsmart JGY-370 12V 30RPM + Package A Aliexpress
  • Poulie avec roulement à bille 16 dents alésage 3mm largeur 6 mm avec dents pour courroie GT2 Aliexpress
  • Courroie GT2, largeur 6mm longueur 420mm Aliexpress
  • Poulie fixe GT2 16 dents alésage 6mm Aliexpress
servomoteur_lineaire.1624192799.txt.gz · Dernière modification : 2021/06/20 12:39 de Mushussu