Elio Antoun
Séance 1 - Découverte de l'impression 3D
1. Objectif de la séance
L’objectif de cette première séance était de découvrir le fonctionnement de l’impression 3D à travers :
-
la recherche d’un modèle existant,
-
son importation dans un logiciel de tranchage (slicer),
-
le choix de paramètres d’impression adaptés,
-
et la préparation du fichier pour l’impression.
2. Recherche d’un modèle 3D
Dans un premier temps, j’ai effectué une recherche sur le web afin de trouver une base de données de modèles 3D prêts à imprimer.
Je me suis orienté vers la plateforme Printables.com, qui regroupe des milliers de modèles partagés par la communauté.
Après avoir exploré plusieurs catégories, j’ai choisi de me concentrer sur des figurines, car elles permettent de tester à la fois :
-
les détails,
-
les volumes,
-
et la stabilité à l’impression.
C’est dans ce cadre que j’ai sélectionné le modèle : “Minecraft Baby Creeper”, conçu par l’utilisateur Shark Byte.
Ce choix s’explique par :
-
sa forme simple mais détaillée,
-
sa taille réduite,
-
son aspect ludique, idéal pour une première prise en main.
3. Importation dans le slicer
Le fichier STL du Baby Creeper a été téléchargé depuis Printables puis importé dans le logiciel PrusaSlicer.
Une fois le modèle chargé :
-
il a été automatiquement positionné sur le plateau,
-
ses dimensions ont été vérifiées,
-
et son orientation n’a pas été modifiée afin de conserver sa stabilité.
Dimensions globales du modèle :
-
X : 114,41 mm
-
Y : 100,69 mm
-
Z : 24 mm
4. Choix des réglages d’impression
L’objectif était d’obtenir une figurine :
-
suffisamment robuste,
-
avec un temps d’impression raisonnable.
Les réglages suivants ont été sélectionnés :
| Paramètre | Valeur |
|---|---|
| Profil | 0.15 mm SPEED |
| Filament | Generic PLA |
| Imprimante | Original Prusa MK4S HF0.4 nozzle |
| Supports | Seulement pour les générateurs de supports |
| Remplissage | 15 % |
| Bordure (brim) | Désactivée |
Ces réglages permettent un bon compromis entre qualité, solidité et rapidité.
5. Conclusion de la séance
Cette séance m’a permis de :
-
comprendre le rôle d’un slicer,
-
manipuler un modèle 3D,
-
choisir des paramètres adaptés,
-
et préparer un fichier pour l’impression.
Elle constitue une première étape essentielle avant de passer à des objets plus complexes et à des conceptions originales lors des séances suivantes.
Séance 2 - Conception d’un objet impossible par fabrication traditionnelle
1. Objectif de la séance
L’objectif de cette deuxième séance était de concevoir un objet dont la fabrication est impossible avec des procédés traditionnels, et qui nécessite obligatoirement l’impression 3D.
Contrairement à la séance 1 (basée sur un modèle existant), cette séance repose sur la création d’un objet original intégrant une géométrie interne non accessible.
2. Principe de l’objet
L’objet conçu est une cage sphérique contenant une boule libre à l’intérieur, imprimée en une seule pièce.
Caractéristiques principales :
-
La boule interne est totalement enfermée.
-
Elle peut bouger librement dans la cage.
-
Il est impossible de l’assembler après fabrication, car aucune ouverture ne permet d’insérer la sphère.
Ce type de géométrie ne peut pas être produit par :
-
usinage (outil non accessible),
-
moulage (contre-dépouilles internes),
-
assemblage (aucune ouverture).
Il s’agit donc d’un objet exclusivement réalisable par fabrication additive.
3. Outil de modélisation
Le modèle a été conçu avec le logiciel OpenSCAD, qui permet de créer des formes paramétriques à partir de code.
Les paramètres principaux définis sont :
-
le diamètre de la sphère intérieure,
-
l’épaisseur de la cage,
-
le jeu entre les deux éléments,
-
la résolution d’affichage.
// Paramètres
$fn = 60; // Résolution (augmente à 100 pour une finition plus lisse)
diametre_interieur = 20;
epaisseur_cage = 3;
espace_jeu = 2; // L'espace pour que la boule bouge librement
// 1. La sphère intérieure (libre)
sphere(d = diametre_interieur);
// 2. La cage extérieure
difference() {
// Sphère externe de la cage
sphere(d = diametre_interieur + (epaisseur_cage * 2) + (espace_jeu * 2));
// On vide l'intérieur pour laisser la place à la boule
sphere(d = diametre_interieur + (espace_jeu * 2));
// On crée des ouvertures pour voir la boule et prouver qu'elle est prisonnière
// Trous sur l'axe X
rotate([0, 90, 0])
cylinder(h = 100, d = 15, center = true);
// Trous sur l'axe Y
rotate([90, 0, 0])
cylinder(h = 100, d = 15, center = true);
// Trous sur l'axe Z
cylinder(h = 100, d = 15, center = true);
}
4. Description du modèle
Le modèle est composé de :
-
Une sphère interne libre, qui représente l’élément mobile.
-
Une cage sphérique externe, évidée à l’intérieur pour laisser la place à la boule.
-
Trois ouvertures cylindriques orientées sur les axes X, Y et Z, permettant :
-
de voir la boule,
-
de prouver qu’elle est enfermée,
-
sans permettre son extraction.
-
L’ensemble forme une structure fermée mais fonctionnelle.
5. Résultat
Le rendu montre une sphère interne parfaitement emprisonnée dans une cage ajourée.
Cette pièce est un démonstrateur de fabrication additive, car sa fonction dépend directement de sa géométrie interne inaccessible.
6. Conclusion
Cette séance m’a permis de passer :
-
d’un modèle existant,
-
à une conception innovante, exploitant les possibilités uniques de l’impression 3D.
Elle démontre que l’impression 3D ne sert pas uniquement à reproduire des objets, mais à créer des formes impossibles autrement.
Séance 3 - Tour de Chute Libre "Spiral Hourglass"
1. Description du projet
Ce projet consiste en la modélisation et la fabrication d'un objet cinétique de type "fidget" : un sablier à spirale. Une bille d'acier descend par gravité le long d'une trajectoire hélicoïdale creusée dans un volume en forme d'hyperboloïde, le tout enfermé dans une coque externe transparente ou évidée.
Objectifs :
-
Étudier la géométrie complexe de l'objet (surfaces courbes et trajectoires hélicoïdales).
-
Réaliser une rétro-ingénierie d'un modèle existant pour le rendre paramétrique.
-
Fabriquer l'objet en impression 3D sans supports.
2. Analyse Technique et Modélisation
Pour dépasser la simple impression de fichiers STL figés, j'ai opté pour une re-conception paramétrique sous OpenSCAD. Cela permet de modifier la taille de la bille, la vitesse de chute (nombre de tours) et les tolérances d'impression.
2.1 Concepts Géométriques
L'objet repose sur deux primitives mathématiques principales :
-
L'Hyperboloïde à une nappe (Le corps) : La forme de "sablier" n'est pas deux cônes, mais une structure continue qui permet une transition fluide pour la bille.
-
L'Hélice (La trajectoire) : La rainure suit une courbe hélicoïdale dont le rayon varie en fonction de la hauteur ($Z$).
2.2 Le Code Paramétrique (OpenSCAD)
Le script suivant génère dynamiquement le noyau interne (Inner Core) et la coque externe (Outer Shell) en s'assurant qu'ils s'emboîtent parfaitement grâce à une variable de clearance (jeu fonctionnel).
Caractéristiques du code :
-
Utilisation de la fonction
hull()itérative pour creuser le chemin de la bille proprement. -
Calcul dynamique du rayon pour suivre la courbure du sablier.
-
Séparation automatique des pièces pour l'export STL.
// Spiral Hourglass Fidget
/* General Dimensions */
total_height = 80; // Total height of one segment
max_diameter = 40; // Width at top/bottom
min_diameter = 20; // Width at the narrow waist
wall_thickness = 1.6; // Thickness of the outer shell
clearance = 0.3; // Gap between inner and outer parts
/* Ball & Path */
ball_diameter = 9.5; // Size of the ball (standard steel marble)
groove_depth_ratio = 0.6; // How deep the ball sits in the inner core (0-1)
twists = 2.0; // Number of spiral rotations
resolution = 100; // Steps for the spiral generation (Higher = smoother but slower)
/* Rendering */
part_to_show = "both"; // [both, inner, outer]
$fn = 60; // Resolution for cylinders/spheres
// --- Derived Calculations ---
R_max = max_diameter / 2;
R_min = min_diameter / 2;
path_radius_offset = (ball_diameter / 2) + 0.5; // Distance from surface for cutting groove
// --- Main Logic ---
if (part_to_show == "inner" || part_to_show == "both") {
translate([-max_diameter/1.5, 0, 0])
Inner_Core();
}
if (part_to_show == "outer" || part_to_show == "both") {
translate([max_diameter/1.5, 0, 0])
Outer_Shell();
}
// --- Modules ---
module Inner_Core() {
difference() {
// 1. The main hourglass body
hourglass_solid(h=total_height, r_start=R_max, r_mid=R_min - clearance);
// 2. The Helical Groove
// We subtract a trail of spheres to make the path
spiral_path(
h=total_height,
r_start=R_max - clearance,
r_mid=R_min - clearance,
turns=twists,
cut_r=ball_diameter/2 + 0.2
);
// 3. Central alignment hole (optional, saves plastic)
cylinder(h=total_height*3, r=4, center=true);
}
}
module Outer_Shell() {
difference() {
// 1. Outer Surface
hourglass_solid(h=total_height, r_start=R_max + wall_thickness, r_mid=R_min + wall_thickness);
// 2. Inner Surface (Hollow out)
// Make slightly larger than the core for clearance
translate([0,0,-0.1])
hourglass_solid(h=total_height + 0.2, r_start=R_max, r_mid=R_min);
}
}
// --- Helper Functions ---
// Generates the Hourglass Body Shape using a Hyperboloid approximation
module hourglass_solid(h, r_start, r_mid) {
// We construct this by stacking thin cylinders to approximate the curve
// This is robust and works without external libraries
step = h / resolution;
union() {
for (i = [0 : resolution - 1]) {
z = i * step;
// Radius at current height Z
r1 = get_radius(z, h, r_start, r_mid);
// Radius at next height
r2 = get_radius(z + step, h, r_start, r_mid);
translate([0, 0, z])
cylinder(h=step, r1=r1, r2=r2);
}
}
}
// Generates the helical cut for the ball
module spiral_path(h, r_start, r_mid, turns, cut_r) {
step_angle = (turns * 360) / resolution;
step_z = h / resolution;
for (i = [0 : resolution - 1]) {
z1 = i * step_z;
ang1 = i * step_angle;
rad1 = get_radius(z1, h, r_start, r_mid);
z2 = (i + 1) * step_z;
ang2 = (i + 1) * step_angle;
rad2 = get_radius(z2, h, r_start, r_mid);
hull() {
translate([rad1 * cos(ang1), rad1 * sin(ang1), z1])
sphere(r=cut_r);
translate([rad2 * cos(ang2), rad2 * sin(ang2), z2])
sphere(r=cut_r);
}
}
}
// Mathematical function for the hourglass curve (Parabolic/Hyperbolic curve)
function get_radius(z, h, r_outer, r_inner) =
let (
// Map Z (0 to h) to -1 to 1
normalized_z = (z - h/2) / (h/2),
// Calculate curve factor (x^2 parabola for simple hourglass)
factor = pow(normalized_z, 2)
)
r_inner + (r_outer - r_inner) * factor;
3. Fabrication
3.1 Paramètres d'Impression (Slicer)
Le modèle est conçu pour être imprimé sans supports, grâce à l'angle progressif de la spirale.
-
Imprimante : Prusa i3 MK3S / MK4 (selon ce que tu as utilisé).
-
Matériau : PLA (pour la rigidité et la précision dimensionnelle).
-
Buse : 0.4mm.
-
Hauteur de couche : 0.2mm (Qualité standard).
-
Remplissage (Infill) : 15% Gyroid (suffisant pour la résistance mécanique).
-
Supports : AUCUN (Impératif pour que la bille roule bien, les supports laisseraient des résidus dans la rainure).
-
Adhérence : Une bordure (Brim) de 5mm est recommandée pour la coque externe (Outer Shell) car la surface de contact est fine.
3.2 Post-Traitement et Assemblage
-
Nettoyage : Retrait de la bordure (brim) au cutter.
-
Test à sec : Insertion de la bille pour vérifier qu'elle roule sans accrocs dans la rainure interne.
-
Assemblage : La coque externe glisse sur le noyau interne. Si le jeu est trop serré, un léger ponçage des arêtes internes peut être nécessaire (ou ajuster la variable
clearancedans le code à 0.4).
4. Retours d'expérience
-
Problème rencontré : Lors du premier test, la bille se bloquait à mi-parcours.
-
Analyse : La tolérance entre la bille et la rainure était trop juste (0.1mm), et les imperfections de l'impression (Z-seam) créaient des frictions.
-
Solution : Modification du code pour augmenter le diamètre de découpe (
cut_r = ball_diameter/2 + 0.2) et augmentation de la résolution$fnpour lisser la courbe.







No Comments