Skip to main content

Angel CHEN

Informations

  • Angel Chen 
  • angel.chen@etu.sorbonne-universite.fr
  • M1 Management de l'innovation 
  • 09/01/2026 - 01/07/2026

Contexte

Dans le cadre de notre UE Processus d'Innovation, il nous a été demandé de créer un objet en impression 3D pour nous rencontrer avec la CAO via OpenScad. Tout d'abord avec une forme simple, puis une seconde plus complexe (j'ai fais l'inverse car je n'étais pas présent au premier cours). 

MODÉLISATION COMPLEXE (Fusée Fantaisie)

Objectifs

Modéliser et Imprimer une petite fusée avec un style fantaisiste comme dans les dessins animés. Avec la possibilité de visser la pointe et y ranger des objets.

      Capture d'écran 2026-02-07 à 17.29.55.png  Capture d'écran 2026-02-07 à 17.28.21.png  Capture d'écran 2026-02-07 à 20.54.23.png

Matériel

  • Imprimante 3D :  Originale Prusa MK4S
  • Filament : PLA 

Machines utilisées

  • Logiciel de montage :  OpenSCAD
  • Logiciel de découpe  : PrusaSlicer

Construction

  • Le Code

Tout d'abord mon code :

J'ai d'abord créer les formes que je voulais séparément et puis je les ai assemblées. J'ai donc joué sur l'échelle et la position de chaque morceaux, d'où la forme de mon code.

// Changement de la résolution du modèle
$fa = 1;
$fs = 0.4;
$fn = 200;

//forme de la vis
module vis_simple(diametre=10, longueur=30, pas=5) {
    rayon = diametre / 2;
    nb_tours = longueur / pas;
    
    union() {
        //L'axe central
        cylinder(r=rayon - 1, h=longueur);
        
        //Le filetage
        linear_extrude(height=longueur, twist=-360 * nb_tours)
        translate([rayon - 1.5, 0, 0])
        circle(r=1.5, $fn=30);
    }
}


//Nez de la fusée
module nez() {
    color("Red")
    //permet d'avoir le nez au dessus de la fusée
    translate([0, 0, 58])
//    translate([0, 35, 9.8])
    
    difference() {
        union() {
            // Le Haut (Cône + Antenne)
            cylinder(h=15.1, r1=5.8, r2=0.7);
            
            translate([0, 0, 15]) 
            cylinder(h=4, r=0.7);
            
            translate([0, 0, 19]) 
            sphere(r=1);
            
            // Le Bas (La vis)
            rotate([180, 0, 0])
            vis_simple(diametre=9.4, longueur=9.8, pas=4);
        }
        //Trou
        rotate([180, 0, 0])
        translate([0, 0, -1])
        cylinder(h=20, r=3);
    }
}

nez();


// Corps de la fusée
module fuselage() {
    color("White")
    union() {
        hull() {
            //Diamètre 1 (base au sol)
            translate([0, 0, 0])
            cylinder(h=0.1, d=15); 
            
            //Diamètre 2 (intersection)
            translate([0, 0, 15])
            cylinder(h=0.1, d=20);
            
            //Création du haut du fuselatge qui est arrondi
            difference() {
                scale([0.69, 0.69, 4])
                sphere(r=15); 

                translate([-50, -50, 50]) 
                cube([100, 100, 100]);

                translate([-50, -50, 15 - 100])
                cube([100, 100, 100]);
            }
        }
    }
}

module trou(){
    difference(){
            fuselage();
            
            union() {
                translate([0, 0, 40])
                vis_simple(diametre=10, longueur=11, pas=4);
            
                translate([0, 0, 0])
                cylinder(h=40.1, d=8);  
                }
        }
}

module hublot() {
    translate([7.3, 0, 35]) 
    rotate([0, 83, 0]) { 
        
        //Le cadre gris
        color("Gray")
        rotate_extrude() 
        translate([4, 0, 0]) 
        circle(r=1.5);
        
        //La vitre bleue
        color("DodgerBlue")
        scale([1, 1, 0.5]) 
        sphere(r=4);
    }
}

module ailerons() {
    color("Red")
    //On répète 3 fois autour de l'axe
    for(i = [60 : 120 : 360]) {
        rotate([0, 0, i])
        translate([8, 0, 10])
        rotate([90, 0, 0])    // On met à plat verticalement
        
        linear_extrude(height=3, center=true)
        
        //Pour la forme
        polygon(points=[
            [0, -6],
            [2, 5], 
            [10, 0],   
            [14, -18],   
            [10, -18]
        ]);
    }
}


module moteur() {
    translate([0,0,-10.3])
    scale([0.86,0.86,0.86])
    union(){
    //Bague métalique
    color("Silver")
    translate([0, 0, 12])
    difference() {
        // Forme extérieure arrondie
        rotate_extrude()
        translate([6, 0, 0]) // Rayon de l'anneau
        circle(r=2.5);
        
        translate([0, 0, 2.6]) 
        cube([20, 20, 5], center=true);
    }

    //Tuyère 
    color("#333333") // Gris très foncé
    translate([0, 0, 5])
    difference() {
        cylinder(h=7.1, r1=8, r2=5);
        
        translate([0, 0, -1])
        cylinder(h=5, r1=6, r2=4);
    }
    
    //anneau bas de la tuyère
    color("#222222")
    rotate_extrude()
    translate([8, 5, 0])
    circle(r=1);
    }
}

translate([0,0,8])
union(){
    trou();
    hublot();
    ailerons();
    moteur();
}

  • Réglages d'impression
    • Hauteur de couche : 0,2 mm (SPEED)
    • Remplissage : 20 %
    • Température de la buse : 215 °C (première couche) | 210°C (autres canapés)
    • Température du plateau : 65 °C (première et autres canapés)
    • Vitesse d'impression : paramètres par défaut de PrusaSlicer
    • Supports : Support sur plateau uniquement
    • Adhérence au plateau : par défaut 

Capture d'écran 2026-01-30 à 15.46.40.png

  • Étapes de réalisation
    1. Recherche et récupération du fichier STL 
      • Vérifier l'échelle du modèle (Ici l'échelle est de 120%)
      • Vérifier l'orientation et la position sur le plateau
    2. Importation du fichier STL dans PrusaSlicer
      • Normes de vérification des réglages
      • Ajustement si nécessaire
    3. Génération du G-code
    4. Lancement de l'impression 3D
    5. Observation de la formation des couches et suivi du retour.
      • Surveiller la première couche 
  • Observations et anecdotes
Après l'impression, le diamètre du nez ou l'épaisseur de feuilletage de la vis du nez est sans doute trop grande car elle grippe lorsque j'ai essayé de visser le nez.
  • Résultat

Voici le résultat de cette impression :

Capture d'écran 2026-02-07 à 21.26.41.png        Capture d'écran 2026-02-07 à 21.32.19.png

____________________________________________________________________________________________________________

MODÉLISATION SIMPLE (Support pour Fusée Fantaisie)

Objectifs

Pour mettre en valeur ma fusée précédemment imprimée, j'ai décidé de faire un support qui me permettra d'exposer la fusée !

Capture d'écran 2026-02-07 à 20.20.14.png .Capture d'écran 2026-02-07 à 20.20.37.png  Capture d'écran 2026-02-07 à 20.19.05.png

Matériel

  • Imprimante 3D :  Originale Prusa MK4S
  • Filament : PLA 

Machines utilisées

  • Logiciel de montage :  OpenSCAD
  • Logiciel de découpe  : PrusaSlicer

Construction

  • Le Code

Tout d'abord mon code :

J'ai d'abord créer les formes que je voulais séparément et puis je les ai assemblées. J'ai donc joué sur la position de chaque morceaux, d'où la forme de mon code.

// Changement de la résolution du modèle
$fa = 1;
$fs = 0.4;
$fn = 200;

//Support fusee
//Paramètre du Socle
longueur = 80;
largeur = 50;
hauteur_totale = 8;
rayon_arrondi = 12;

//Arrondi du Socle
module socle_arrondi(l, w, h, r) {
    hull() {
        translate([-(l/2)+r, -(w/2)+r, 0]) 
        cylinder(h=h, r=r);
        
        translate([(l/2)-r, -(w/2)+r, 0])  
        cylinder(h=h, r=r);
        
        translate([-(l/2)+r, (w/2)-r, 0])  
        cylinder(h=h, r=r);
        
        translate([(l/2)-r, (w/2)-r, 0])   
        cylinder(h=h, r=r);
    }
}

//Création du Socle
module Socle(){
    difference() {
        union() {
            //Niveau 1 : La base
            socle_arrondi(longueur, largeur, hauteur_totale * 0.6,      rayon_arrondi);
        
            //Niveau 2 : Le plateau supérieur 
            translate([0, 0, hauteur_totale * 0.6])
            socle_arrondi(longueur - 10, largeur - 10, hauteur_totale * 0.4, rayon_arrondi - 5);
        }
    }
}

//Bras de support
module Bras(){
    rayon_arc = 20;      // Courbure
    angle_max = 140;     // Jusqu'ou monte le bras
    
    translate([30,0,27.6])
    rotate([90,0,0])
    cylinder(h = 6, d = 6, center = true);
    
    translate([15, 0, -8])
    union() {
        for (a = [0 : 1 : angle_max]) {
            x = rayon_arc * sin(a);
            z = rayon_arc - (rayon_arc * cos(a));
        
            translate([x, 0, z])
            rotate([0, a, 0])
        
            rotate([90, 0, 0])
            cylinder(h = 6, d = 6, center = true);
        }
    }

    //Socle du Bras
    translate([20, 0, -8])
    cube([30, 20, 2], center = true);
}

module fuselage() {
    color("White")
    union() {
        hull() {
            //Diamètre 1 (base au sol)
            translate([0, 0, 0])
            cylinder(h=0.1, d=15); 
            
            //Diamètre 2 (intersection)
            translate([0, 0, 15])
            cylinder(h=0.1, d=20);
            
            //Création du haut du fuselatge qui est arrondi
            difference() {
                scale([0.69, 0.69, 4])
                sphere(r=15); 

                translate([-50, -50, 50]) 
                cube([100, 100, 100]);

                translate([-50, -50, 15 - 100])
                cube([100, 100, 100]);
            }
        }
    }
}

module ailerons() {
    color("Red")
    //On répète 3 fois autour de l'axe
    for(i = [60 : 120 : 360]) {
        rotate([0, 0, i])
        translate([8, 0, 10])
        rotate([90, 0, 0])    // On met à plat verticalement
        
        linear_extrude(height=3, center=true)
        
        //Pour la forme
        polygon(points=[
            [0, -6],
            [2, 5], 
            [10, 0],   
            [14, -18],   
            [10, -18]
        ]);
    }
}

//Pince à fusée
module Pince(){   
    translate([-4,0,56.15])
    rotate([0,80,0])
    difference() {
    
        //Le corps de la pince
        cylinder(h = 15, d = 23, center = true);

        //Le trou pour la fusee
        translate([-95,-50,-20])
        cube([100,100,100]);
        
        translate([0,0,-15])
        fuselage();
        
        translate([0,0,-15])
        ailerons();
    }
}


union(){
color("Grey")
Socle();

color("Grey")
translate([-30,0,16])
Bras();

color("Grey")
Pince();
}
  • Réglages d'impression
    • Hauteur de couche : 0,2 mm (SPEED)
    • Remplissage : 20 %
    • Température de la buse : 215 °C (première couche) | 210°C (autres canapés)
    • Température du plateau : 65 °C (première et autres canapés)
    • Vitesse d'impression : paramètres par défaut de PrusaSlicer
    • Supports : Support sur plateau uniquement
    • Adhérence au plateau : par défaut 

Capture d’écran 2026-02-18 à 19.50.49.png.  Capture d’écran 2026-02-18 à 19.52.14.png

Pour bien imprimer la pièce, j'ai ajouté des supports partout car il y a un point de faiblesse qui ne m'aurait pas permis d'imprimer correctement.

  • Étapes de réalisation
    1. Recherche et récupération du fichier STL 
      • Vérifier l'échelle du modèle (Ici l'échelle est de 120%)
      • Vérifier l'orientation et la position sur le plateau
    2. Importation du fichier STL dans PrusaSlicer
      • Normes de vérification des réglages
      • Ajustement si nécessaire
    3. Génération du G-code
    4. Lancement de l'impression 3D
    5. Observation de la formation des couches et suivi du retour.
      • Surveiller la première couche 
  • Résultat

Voici le résultat de cette impression :

image.png.       image.png

Le résultat final :

image.png.          image.png

____________________________________________________________________________________________________________

PROJET Arduino

Réalisé avec Mariia KARPENKO visible via ce lien : Projet Arduino