Skip to main content

Nathan, Joseph Verre éclabousseur

Coordonnées: 

Présentation du projet et objectifs :

Dans le cadre de notre ARE SCIMAG, nous avons pour objectif de créer entièrement au fablab un "verre éclabousseur" nous permettant de réaliser un tour de magie basé et explicable par des principes physiques et mathématiques. 

Le tour « verre éclabousseur » commence par la présentation d'un verre d’apparence  ordinaire au public. Le magicien verse de l'eau dans ce verre. Jusque-là, rien de surprenant ne semble se produire. Toutefois, le moment d’émerveillement arrive lorsque le magicien incline légèrement le verre : un jet d’eau jaillit de manière soudaine, projetant un filet d’eau qui provoque l’étonnement et souvent les rires du public. Cependant, derrière cette simplicité apparente se cache une conception physique astucieuse. Le verre est en réalité composé de doubles parois. Entre ces deux parois se trouve une cavité contenant de l'air. Lorsque l’eau est versée dans le verre, elle bloque l’ouverture par laquelle l’air pourrait s’échapper. En inclinant le verre, l’air comprimé dans cette cavité est soumis à une variation de pression. Lorsque la pression exercée par l’eau atteint un seuil critique, l’air trouve un chemin pour s’échapper brusquement, ce qui crée le jet d’eau visible. 

Matériel :
  • Openscad
  • Prusa Slicer
  • Original Prusa MK4S (imprimante 3d)
  • Hyper Speed PLA 1.75 mm ( white)
Etapes pratiques de la réalisation.

Une fois le tour choisi, nous avons commencé la modélisation de l'objet sur OpenSCAD, un logiciel de conception 3D. L'idée principale était de créer un verre avec une double paroi pour piéger de l'air. Lorsque l'on verse de l'eau à l'intérieur et qu'on incline le verre, l'air sous pression devait s'échapper brusquement en formant un jet.

A le demande de notre professeur, notre premier objectif au Fablab était de vérifier si le matériel utilisé pour les impressions 3D était bien étanche, et donc, si les parois imprimées pouvaient ne fuyaient pas au contact de l’eau. Pour ce faire, nous avons décidé d'opter pour la conception d'un petit gobelet "test" pour vérifier cette étanchéité. Le 19 février, nous nous sommes rendus au FabLab pour effectuer notre première impression 3D, celle du gobelet. C’était le cas, l’eau restait bien à l’intérieur donc on à garder l'épaisseur satisfaisante des parois à 2mm. 

Voici une photo du gobelet, ainsi que du script qui nous a permis de l'imprimer : 

module obj() { // Object: Cup
    radius = 30; // Rayon de la base (en mm)
    thickness = 2; // Épaisseur des parois (en mm)
    union() {
        // Partie extérieure
        linear_extrude(height = radius * 2)
            difference() {
                offset(thickness)
                    circle(radius); // Cercle extérieur
                circle(radius); // Cercle intérieur
            }
        // Base de la tasse
        cylinder(h = 1, r = radius + 1); // Ajout d'une base
    }
}

// Appeler le module
obj();

Nos premières tentatives sur OpenSCAD  pour réaliser le verre éclabousseur ont rapidement révélé des difficultés techniques. Notre objectif initial était de concevoir un unique modèle de verre avec deux parois séparées par un espace de 5 mm, mais nous nous sommes heurtés à une limite physique de l'imprimante 3D. En effet, l'imprimante ne pouvait pas imprimer dans le vide comme le suggérait un moment notre programme OpenSCAD, ce qui rendait l'impression d'un seul bloc impossible, il fallait trouver une autre façon de faire.

Entre le 19 et le 21 mars, pour contourner ce problème, nous avons décidé de diviser l'objet en deux parties distinctes : un gobelet inférieur et une partie supérieure servant de couvercle. Cette solution nous permettait de réaliser l'impression en deux étapes, puis d'assembler les pièces par collage.

Voici les scripts des deux éléments distincts qui constituent notre verre ainsi que leurs aspects sur Openscad : 

Pièce 1 du gobelet : 

module cup() {
    diameter = 80; // Diamètre extérieur du gobelet (8 cm)
    thickness = 2; // Épaisseur des parois (2 mm)
    height = 150; // Hauteur du gobelet (15 cm)

    // Partie extérieure du gobelet
    difference() {
        // Corps extérieur
        cylinder(h = height, d = diameter);

        // Creuser l'intérieur, en laissant une base
        translate([0, 0, thickness]) {
            cylinder(h = height - thickness, d = diameter - 2 * thickness);
        }
    }
}

// Appeler le module
cup();

Pièce 2 du gobelet :

// Paramètres du cylindre creux
hauteur_creux = 140;  // 14 cm
rayon_externe_creux = 31;
epaisseur_creux = 2;  // Épaisseur des parois du cylindre

// Paramètres du disque perforé
hauteur_disque = 2;
rayon_externe_disque = 40;
rayon_interne_disque = 29;

// Cylindre creux
module cylindre_creux() {
    difference() {
        cylinder(h = hauteur_creux, r = rayon_externe_creux, center = false);
        translate([0, 0, -1])  // Assure que le trou traverse bien
        cylinder(h = hauteur_creux + 2, r = rayon_externe_creux - epaisseur_creux, center = false);
    }
}
// Disque perforé
module disque_perfore() {
    difference() {
        cylinder(h = hauteur_disque, r = rayon_externe_disque, center = false);
        cylinder(h = hauteur_disque + 1, r = rayon_interne_disque, center = false);
    }
}
// Assemblage : cylindre creux + disque, surélevé de 200mm
translate([0, 0, 10]) {
    cylindre_creux();
    translate([0, 0, hauteur_creux]) disque_perfore();
}

Cependant, lors des tests, nous avons observé que l'effet escompté ne se produisait toujours pas. Quelques bulles ainsi qu'un léger jet d'eau se formaient mais pas le jet attendu. Nous avons émis plusieurs hypothèses pour expliquer cet échec :

  • Un problème de pression insuffisante : L'air piégé entre les parois ne subit pas assez de pression pour provoquer un jet d'eau significatif lors de l'inclinaison.

  • Un angle critique incorrect : Si l'inclinaison du verre n'est pas suffisante ou trop progressive, l'air s'échappe doucement au lieu de créer un jet brutal.

  • Un verre de taille trop élevée : Il semblerait que la taille trop grande du verre aurait pu atténuer ou diminuer la pression de l'air, empêchant la formation d'un jet d'eau spectaculaire.

Nous avons donc envisagé plusieurs pistes d'amélioration pour la prochaine version du prototype :

  1. Renforcer la qualité du verre en utilisant un matériau de meilleure qualité ou en appliquant une résine pour sceller les parois, car lors de ce premier test d’objet nous l’avons imprimé en utilisant les moins bonnes qualités d’impression, pour gagner du temps.

  2. Augmenter l'épaisseur des parois internes pour mieux contrôler la pression d'air.

  3. Ajuster la taille des perforations sur le couvercle pour favoriser un écoulement plus contrôlé de l'air.

Finalement, durant la séance du 26 Mars, nous avons pris des mesures afin d'obtenir un résultat plus satisfaisant que le précédent. En effet, les hypothèses concernant l'échec du premier verre étaient vérifiées. La cause principale de l'échec du premier verre était que la pression exercée sur le verre était insuffisante. Pour y remédier, nous avons donc décidé de modifier le "cylindre intérieur" qui constitue la deuxième partie du verre. 

  • Nous avons rajouté un rebords au deuxième cylindre afin de limiter sa surface de contact entre l'eau et l'air et ainsi augmenter la pression exercée sur l'air
  • Sur toute la surface de ce rebords, nous avons programmé une unique ouverture (sous la forme d'un trou de 3mm de diamètre) afin de concentrer la sortie de l'air en un seul et unique point afin de concentrer la sortie de l'air en un seul et unique point afin d'accentuer la puissance du jet. 

Voici le script qui nous a permis de réaliser cette partie du verre ainsi qu'une photo de ce nouveau cylindre :

// Paramètres du cylindre creux
hauteur_creux = 145;  // Augmenté de 0.5 cm (5 mm)
rayon_externe_creux = 31;
epaisseur_creux = 2;  // Épaisseur des parois du cylindre

// Paramètres du disque perforé
hauteur_disque = 2;
rayon_externe_disque = 40;
rayon_interne_disque = 29;

// Paramètre du petit trou
diametre_trou = 3;
position_trou = [35, 0];  // Position fixe du trou sur la partie plastique

// Cylindre creux
module cylindre_creux() {
    difference() {
        cylinder(h = hauteur_creux, r = rayon_externe_creux, center = false);
        translate([0, 0, -1])  // Assure que le trou traverse bien
        cylinder(h = hauteur_creux + 2, r = rayon_externe_creux - epaisseur_creux, center = false);
    }
}

// Disque perforé
module disque_perfore(petit_trou = false, rayon_externe = rayon_externe_disque) {
    difference() {
        cylinder(h = hauteur_disque, r = rayon_externe, center = false);
        cylinder(h = hauteur_disque + 1, r = rayon_interne_disque, center = false);

        // Ajout du petit trou si demandé
        if (petit_trou) {
            translate([position_trou[0], position_trou[1], 0])
                cylinder(h = hauteur_disque + 1, r = diametre_trou / 2, center = false);
        }
    }
}

// Assemblage : cylindre creux + disque aux deux extrémités
translate([0, 0, 10]) {
    cylindre_creux();
    // Disque supérieur
    translate([0, 0, hauteur_creux]) disque_perfore();
    // Disque inférieur avec un rayon extérieur réduit de 2 mm et un petit trou
    translate([0, 0, -hauteur_disque]) disque_perfore(petit_trou = true, rayon_externe = rayon_externe_disque - 2);
}

Nous avons aussi rajouté une poignée/un manche en forme de coquillette au gobelet pour l'aspect décoratif et sublimer un peu cet objet :

$fn = 100;

// PARAMÈTRES DU MANCHE COQUILLETTE
tube_r = 10;              // épaisseur globale
tube_thickness = 4;       // creux intérieur
coil_r = 35;              // rayon de la courbure
coil_angle = 180;         // angle de l’arc
hauteur_totale = 150;     // hauteur du manche (doit coller à ton gobelet)

// MODULE COQUILLETTE VERTICALE (orientée verticalement)
module manche_coquillette_verticale() {
    // Coque extérieure
    difference() {
        rotate_extrude(angle = coil_angle)
            translate([coil_r, 0, 0])
                scale([1, hauteur_totale / (2 * PI * coil_r)])  // étire verticalement
                    circle(r = tube_r);
       
        // Creux intérieur
        rotate_extrude(angle = coil_angle)
            translate([coil_r, 0, 0])
                scale([1, hauteur_totale / (2 * PI * coil_r)])
                    circle(r = tube_r - tube_thickness);
    }
}

// APPEL
rotate([0, 0, 90])  // Pour que le manche soit orienté verticalement
    manche_coquillette_verticale();

Ce deuxième verre que nous avons réalisé était sensé marché, cependant, nous avions un problème de proportions, le cylindre n'entrait pas dans le verre de base. Pour y remédier, nous avons diminué la taille du rebords et relancé une dernière impression  le mercredi 2 Avril.