Mot-clé - impression3d

Fil des billets

samedi 12 novembre 2016

OpenSCAD pour faire de la 3D comme un programmeur, exemple de conception d'une boîte

OpenSCAD m'a réconcilié avec la conception 3D : plus la peine d'apprendre à utiliser Blender pour quelques pièces mécaniques, OpenSCAD permet de générer des pièces en 3D avec du code :-)

Avec le petit exemple ci-dessous, vous aurez vite compris l'intérêt d'OpenSCAD pour certaines petites pièces à construire, et si comme moi vous n'avez pas jusqu'ici eu le courage de vous lancer dans Blender ou FreeCAD. Contrairement à Blender par exemple, chaque forme est définie dans un langage propre à OpenSCAD et la forme apparaît à la compilation. Ce n'est donc clairement pas adapté pour des représentations artistiques mais pour la fabrication de pièces mécaniques dont les cotes sont bien connues, cela permet très vite d'arriver au résultat escompté !

Installation d'OpenSCAD

Sous Debian, OpenSCAD s'installe très simplement car il est disponible dans les paquets de la distribution :

apt install openscad

Exemple de conception d'une boîte

Imaginons que l'on souhaite fabriquer une boîte avec une grille pour y ranger par exemple de petits montages électriques.

Commençons par la face principale : dessinons un rectangle de 82 mm par 40 mm :

square([82,40],center);

form1.png

Pour fabriquer les fentes, nous allons soustraire un rectangle de 32 mm par 1 mm :

difference() {
  square([82,40],center);
   square([1,32]);
}

form1b.png

Cela a fonctionné, mais il faudrait mieux placer notre fente : nous allons le faire à l'aide d'une translation :

difference() {''''
  square([82,40],center);
    translate([3,4,0]) {
      square([1,32]);
    }
}

form1c.png

Nous pourrions maintenant répéter ces lignes de code autant de fois que nécessaire pour obtenir notre grille. Mais il y a mieux ; il est possible de paramétrer la création de chaque fente à l'aide d'une boucle :

difference() {
  square([82,40],center);
  for ( i = [1 : 26] ){
    translate([i*3,4,0]) {
      square([1,32]);
    }
  }
}

form2.png

Nous allons maintenant donner un peu d'épaisseur à cette première forme en l'extrudant : on ajoute cette instruction *avant* la forme 2D créée à l'instant :

 linear_extrude(height = 3, center = false)

form3.png

Ajoutons maintenant une première paroi latérale :

cube([82,1,15]);

form4.png

Puis une seconde paroi qui est identique à la première avec une translation :

translate([0,40,0]) {
    cube([82,1,15]);
}

form5.png

Rajoutons les dernières parois nécessaires :

cube([1,40,15]);
translate([81,0,0]) {
 cube([1,40,15]);
}

form6.png

Pour finir la boîte, nous voulons ajouter 2 petites surfaces qui en permettront la fixation. Comme la boîte sera imprimée en 3D, il est nécessaire que ces surfaces apparaissent progressivement. Nous allons donc les modéliser avec un prisme :

module prism(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]] );
}

translate([6,30,15]) {
    rotate([0,180,90]) {
        prism(20,5,15);
    }
}

translate([76,10,15]) {
    rotate([0,180,270]) {
        prism(20,5,15);
    }
}

form7.png

Et voilà le tour est joué !

Pour aller plus loin

Dans l'exemple précédent, la longueur de la boîte (82 mm) a été écrite en dur et tous les autres objets ont été placés d'après cette dimension. Il eut bien sûr été possible de définir une variable (par exemple "length") en début de fichier et adapter le code !

Cela donne alors :

length=82;
linear_extrude(height = 3, center = false)
difference() {
  square([length,40],center);
  for ( i = [1 : (length / 3)] ){
    translate([i*3,4,0]) {
      square([1,32]);
    }
  }
}
cube([length,1,15]);
translate([0,40,0]) {
    cube([length,1,15]);
}

cube([1,40,15]);
translate([length-1,0,0]) {
 cube([1,40,15]);
}

module prism(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]] );
}

translate([6,30,15]) {
    rotate([0,180,90]) {
        prism(20,5,15);
    }
}

translate([length-6,10,15]) {
    rotate([0,180,270]) {
        prism(20,5,15);
    }
}

Il n'y a alors plus qu'une seule variable à modifier pour fabriquer une boîte beaucoup plus longue !

form8.png

dimanche 6 septembre 2015

Poplab - Imprimer un bouchon pousseur (Push Cap) pour Kenwood Chef ou Major de remplacement

Le bouchon pousseur du robot ménager Kenwood familial ayant failli, il fallut le remplacer. Qu'à cela ne tienne, mon beau-frère démarra son logiciel de modélisation et fort rapidement cet objet émergea de l'imprimante 3D :

kenwood_pushSwitch_large.jpg

kenwood_pushSwitch_packshot.jpg

kenwood_pushSwitch_packshot2.jpg

kenwood_pushSwitch_slicer.jpg

Les fichiers de modèle 3D sont disponibles :

Ces 2 fichiers sont distribués sous licence Creative Commons - Attribution - Share Alike (Push Cap for Kenwood (Chef or Major) food processor by poplab is licensed under the Creative Commons - Attribution - Share Alike license).

Efficace et fonctionnel !

lundi 31 août 2015

Boîtier pour Raspberry & Hifiberry Amp+

Nous évoquions dernièrement dans ces pages le circuit Hifiberry Amp+ susceptible de transformer un Raspberry Pi en petite chaîne hifi connectée : ici et ici.

Afin de ranger l'Hifiberry Amp+, nous avons conçu et imprimé en 3D une boîte adaptée au Rapsberry Pi couplé à l'Hifiberry. La conception est inspirée de "Raspberry Pi 2 (or B+) case with 75mm/100mm VESA mount" de 0110-M-P (Creative Commons - Attribution - Share Alike license). L'impression a été effectuée avec l'imprimante Arduino Materia 101.

20150831-Hifiberry-box-1.jpg

La boîte se compose de 3 parties :

  • la partie basse accueille le Raspberry Pi, elle est identique à celle du modèle de référence
  • la partie intermédiaire sert à augmenter la hauteur du boîtier d'origine pour accepter la carte d'extension
  • la partie supérieure comporte une ouverture pour accéder aux borniers de l'Hifiberry Amp+

Les fichiers de conception peuvent être téléchargés ici ou bien ci-dessous :

Quelques photos complémentaires :

20150831-Hifiberry-box-2.jpg

20150831-Hifiberry-box-3.jpg

20150831-Hifiberry-box-4.jpg

lundi 27 juillet 2015

Imprimer un espaceur pour le Raspberry et l'Hifiberry Amp+ avec Arduino Materia 101

Nous évoquions dans ces pages il y a quelques jours l'adjonction de l'Hifiberry Amp+ au Raspberry pour obtenir une station Hifi connectée. Le résultat global était très satisfaisant si ce n'est une résistance mécanique de l'ensemble un peu limitée : la plaque Hifiberry Amp+ n'est en effet fixée sur le Raspberry que par le bus couvrant les pins GPIO.

Qu'à cela ne tienne, imprimons en 3D des petits espaceurs en plastique qui maintiendront un écartement standard entre les 2 circuits imprimés. Le résultat ressemblera à cela :

20150727-espaceur.jpg

Etape 1 : modélisons l'espaceur sous Blender

Une rapide observation de la situation conduit à choisir un parallélépipède rectangle :

  • de base carrée 4 mm x 4 mm
  • de 10 mm de hauteur
  • avec sur chaque petite face (les carrés de 4*4) un cylindre de 2.5 mm de diamètre et 2.5 mm de haut

Après un peu de travail sous Blender, le résultat sort et semble très satisfaisant :

20150727-espaceur-blender.jpg

Etape 2 : préparons l'impression 3D avec Slic3r

Préparons ensuite le processus d'impression 3D en important le fichier Blender (préalablement converti sous la forme d'un .stl) sous Slic3r. Slic3r est un logiciel libre de grande qualité qui va décomposer la forme 3D en une suite de couches (des "slices" en anglais) et chaque couche va être décomposée en un "chemin" d'impression i.e. une suite des mouvements que fera la tête d'impression 3D.

On profite de cette étape pour vérifier l'échelle de l'objet (il doit mesurer 15 mm de long dans sa plus grande longueur, et 4 mm * 4 mm sur les deux autres faces => on utilisera la fonction "Scale" de Slic3r si la taille n'est pas correcte) et multiplier l'objet sur la plaque d'impression (fonction "More" de Slic3r).

20150727-espaceur-slic3r.jpg

Le processus de découpage se lance automatiquement et il est ensuite possible de vérifier le chemin de la tête d'impression couche après couche :

20150727-espaceur-sliced.jpg

Si l'on est satisfait, on exporte le fichier de commande pour l'imprimante 3D sous la forme d'un Gcode.

Etape 3 : impression avec Materia 101

Au moyen d'une carte SD, on introduit le Gcode dans l'imprimante Materia 101 et, après les préparatifs d'usage (préchauffage, introduction d'un filament de PLA, réalisation d'une "Test Plate" pour vérifier l'alignement en Z), on lance l'impression. 5 minutes plus tard, les 4 petits espaceurs sont prêts. Un petit coup de lime sur les cylindres permet de gommer les quelques aspérités créées lors de l'impression. Il ne reste plus que le montage du Raspberry et de l'Hifiberry Amp+ avec ces nouveaux espaceurs.

Les fichiers 3D pour les espaceurs

Les 3 fichiers ci-dessous sont bien sûr mis à disposition sous Creative Commons Attribution 4.0 International License.

dimanche 5 avril 2015

Materia 101 - quel PLA choisir ?

Quand on imprime en 3D, notamment avec une imprimante open source libre, nous avons le choix des armes quant au matériau d'impression. Mais il faut alors choisir le bon matériau : pas trop cher mais de suffisamment bonne qualité pour arriver à ses fins. Il existe de nombreux revendeurs de fil PLA et on se doute bien que tous n'ont pas exactement les mêmes caractéristiques.

Nous partageons ci-dessous nos impressions (eh eh, normal pour une imprimante) sur 3 fils PLA différents ; je ne puis garantir qu'ils auront tous (selon les imprimantes, les lots même de PLA dont ils sont issus, les conditions d'utilisation température...) les mêmes propriétés chez vous - mais à toute fin utile, voici notre retour d'expérience.

Fil le moins cher trouvé => pas idéal en qualité. Le fil vendu sur Amazon sous la référence "Nunus ABS 1.75mm" a l'avantage d'être peu cher mais il ne se comporte pas très bien lors de l'impression avec la Materia 101 : finition un peu bâclée, torsion des premières couches lors de l'impression des suivantes... Nous avons eu de bien meilleur résultat avec d'autres fils. Une optimisation des paramètres permet peut-être d'améliorer la donne mais cela reste à être démontré !

La référence chez Arduino : coûteuse mais très fidèle. Sobre intitulé "PlastInk - Black PLA Filament (1.75mm) 1kg", disponible ici : http://store.arduino.cc/product/3DF0057 Le fil vendu directement par Arduino a l'inconvénient d'être assez cher mais il a donné de très bons résultats à l'impression.

Une autre bonne référence, à prix intermédiaire. Le fil "PrimaPLA™ Filament pour imprimantes 3D - PLA - 1.75mm - 1 kg bobine - Noir", vendu par exemple par Amazon, a également donné de très bons résultats à l'impression. Un peu moins cher que le modèle Arduino, c'est désormais celui vers lequel nous avons envie de nous tourner !

De belles rondeurs avec la Materia 101 d'Arduino

L'imprimante 3D Materia 101 d'Arduino est une très belle petite machine dont je ne peux que conseiller l'acquisition à tout amateur de nouvelles technologies. Assez peu chère, de qualité, et tout à fait libre, elle ravira ses utilisateurs. Fidèle à l'esprit Arduino, il s'agira plus d'une machine à usage éducatif (le montage étant déjà très instructif car permettant de comprendre en détail le fonctionnement des machines d'impression 3D) qu'un outil de production à grande échelle.

Après son montage, et au cours des premières impressions, nous avons toutefois constaté que les cercles n'étaient pas parfaitement ronds. Après avoir envisagé de nombreux paramètres (notamment réduire la vitesse d'impression pour éviter les vibrations trop importantes de la machine), nous avons réalisé qu'il fallait mettre en tension le plus possible les courroies de déplacement sur l'axe Y (les cercles étaient légèrement elliptiques sur cet axe).

Pour déplacer la tête d'écriture sur l'axe Y, 3 courroies sont impliquées. La première transfère le mouvement du moteur Y à l'axe général qui entraîne ensuite 2 autres courroies auxquelles est fixé le chariot de la tête de lecture.

Première étape : positionner le moteur Y pour mettre la courroie qui y est attachée très en tension : Ymotor.jpg

Deuxième étape : serrer les vis qui mettent en tension les courroies comme indiqué ci-dessous : screw_circleadjust.jpg

Dans notre cas, ce réglage effectué, les ronds étaient bien ronds - ce qui a permis à nos pièces de parfaitement s'emboîter les unes aux autres !

Bonne impression 3D !