$fn = 100;
servomoteur(true);
//chariot();
//piece();
module servomoteur(impression = false) {
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(impression);
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(impression = false) {
// 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]);
// 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]);
if (impression) {
// Extension impression
difference() {
translate([26, -16, -14]) cube([20, 32, 2]);
translate([46, -16, -14.2]) rotate([-90, 0, 0]) cylinder(d = 1, h = 40);
}
difference() {
translate([206, -20, -14]) cube([20,36, 2.2]);
translate([206, -20, -14.2]) rotate([-90, 0, 0]) cylinder(d = 1, h = 40);
}
}
}
module chariot() {
difference() {
translate([0, -11, 0]) union() {
// Plaque
translate([0, -0.5, 0]) cube([30.8, 28.5, 5]);
hull() {
translate([2, -0.5, 0]) cylinder(d = 4, h = 5);
translate([28.8, -0.5, 0]) cylinder(d = 4, h = 5);
}
// Coinceurs courroie
translate([1.5, 0, 4])
difference() {
coinceurCourroie();
translate([5, -2.41, 14]) rotate([90, 0, 0]) visFraisee(3, 10);
translate([22.5, -2.41, 14]) rotate([90, 0, 0]) visFraisee(3, 10);
}
}
// 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() { // Commun
translate([0.5, -0.5, 0]) sphere(d = 4);
translate([27.3, -0.5, 0]) sphere(d = 4);
translate([0.5, -0.5, 16]) sphere(d = 4);
translate([27.3, -0.5, 16]) sphere(d = 4);
}
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]]
);
}