Vendredi, décembre 20 2013

Impressions multi-matériaux avec un seul extrudeur

Imprimer directement en plusieurs couleurs peut vraiment être intéressant, par exemple, pour intégrer des pictogrammes informatifs sur la face d'un objet ou simplement dans un but purement décoratif.

Ultimaker propose un kit permettant d'imprimer en 2 couleurs (ou 2 filaments de matériaux différents) mais les retours sur les forums ne m'ont pas convaincus de l'acheter, je pense au final que le ratio coût / intérêt n'est pas vraiment bon lorsque l'on s'en sert uniquement pour du multi couleurs, l'intérêt est bien plus grand pour de l'impression multi-matériaux (support en PVA par exemple).

Je vais vous expliquer 2 méthodes qui vous permettront de passer à l'impression multi couleur avec un seul extrudeur.

Notez que cet article tourne autour de l'Ultimaker et de son slicer Cura mais il est tout à fait possible d'adapter cette solution à toute RepRap.

Avec le plugin Cura : PauseAtZ

En utilisant le plugin fourni avec Cura PauseAtZ qui permet, comme son nom l'indique, de stopper l'impression à une certaine hauteur, de parker la tête afin de changer le filament et ensuite de relancer l'impression avec le nouveau filament.

Le principal problème de cette technique est qu'il ne permet pas à une couche d'avoir plusieurs couleurs, rien de vraiment nouveau avec cette méthode...

Feinter le slicer : PauseAtExtruderChange

Dans cette méthode, on va utiliser Cura exactement comme si nous avions le kit de double extrusion, et allons dire à Cura de slicer comme tel. C'est par la suite que nous allons lire le GCode et remplacer l'instruction de changement de tête (Tx) par des instructions permettant de parker la tête le temps d'effectuer le changement de filament.

Voici les étapes exactes :

  1. Parker le Z
  2. Déplacer la tête en X, Y à la position de parkage
  3. Stopper le ventilateur
  4. Attendre une action de l'utilisateur (nécessite un ulticontrolleur TODO)
  5. Restaurer la position X, Y
  6. Redémarrer le ventilateur
  7. Restaurer le Z

Nous pourrions également utiliser le G-Code M600 mais il s'agit d'une instruction en test qui n'est pas inclut par défaut dans tous les firmware et l'utilisation de nos propres instructions nous permet de faire exactement ce que l'on souhaite...

En pratique

1. Installez le plugin Cura PauseAtExtruderChange, (déposez simplement le fichier PauseAtExtruderChange.py dans le dossier ~/.cura/VERSION/plugins)

2. Créons un nouveau profil d'imprimante : File > Machine setting > Add new machine, dans le panel Extruder 2, on s'assure que Offset X et Offset Y soit égal à 0 comme dans l'image ci-dessous :
Cura - Machine settings

3. Importez vos fichiers stl, précisez à Cura que vous souhaitez les fusionner pour faire de la double extrusion (sélectionnez le premier objet d'un clique gauche, puis, bouton droit sur le second objet et cliquez sur Dual extrusion merge)

4. Ajoutez le plugin, modifiez les paramètres tel que vous le souhaitez et vous voilà avec votre fichier G-Code modifié

5. Lancez l'impression et l'imprimante vous signalera chaque changement de couleur, il vous restera alors à changer le filament, valider le changement auprès de l'imprimante, l'impression reprendra alors exactement oû elle avait été arrêtée mais avec un autre filament.

Note: Vous pouvez aussi utiliser le fichier python directement en ligne de commande : python PauseAtExtruderChange.py file.gcode > out.gcode (python PauseAtExtruderChange.py -h pour avoir de l'aide)

Voilà ce qu'il est possible de faire très simplement :

Vous voilà maintenant capable d'imprimer en multi couleur d'une manière un peu plus évoluée qu'avec PauseAtZ, néanmoins, l'utilisation de PauseAtExtruderChange ne sera intéressante que pour des impressions ou le nombre de changement de couleur par couche est faible sinon, vous risquez de passer votre temps à changer de filament...

Jeudi, février 14 2013

Carte de suicide pour Reprap

Jusqu'à maintenant, j'utilisais une alimentation séparée de celle d'origine pour fournir la puissance nécessaire au lit chauffant, du coup, c'étatt pas vraiment pratique car ça faisait pas mal de bordel, je voulais une solution simple et propre.

J'ai trouvé une alimentation pas chère comparée à sa puissance qui devrait faire l'affaire : 400W, oui, un lit chauffant, ça consomme énormément...

Une grosse alimentation, c'est bien mais quand elle ne sert pas, c'est bien qu'elle ne consomme pas...et justement, les firmwares des repraps disposent d'une fonction particulièrement intéressante : le suicide (G-Code M81)

Au démarrage de l'imprimante, la carte de commande de l'Ultimaker (ou n'importe quel Reprap supportant la fonctionnalité) place une entrée / sortie à l'état haut, une fois le travail d'impression terminé, l'état de la porte repasse à 0, il est alors assez simple de venir commuter un relais pour couper définitivement l'arrivée de courant dans l'alimentation, l'empêchant alors de gaspiller du courant et l'isolant du secteur...

J'ai développé une carte de commande basée sur celle de Daid avec quelques fonctions en plus :

  • La fonction de suicide est débrayable à l'aide d'un interrupteur
  • Le pilotage de ventilateur supplémentaire (ex: pour les moteurs pas à pas)
  • Le pilotage de barrette de led avec fusible de protection
  • Un fonction d'arrêt d'urgence / extinction qui coupe le courant immédiatement
  • La génération du 12V utilisé pour le ventilateur de l'Ultimaker est ... naze, un pauvre 7812 qui passe son temps à chauffer, impossible d'imaginer alimenter les barettes de led et les ventilateurs des moteurs avec ça...
  • Des fusibles de protection pour chacun des éléments

Voici le schéma de principe :
Ultimaker suicide schéma

Et le PCB avec les explications :
Ultimaker suicide pcb

Suicide board pcb

Explications du fonctionnement

Pilotage de la tension du secteur

ATTENTION: Ce montage est relié directement au secteur, c'est donc potentiellement dangereux, prenez toutes les précautions d'usage...

La tension du secteur arrive directement sur le bornier P_IN et ressort par P_OUT en passant par le relais K1 ou K3 (j'ai prévu l'utilisation d'un relais standard ou statique, à votre convenance...).
Sur le couple START_0 / START_1 est relié un interrupteur poussoir (minimum 220V / 3A) qui permet de faire passer le courant dans l'alimentation 24V, alimentant alors la carte de commande de l'Ultimaker, cette dernière force alors un état haut sur la broche A1 qui arrive via le connecteur SV1 sur notre carte de suicide, forçant le relais à coller via T1 et laisser passer le courant du secteur dans l'alimentation par le relais, en relâchant le bouton poussoir, le relais reste collé...

Vous remarquerez que même si l'interrupteur de débrayage SUICIDE est ouvert, l'état haut est forcé par R2 sur la base de T1 lui permettant d'être passant et de faire coller le relais.

  • Il faut impérativement utiliser pour D3 une diode de type schottky
  • D1 est une diode de roue libre obligatoire si vous ne voulez pas voir le transistor T1 faire des signaux de fumée.
  • Vous pouvez utiliser un relais 5 ou 12V au choix simplement en positionnant un cavalier au bon endroit sur SELECT.
  • Un fusible est prévu pour la tension du secteur, je vous conseille d'en mettre un de 3A (pour une tension secteur de 220V, pour du 110V, prévoyez le double), c'est largement suffisant pour protéger une alimentation de 400W.
  • Pour le bouton poussoir d'allumage, prenez-en un suffisamment costaud de 3A (voir point plus haut relatif à la tension secteur) pour encaisser le courant à l'allumage et n'oubliez pas qu'il est relié à la tension du secteur donc pensez à isoler sa connectique.
  • À cause de la tension du secteur, le montage doit être isolé dans un boitier en plastique, n'hésitez pas à apposer un avertissement dessus afin de rappeler le risque

Pilotage des ventilateurs / leds et protection

Via les interrupteurs branchés SWITCH_0 et SWITCH_1, vous pouvez piloter des ventilateurs pour les moteurs pas à pas et des barettes de leds branchées respectivement sur FAN_1 / FAN_2 et LIGHT_1 / LIGHT_2, j'ai aussi mis une protection sous forme de fusible pour ces éléments, dimensionnez les fusibles en fonction de votre installation.

Pour piloter les ventilateurs et les leds, j'ai besoin d'une tension de 12V, or, comme dit plus haut, la carte de l'Ultimaker génère du 12V mais ce n'est pas vraiment une bonne solution de l'utiliser car il chauffe énormément, j'ai prévu l'utilisation d'une carte fille utilisant un régulateur à découpage permettant de générer 12V@3A directement via le 24V de l'alimentation.
Pour ne pas compliquer le montage, j'ai utilisé une carte abaisseur de tension à découpage générant le 12V depuis les 24V de l'alimentation trouvé sur DealExtreme, elle possède un excellent rendement et est plutôt de bonne qualité (hormis la diode schottky qui n'a pas faite long feu).

Pour la brancher sur le PCB, voici les codes couleurs des pattes (référez-vous à la vue du PCB plus haut) :
DC 4~40V to DC 1.5~35V Voltage Step Down Transformer

Note: vous n'êtes pas obligé d'utiliser la carte fille, j'ai prévu la place pour ajouter un 7812 uniquement si l'intensité demandée n'est pas trop forte...

Toutes les valeurs des composants sont spécifiées, ils sont tous traversant donc pas vraiment de difficulté pour réaliser cette carte... Les fichiers au format Eagle sont joint avec cet article.

L'arrêt d'urgence

Le fonctionnement de l'arrêt d'urgence est simple, l'appui sur le bouton force un état bas sur la base de T1, ce dernier arrête alors d'être passant, le relais se décolle, le courant n'arrive plus et tout s'éteint, ça y est, c'est fini, on en parle plus...Et non, malheuresement, ce n'est pas si simple à cause de l'inertie de l'alimentation dû à ses condensateurs et ses selfs surgonflés, un bref appuie sur l'arrêt d'urgence ne suffit donc pas à stopper net l'ensemble et j'ai dû modifier mon circuit d'arrêt d'urgence.

En fait, mon bouton d'arrêt d'urgence n'est pas relié à la carte ci-dessus mais à la commande d'un relais monté en série avec le courant issue de la sortie de l'alimentation de 24V et une grosse résistance de puissance de 1W, il laisse passer le courant au repos, un appui sur le bouton, va faire coller le relais qui va alors s'autoalimenter. Le courant résiduel de l'alimentation est alors dérivé dans ce relais et déchargé très rapidement dans la résistance de puissance, ainsi, un bref appui suffit à couper l'arrivée de courant immédiatement.

Selon votre alimentation, il est possible que vous n'ayez pas à ajouter ce montage supplémentaire.

Une boite

Voici une boite dans laquelle vous pourrez ranger cette carte, imprimez la de préférence en PLA car en ABS, vous aurez de gros soucis de rétractation.

Suicide case

Le source au format OpenSCAD est disponible sur GitHub : OpenSCAD_Things / Ultimaker / Suicide Case

Dans un prochain article, j'expliquerai comment j'ai intégré cette boite et tout le reste dans l'Ultimaker.

Conclusion

La carte est intégrée depuis quelques temps maintenant et aucun souci, c'est vraiment pratique, surtout avec une alimentation aussi puissante, ça à un côté plutôt rassurant...

Concernant l'intégration dans l'imprimante de tout ce joli monde, ce sera l'occasion d'un prochain article...

Mardi, janvier 22 2013

Nouveau lit chauffant en aluminium pour Ultimaker

Vue du lit chauffant en aluminium

Mes déboires avec l'impression d'une pièce en ABS m'ont conduit à revoir de nouveau le lit chauffant. Ma première modification concernant le lit chauffant fût d'en faire une version avec du verre à insert, malheureusement, ce verre n'était pas parfaitement plan mais très légèrement bombé ; impossible d'imprimer correctement dessus.

Le verre à insert coutant une fortune, j'ai cherché une solution alternative et me suis tourné tout bêtement vers du verre standard mais après 2 casses proche des 115ºC, j'ai bien aperçu les limites du verre standard, je me suis alors mis à la recherche d'un petit four d'occasion afin d'en récupérer la porte généralement en verre. Un petit tour sur leboncoin plus tard, un petit peu de route et me voilà avec un four micro-onde HS et un petit four d'appoint que j'ai eu pour une bouchée de pain, démontage, collecte des divers éléments intéressants et me voilà avec 2 vitres résistantes à des températures bien au delà de ce dont j'ai besoin...

Le hic, c'est qu'il faut les découper. Je me lance dans la découpe et là, paf ! : je finis dans les 2 cas avec mille morceaux de verre, tous les verres ne se découpent pas et ceux là en font très certainement partie...

J'ai épuisé toutes les solutions avec le verre, l'utilisation d'un lit chauffant en aluminium est alors devenue une évidence : conductivité thermique parfaite (comparé au verre, c'est le jour et la nuit) et surtout, absolument aucun risque de casse... J'ai d'abord commencé en récupérant de l'aluminium de 3mm découpé aux bonnes cotes chez Weber Métaux. Perçage, taraudage, mais malheureusement, la plaque est très très légèrement gondolée (décidemment) et est donc inexploitable. La rectification n'est pas facilement envisageable avec une telle épaisseur ; il va donc falloir voir plus épais.

N'ayant pas le matériel nécessaire pour usiner de l'aluminium, j'ai trouvé une personne qui pourrait me le faire. Quelques temps plus tard, je reçois mon nouveau lit chauffant...

Celui-ci fait environ 6mm d'épaisseur, sa surface supérieure est rectifiée, et possède bien sûr les oblongs pour le tenir sur son support. La plaque à des bords arrondis et une rainure est faite en dessous afin de glisser le capteur de température au coeur de la pièce.

Un peu de perçage / taraudage de mon côté et voilà le nouveau lit chauffant prêt à être monté, le capteur de température est mis dans sa rainure :
La sonde de température dans sa rainure sous le lit chauffant

Le lit chauffant, le panneau avant avec la led montée et le câblage positionné :
L'installation sous le lit chauffant

Comparaison des courbes de montée en température

Ci-dessous, les courbes de montée en température des différents lits chauffants que j'ai testé : le verre à insert de 4mm, le verre standard de 3mm et l'aluminum d'environ 6mm d'épaisseur.
C'est la température relevée à proximité du PCB qui est prise et non celle mesurée sur la surface du lit.

Comparatif du temps de chauffe des lit chauffant
Pour les courbes représentant la chauffe du verre, j'ai volontairement arrêté de chauffer et stoppé les mesures arrivé aux alentours de 60ºC.

Le modèle sur GitHub / Hugokernel.

Vue du lit chauffant en aluminium Vue du lit chauffant en aluminium

Conclusion

En théorie, je ne devrais plus être embêté équipé avec ce lit chauffant qui fonctionne parfaitement depuis maintenant quelques semaines...
La seule chose qui devrait être mise à jour est le positionnement de la sonde de température qui est beaucoup trop proche de la source de chaleur, la régulation en est forcément biaisée...

Mardi, juin 19 2012

L’impression 3D, c’est cool quand ça coule !

Ca y est !!!!

Elle marche !!!

 

Et oui, après pas mal de galères pour régler tout ça, l’imprimante marche. Il y a encore quelques ajustements à faire, mais rien de bien méchant. J’arrive à imprimer des couches de 0.15 mm ce qui me semble tout à fait convenable.

Depuis les derniers épisodes ( 1, 2, 3, 4 ) j’ai mis en place le support de la tête d’impression. Le support avait été modélisé à l’aide d’openscad puis les différentes parties découpées à la fraiseuse dans du PVC avant d’être assemblées par collage.

Hotend mount

Les deux roulements linéaires sont justes rentrés en force dans leurs logements. Il n’y a aucun jeu.

 

 

La suite concerne le moteur d’extrusion, c’est là que j’ai eu beaucoup de soucis. L’extrudeur est une pièce « temporaire » que je vais remplacer rapidement dès que je pourrais imprimer. De nombreux modèles existent, en particulier les modèles de type huxley ou les wades et leurs dérivés.

Dans l’immédiat je vais encore mettre à contributio openscad et la fraiseuse. J’ai à ma disposition, 2 engrenages et un moteur NEMA23.

Le modèle sera celui-ci:

 

OpenScad Model

 

Ce qui donne un truc monstrueux mais néanmoins fonctionnel

Extrudeur 1

 

Extrudeur 1

 

J’installe alors un tube en PTFE de 4mm de diamètre intérieur ( à trouver chez Weber métaux à Paris ) pour guider le filament entre l’extrudeur et la tête mobile. Tout marche à peu près, mais je galère avec l’entrainement du filament. Ca patine beaucoup, trop de pression sur le fil… bref pas terrible. Je le démonte et remonte plusieurs fois en changeant la pièce qui agrippe le filament: boulon taillé à la dremel, poulie crantée… tout y passe jusqu’au moment ou dans un nième démontage j’explose littéralement mon bel engrenage !

Quelle m… ne pouvant toujours pas imprimer, il faut trouver une autre solution. Je n’ai pas d’engrenage aussi gros… rien qui traîne :-(

Je tombe alors sur un moteur NEMA 17, sa poulie et une courroie de la bonne taille. J’assemble tout ça rapidement et reprend mes tests.

 

Extrudeur 2

Pour entraîner le filament,  j’ai opté pour un insert en laiton de 6 mm dans lequel j’ai taillé des dents à la dremel puis que j’ai collé avec de la cyano sur l’axe.

Ça marche enfin.

Les premières pièces peuvent sortir !

J’accumule les tests et les phases de calibrage en suivant ce qui est préconisé sur le site reprap et chez l’excellent richrap.

test 1

Pas terrible mais le carré est carré… un début.

 

S’ensuit de nombreux tests

encore des tests

 

Il y a même un « croco cochon » caché dans le tas de PLA !

 

De temps en temps, plus de plastique qui sort de la tête, galère… souvent au bout de 15 à 30 min d’impression… je démonte, remonte purge la tête… rien à faire jusqu’au moment ou je trouve un minuscule morceau de plastique ( probablement du PEHD ) qui s’est glissé dans la tête. Depuis que je l’ai viré, plus de soucis d’alimentation. Il faut dire que la tête de 0.35mm ne laisse que peu de marge pour laisser passer des cochonneries qui auraient pu se déposer sur le filamement…

Au bout d’un moment les bons réglages sont trouvés et des pièces fiables commencent à être produites…

Engrenage

 

puis d’autres…

 

Jeux d’engrenages

 

J’ai rencontré un problème qui n’est pas encore résolu: quand la tête « saute un vide », le PLA doit arrêter de couler pour éviter de laisser des filaments dans tous les sens. C’est pour cela que Slic3r que j’utilise prévoit un paramètre « retraction » qui permet de retirer le filament pour stopper son écoulement. Seulement quand je fais ça, c’est pire, je me retrouve avec des patés sur mes pièces.

patés

En réalité c’est du au « bowden tube » qui guide le filament, il y a 1mm de jeu qui absorbe et ralentit la rétractation du filament ce qui est contre productif et produit des patés. Pour le moment en attendant un tube de 3.19mm, j’ai désactivé le paramètre et le résultat est très correct.

 

Pour ce qui est de la vitesse d’impression, on peut surement mieux faire ( la mécanique de l’imprimante me permet de monter à 200 mm / s )

 

Slic3r

 

Mais je doit pour cela régler le problème de tube et améliorer le moteur de l’extrudeur. Le résultat est quand même à la hauteur de mes espérances, l’imprimante va pouvoir se mettre à jour dans les semaines qui viennent !

 

Voilà une vue d’ensemble de la bête :-)

La bête

Reste à ranger le câblage, mettre l’électronique dans une boite… encore du boulot…

 

La machine tourne avec le firmware Marlin 1.0 RC

Elle est pilotée par le couple Slic3r ( 0.8.4 dev ) et pronterface le tout sous Linux bien entendu. Encore une chaîne opensource, open hardware !

 

Openscad -> STL -> Slice3r -> Pronterface -> RAMPS 1.4

 

Pronterface

 

Possédant maintenant une imprimante 3D et une fraiseuse, je trouve l’impression 3D absolument fascinante. On dessine un object ou on le télécharge sur « Thingiverse« , on clique sur imprimer et au bout de quelques (longues) minutes, on manipule un objet tout neuf qui n’a pas grand chose à envier à une production industrielle !

L’impression 3D pour tous, le révolution de demain ? Surement… avec de nouveaux enjeux

Mercredi, juin 6 2012

Ultimaker : Nouveau lit chauffant, problèmes d'extrusion et impression de travers

Nouveau lit chauffant (aka Heated bed)

L'ancien lit n'était pas pratique pour le réglage de l'horizontalité du plateau et je me suis aperçu que le verre d'insert (qui résiste aux hautes températures) que j'utilisais avec n'était pas parfaitement plan mais très légèrement courbé donc, je pouvais toujours essayé de régler mon plateau bien droit, c'était perdu d'avance.

Le seul hic, c'est que le verre d'insert, ça coûte une vraie fortune (500 à 800€ le m2), le miens, j'ai eu de la chance, je ne l'ai pas payé et de toute façon, à ce prix, il faut une autre solution abordable / réplicable.

Et pourquoi ne pas essayer avec du verre standard, au prix que ça coûte, si ça casse, c'est pas bien grave.
Rendez-vous donc, au rayon découpe d'un magasin de bricolage, j'en prends 2 pour faire des tests, du 3 et du 4mm, le vendeur et ses collègues sont certains qu'à 70ºC, le verre va casser, je suis d'avis que si le verre chauffe uniformément, ça devrait aller, j'espère que le test sera concluant, je ne veux pas y retourner et devoir leur avouer que ce fût un échec... ;)
Dans le pire des cas, j'irai à la décheterie récupérer une porte de four...

Principales modifications par rapport à la v1

  • Pour les réglages du plan, j'ai utilisé des vis moletées, ce sera bien plus pratique
  • Je n'ai pas mis d'isolant (laine de verre, alu, etc...) entre le PCB et le support en bois, l'espace devrait suffir, le bois étant en dernier recours, un bon isolant
  • Le verre n'est plus maintenu par des pattes sur le dessus mais contraint par les profilés d'alu sur les 4 côtés, ça semble convenir parfaitement, c'est beaucoup plus simple ainsi

Il ne manque plus que le verre et la v2 est prête pour un test :
Heated bed v2

Après quelques tests, j'ai l'impression (aucune mesure à l'appui) que le support en bois est moins chaud qu'avec l'isolant qui devait faire office de pont thermique.

Test de montée en température

Tout est branché, c'est parti, le lit commence à chauffer, je prends des mesures pour avoir une évolution de la montée en température, je m'aperçois rapidement que la chauffe est plus longue sur du verre standard de 3mm que sur du verre à insert de 4mm, si quelqu'un à une théorie à avancer, je suis preneur, j'en ai tout de même deux : l'ancien verre de 4mm était plaqué par des pattes contre le heated bed, alors que là, il repose dessus, du coup, la conduction de la chaleur est peut être moins bonne, la seconde piste pourrait être liée à la composition du verre à insert qui doit mieux conduire la chaleur, raison pour laquelle il ne casse pas...

Courbes de montée en température

J'utilise maintenant le lit à 70ºC, pas la moindre trace d'une fissure / casse, depuis, j'ai utilisé le plateau pour faire 2/3 impressions et le verre standard résiste parfaitement bien.

Réglage de l'horizontalité du plateau

Nouveau plateau facilement réglable, verre parfaitement droit, comparateur sorti, c'est bon, il est temps d'utiliser les pièces imprimées récemment, un adaptateur universel pour la tête de l'imprimante et son adaptateur pour comparateur (Thing 20775 - Ultimaker Generic HeadMount, Thing 22817 - Printbed Calibration Tool).

Alignement au 1/100 eme de mm avec le comparateur :
Le comparateur

Attention au piège en déplaçant la tête via logiciel, avec la taille du comparateur, la fin de la course arrive bien plus tôt et la mécanique n'aime pas du tout quand ça force...

L'alignement est parfait, avant, j'aidais toujours un peu pour la première couche en plaquant très légèrement le plateau contre la tête afin que le PLA adhère correctement, maintenant, ce n'est plus la peine, et ce, quelque soit l'endroit oû je lance l'impression sur le plateau.

Du coup, j'utilise maintenant le planificateur de projet disponible dans la RC4 de l'excellent Cura afin de lancer des impressions multiples les unes à la suite des autres, tout roule parfaitement.

PLA de mauvaise facture

J'ai commandé du PLA chez RepRapWorld il y a quelques temps pour un prix très intéressant (voir le forum de MadeInFr), reçu rapidement, je me suis empressé de faire des tests avec, tout se passe bien sur les petites impressions mais dès que je veux en faire une plus longue, à un moment ou un autre, le PLA ne sort plus de la tête d'extrusion.

Je me suis alors battu avec la vis de contrainte de l'extrudeur (partie froide) : si on ne visse pas assez, forcément, le PLA n'est pas assez contraint et avance quand il veut, par contre, si on visse de trop, ça déforme le PLA, et ça finit par coincer l'avancée, j'ai essayé de trouver le juste milieu mais rien n'y fait, ça finit toujours par bloquer à un moment ou un autre, j'ai vérifié une énième fois l'ovalité du PLA, il n'est pas parfait mais le logiciel est réglé en tenant compte de ce paramètre, il doit y avoir autre chose...

Et là, en renfilant le PLA dans le tube, ça coince tellement que je n'arrive pas à le pousser à la main, je retire le PLA et l'examine, je tiens enfin le coupable, le PLA est gonflé en certain endroit, suffisamment peu pour ne pas être repéré facilement mais assez pour être la cause de tous les maux précédent...

En plus du frottement dû à la déformation du PLA, la liaison entre le tube en téflon et l'isolant (tube PEEK) n'était pas parfait, et il se formait des bouchons probablement à cause de l'irrégularité du PLA (je n'ai pas eu ce souci avec du PLA de Ultimaker), voici une photo d'un de ces bouchons :

Bouchon de PLA

En suivant le conseil de equinoxe, je suis passé chez Weber Métaux à Paris, qui possède des tubes en téflon de 4mm intérieur, 6mm extérieur, parfait, c'est exactement ce qu'il faut, d'ailleurs, c'est également là bas que j'ai trouvé les vis moletées pour le réglage du plateau.

Je n'ai pas encore eu le temps de monter ce nouveau tube, mais pour le moment, je stoppe mes tests avec le PLA de RepRapWorld, je ressort celui de Ultimaker qui coute bien plus chèr mais qui est de très bonne qualité.

Impression de travers

WTF ? la première chose qui m'est venu à l'esprit en voyant ça après une nuit d'impression :
Impression de travers

C'est bel et bien un problème mécanique dû au glissement des barres qui supportent la partie mobile.

Pour savoir si vous êtes sujet à ce problème, faites faire de larges cercles à la tête d'impression, si vous entendez un bruit (TAP!) au moment du changement de direction, c'est une des barres qui vient taper sur les butées en bois (celles qui sont en contact avec les roulements à billes).

Sur la vidéo, on voit clairement que des mouvements linéaires ne posent pas de souci, par contre, de larges mouvements circulaires (à ~10 secondes dans la vidéo) le font apparaitre immédiatement.

Pour régler ce problème, je me suis contenté de mettre de l'huile ou du WD40 sur les barres afin que ça coulisse mieux, la graisse ne pénètrant pas assez.

Vendredi, mai 25 2012

Mise à jour de l'Ultimaker

Ça fait pas mal de temps que je n'ai donné de nouvelle de mon Ultimaker, et pourtant, pas mal de chose à dire...

Réception des pièces de remplacement et peinture

Dans un précédent billet, j'expliquais que le colis de mon Ultimaker avait été mal traité durant le transport et que des pièces en bois de l'imprimante était cassées, une erreur s'est également glissée : ils m'avait fourni une pièce ne correspondant pas m'obligeant à usiner une entretoise.

J'ai contacté le support à ce sujet qui à été très réactif car ils m'ont aussitôt expédié un colis avec de toutes nouvelles pièces, réception en moins d'une semaine, merci Ultimaker pour la réactivité.

Quitte à devoir tout démonté et tout remonté, je me suis dit qu'il serait pas mal de la peindre, d'ailleurs, la légende raconte qu'une Ultimaker peinte se sent mieux et du coup, imprime mieux... ;)

J'étais parti pour tout peindre en vert et me suis dit que ce serait plus sympa d'avoir plusieurs couleurs, ce que je n'avais pas prévu, c'est que ça allait me prendre un temps fou, bref, c'est fait mais ce fût long, faute de temps.

Voici le résultat :
L'Ultimaker peinte ! IMG_0082.jpg

L'extérieur est peint en noir, l'intérieur en vert, toutes les autres pièces fixes en jaune ou orange.

Heated bed

J'ai beau imprimer uniquement du PLA, de légères déformations se forment sous les pièces dû à la rétractation du plastique refroidissant, l'idée est de mettre un lit chauffant (heated bed) permettant de garder la pièce en cours d'impression uniformément chaude.

J'ai voulu faire au plus simple pour le lit chauffant, je l'ai donc commandé, c'est un simple PCB sur lequel est gravé une piste en serpentin faisant office d'élément chauffant, on trouve également 2 diodes têtes bêches servant à indiquer si le lit chauffe ou non.

Les soudures d'origines, de la grande qualité, je fais mieux avec mes pieds :
Oh, les belles soudures

Avant un quelconque montage, j'ai fait quelques tests, ça chauffe parfaitement bien...
Ça chauffe !

Qui dit lit chauffant dit nouveau support pour l'impression, il est bien sûr hors de question de poser l'élément chauffant sur la plateforme d'origine en acrylique.

Le support sera en bois, en contreplaqué de 10mm d'épaisseur, légèrement surélevé à l'aide d'entretoise, le lit chauffant trouvera sa place, enfin, posé sur ce dernier, on trouvera une plaque de verre à insert sur lequel les impressions se feront.

Les couches successivent : Contre-plaqué, alu, isolant, mylar, lit chauffant.
La plaque de contre-plaqué Une couche d'aluminium Une couche d'isolant Une couche de Mylar Le lit chauffant

Le nouveau support étant légèrement plus épais que celui par défaut, le réglage du capteur de fin de course supérieur de l'axe Z doit être légèrement modifié, pour cela un simple profilé d'alu à fait l'affaire...
Patte d'adaptation Patte d'adaptation

La pièce une fois installée :
Patte d'adaptation

Le réglage du plan se fait à l'aide de 4 vis situées en dessous du support, l'utilisation d'une clef Allen est obligatoire, j'ai prévu de les remplacer par des vis moletées. L'impression de 4 pièces de remplacement « Z-stage spring-screwblock » (Thing:21480) sans pas de vis à également été nécessaire pour l'adaptation du nouveau support.

Pièce d'adaptation pour le lit chauffant

Concernant la partie commande et capteur, j'ai suivi à la lettre les indications d'installation du wiki de Ultimaker, ne possédant pas d'alimentation de 19V suffisamment puissante pour remplacer celle d'origine afin d'alimenter l'imprimante et le lit chauffant, j'ai choisi d'alimenter ce dernier via une source secondaire, ça tombe bien, une alimentation industrielle 12V / 20A toute petite trouvée en brocante pour 3€ ne demandait qu'à servir...

La carte de l'Ultimaker permet d'origine de piloter un lit chauffant, en fait, on vient se brancher sur un des deux Mosfet restants sur 3 (le premier servant pour la tête d'extrustion), j'ai d'ailleurs supprimer le second Mosfet afin de faire de la place pour pouvoir poser un radiateur sur celui pilotant le lit chauffant.

Pour le capteur de température du lit chauffant, il suffit simplement d'ajouter une résistance de 4,7Kohms sur la carte de commande à l'endroit indiqué.

IMG_0083.jpg

Un peu de lumière

Des réglettes de led multicolores de Ikea trainait dans mon bureau sans réelle utilité, ils en ont finalement trouvé une pour éclairer l'impression.

La surface de travail éclairée :
Éclairage de la surface de travail

Vue sur les barettes de Leds :
IMG_0087.jpg IMG_0090.jpg

Concernant la connection des leds, je vous déconseille fortement d'utiliser le 12V du ventilateur, ce régulateur chauffe déjà énormément et lui ajouter une charge de 400mA (intensité max des réglettes) pourrait le voir fumer très rapidement, coupant, du coup l'alimentation du ventilateur...Je lui ai d'ailleurs mis un dissipateur car je trouve qu'il chauffait déjà énormément.

Quelques photos en vracs


IMG_0072.jpg IMG_0073.jpg IMG_0076.jpg

La suite dès que j'ai un peu de temps...

Dimanche, mai 20 2012

L’impression 3D, la « tête » d’impression et Openscad: l’OpenSource à la rescousse

Le tendeur en S dont j’avais évoqué l’idée dans le post précédent est maintenant réalisé. Il fonctionne à merveille :-)

Les pièces du tendeur

 

Tendeur en place

 

J’ai eu ensuite quelques déboires avec les axes X et Y. J’ai finalement réglé mes problèmes en remplaçant tous les paliers par des roulements à billes. En effet, les paliers glissent très bien mais dès que les courroies sont sous tension, les déplacements sont plus durs et ça fini a un moment ou à un autre par coincer provoquant ainsi des mouvements saccadés…

J’ai donc usiné des nouveaux supports pour y insérer des roulements à billes de rollers à la place des paliers.

 

Roulements

Pour les chariots, j’ai remplacé le double palier par une douille à billes prisonnière à l’intérieur du chariot.

Douille à billes

Après ces quelques modifications, tout fonctionne parfaitement ! Pour les déplacements en Y, j’ai fait des premiers tests, j’arrive à une vitesse de 12 000 mm / min. Je ne pense pas pouvoir imprimer à cette vitesse, mais la machine supporte sans problème  une vitesse de déplacement élevée.

 

Reste à réaliser le support de la tête d’impression… Ce n’est pas une mince affaire, la pièce est relativement complexe, et j’ai du mal à la visualiser et surtout à en estimer les mesures exactes. J’arrive à mes limites ;-)

Heureusement, l’ordinateur est là pour nous aider à simuler différents modèles de support. L’idéal pour moi étant de réaliser un modèle 3D qui me servira ensuite à projeter à plat les pièces pour pouvoir ensuite les fraiser.

 

Le premier « truc » qui vous vient à l’idée: SolidWorks ! Oui et bien c’est « très » cher et je ne l’ai pas. Sketchup alors ? Non, il ne tourne pas sous linux ( même avec Wine je n’y arrive pas ). Alors comme toujours on va regarder du côté des solutions opensource. J’en connais 4 que j’utilise régulièrement:

  • LibreCAD: Excellent outil mais qui se limite à la 2D, nous l’utiliserons pour compléter les projections 2D des pièces.
  • HeeksCAD: Pour ce qui est de la conception 3D, il le permet mais j’ai du mal avec son ergonomie…
  • FreeCAD: Très bien, dessin 3D paramétrique, pas trop dur à prendre en main. Mais il a un gros soucis pour le moment. Autant il permet de créer des pièces facilement autant il est très difficile de les assembler dans un modèle 3D complet. A surveiller dans les futures versions, il évolue assez vite.
  • OpenSCAD: Un outil atypique ! Il permet de dessiner des pièces complexes en 3D paramétrique, mais ici, point d’interface graphique, le dessin se fait à l’aide d’un langage de programmation.

 

Espace de travail

 

Mon choix s’est donc porté sur Openscad. Il présente aussi l’avantage de générer des fichiers STL qui seront utiles lors de l’utilisation de l’imprimante 3D. D’où l’intérêt de commencer à le maîtriser dès maintenant.

 

Openscad dispose d’un éditeur intégré mais celui-ci est peu évolué. Si vous voulez plus de convivialité, vous pouvez utiliser un éditeur externe. Pour celà, il faut « cacher » l’éditeur intégré et cocher l’option « Automatic reload and compile »

Option

 

Options

 

Si vous utilisez emacs comme moi, vous pouvez lui dire de traiter les fichier « scad » comme des fichiers C. Ça permet d’avoir une bonne indentation et une coloration syntaxique correcte.

Pour cela, il faut mettre les lignes suivantes dans le fichier « .emacs »

(add-to-list 'auto-mode-alist '("\\.scad$" . c-mode))

 

L’environnement est prêt, on peut commencer à travailler. Pour commencer par des choses simples, modélisons  une douille à bille.

// Linear Ball Bearing
include 
 
$fn=50;
$lbb_inner_diameter=8;
$lbb_outer_diameter=15;
$lbb_length=24;
 
module linear_bearing_15_24()
{
  color(Aluminum) difference()
    {
      cylinder($lbb_length,$lbb_outer_diameter/2,$lbb_outer_diameter/2,center=true);
      cylinder($lbb_length+1,$lbb_inner_diameter/2,$lbb_inner_diameter/2,center=true);
    }
}
 
//For test
linear_bearing_15_24();

Linear ball bearing

C’est très simple, juste la différence entre 2 cylindres ! Là ou c’est génial: on ajuste les variables et hop on change les côtes.

 

Pour continuer, un peu plus compliqué: la tête chauffante. On va la modéliser rapidement pour qu’elle nous serve ensuite de repère pour la construction du support.

 

// HotEnd jhead MK IV
$fn=50;
 
$hotend_resistor_diameter=5;
$hotend_filament_diameter=3;
$hotend_outer_diameter=16;
$hotend_peek_length=50;
 
// Peek element
module peek() {
color(black) difference()
  {
    difference()
      {
	// Peek cylinder
	cylinder($hotend_peek_length,$hotend_outer_diameter/2,$hotend_outer_diameter/2);
	// Hole for filament
	translate([0,0,5]) cylinder($hotend_peek_length,$hotend_filament_diameter/2,$hotend_filament_diameter/2);
      }
 
    // Mount groove
    translate([0,0,$hotend_peek_length-10])
	{
	  difference()
	    {
	      cylinder(5,9,9);
	      cylinder(5,6,6);
	    }
	}
  }
 
}
 
module copper_end()
{
  translate([-5,-6.5,3])
    {
      difference()
	{
	  cube(size = [16,13,8]);
	  translate([12,15,4])
	    {
	      rotate([90,0,0])
		{
		  cylinder(20,$hotend_resistor_diameter/2,$hotend_resistor_diameter/2);
		}
	    }
	}
    }
  difference()
	{
	  cylinder(3,1,4.5);
	  cylinder(3,0.35,3);
	}
  translate([0,0,3])
    {
      difference()
	{
	  cylinder(20,4,4);
	  translate([0,0,1]) cylinder(21,3,3);
	}
    }
}
 
module hotend()
{
  translate([0,0,13])
    {
      peek();
    }
  copper_end();
}
 
// For test
hotend();

 

Hotend

 

Pas mal non ;-)

 

Et pour terminer le support. Grâce à openscad, on peut changer les côtes, déplacer les perçages… pour simuler tout ce qui nous passe par la tête !

Même si ça peut paraître compliqué au premier abord, c’est très agréable à utiliser. Je ne prétends pas maîtriser complètement l’outil, mais je me débrouille.

 

Autre point très intéressant, on peut utiliser des conditions et autres boucles. Ici j’utilise quelques variables qui si elles sont initialisées à 1 modifient le rendu pour me permettre d’obtenir rapidement les projections à plat.

 

// Hotend Mount
 
include ;
include ;
 
$top_length=50;
$top_width=50;
$side_height=50;
$hole_cable_diameter=15;
 
$fromA=0;
$fromB=0;
$fromtop=0;
 
module mount_top()
{
  difference()
    {
	cube(size = [$top_length,$top_width,15]);
	translate([15,15,-2]) cylinder(20,$hotend_outer_diameter/2,$hotend_outer_diameter/2);
    }
}
 
module mount_side_A()
{
  rotate([0,90,0])
    {
      difference()
	{
	  cube(size = [$side_height,$top_length+5,5]);
	  translate([25,40,0])
	    {
	      cylinder(15,$lbb_outer_diameter/2,$lbb_outer_diameter/2, center=true);  
 
	    }
	}
      if ($fromA==0)
	{
	  translate([25,40,5]) linear_bearing_15_24();
	}
    }
}
 
module mount_side_B()
{
  rotate([90,90,0])
    {
      difference()
	{
	  cube(size = [$side_height,$top_length,5]);
	  translate([40,35,0]) cylinder(15,$lbb_outer_diameter/2,$lbb_outer_diameter/2, center=true);
	  translate([30,15,1]) cylinder(10,$hole_cable_diameter/2,$hole_cable_diameter/2, center=true);        
 
	}
       if ($fromB==0)
	 {
      translate([40,35,0]) linear_bearing_15_24();
	 }
    }
}
 
module mount_complete()
{
  if ( $fromA==0 && $fromB==0 )
    {
      mount_top();
    }
 
  if ($fromtop==0 && $fromB==0)
    {
      translate([-5,-5,15]) mount_side_A();
    }
  if ($fromtop==0 && $fromA==0)
    {
      translate([0,0,15]) mount_side_B();
    }
  if ($fromtop==0 && $fromA==0 && $fromB==0)
    {
      color(black) translate([15,15,-48]) #hotend();
    }
}
 
module mount_full()
{
 
  if ($fromtop==0 && $fromA==0 && $fromB==0)
    {
      // rod A
      rotate([0,90,0]) translate([10,35,-50]) cylinder(300,4,4);
      // rod B
      rotate([90,90,0]) translate([25,35,-150]) cylinder(300,4,4);
    }
  //Holes for hotend groove
  difference()
    {
      mount_complete();
      translate([23,-10,7.5]) rotate([-90,0,0]) cylinder(40,2.5,2.5);
      translate([7,-10,7.5]) rotate([-90,0,0]) cylinder(40,2.5,2.5);
    }
}
 
if ( $fromtop==1 )
  {
    projection(cut=false) mount_full();
  }
 
if ( $fromA==1 )
  {
    projection(cut=false) rotate([0,90,0]) mount_full();
  }
 
if ( $fromB==1 )
  {
    projection(cut=false) rotate([90,0,0]) mount_full();
 
  }
if ( $fromtop==0 && $fromA==0 && $fromB==0 )
  {
    mount_full();
  }

 

Hotend mount

 

Si l’on utilise les variables indiquées en haut du fichier, on obtient les projections à plat des 3 faces qui m’intéressent.

Si: $fromA=1;

fromA

Si $fromB=1;

 

FromB

 

Si $fromTop=1;

 

FromTOP

 

Le tout peut être exporté en DXF pour être ensuite utilisé dans LibreCAD puis HeeksCNC pour le fraisage des pièces. Seul petit bémol, les cercles et arcs de cercles sont des successions de segment ce qui n’est pas optimal. On peut facilement les reprendre dans Librecad.

Les différents plans sont regroupés dans un Zip si vous voulez jouer avec openscad.

Si un expert openscad passe par là, il peut nous donner des astuces dans les commentaires, je suis preneur ;-)

La suite sur la fraiseuse…

Dimanche, mai 6 2012

L’impression 3D, jeux de courroies

Après avoir monté le chassis et l’axe Z, il est temps de s’attaquer à une partie assez compliquée: les entraînements X et Y par courroies.

Ayant à ma disposition plusieurs jeux de poulies MXL provenant d’imprimantes et autres scanners, j’ai commandé les courroies correspondantes à cette norme anglo saxonne ( pas de 2.032 mm ). L’inconvénient vient du diamètre des mes poulies, un petit peu grand. Je pourrais éventuellement en imprimer par la suite si la machine marche bien. Par ailleurs, j’ai volontairement commandé des courroies un peu grandes pour me permettre de tester  l’entraînement direct par les moteurs.

 

Je dispose des quelques poulies crantées mais pas assez pour les 2 axes.

Poulie crantée

Il me faut donc fabriquer des poulies lisses pour les installer à l’opposé des poulies crantées. N’ayant pas de tour sous la main, j’ai usiné 2 flasques en PVC qui sont ensuite collées.

Flasques

 

Un coup de colle PVC et l’on dispose de belles poulies !

Poulies lisses

Les axes de guidage en acier de 8mm sont tenus sur le châssis par des supports usinés dans du PVC de 5mm.

Usinage en cours

Un palier en bronze permet d’assurer la rotation de l’axe. Une rondelle vient empêcher le guide de sortir du palier.

Support d'axe

 

Les moteurs sont installés dans des supports en PVC de 5 mm. Les courroies passent directement sur la poulie du moteur procurant ainsi un entraînement direct. Le support du moteur pouvant coulisser le long du chassis, il sert ainsi à tendre la courroie avant d’immobiliser le tout à l’aide des 2 vis 6 pans creux.

Moteur X

 

Moteur pour l'axe Y

 

Les poulies lisses sont installées à l’opposé des poulies crantées.

Poulies

 

Moteur Y

 

Chaque axe disposant de 2 courroies, la première est tendue par la position du moteur. La deuxième dispose d’un tendeur improvisé à partir d’une poulie récupérée dans une imprimante.

Tendeur pour l'axe Y

 

La motorisation de l’axe Y est prête, reste à mettre en place les chariots supportant la barre de guidage Y. Les chariots sont usinés en 2 parties puis assemblés à l’aide de 3 boulons.

Demi chariot

L’axe est ainsi solidaire du chariot une fois les boulons serrés.

Un des chariots pour l'axe Y

 

La courroie est bloquée sous le chariot par une plaque usinée dans du PVC de 3mm et vissée à l’aide de 2 vis dans le PVC du chariot.

 

Un des chariots pour l'axe Y

 

Un des chariots pour l'axe Y

Les moteurs sont câblés avec des câbles RJ45 dont les conducteurs sont utilisés 2 par 2 pour permettre de disposer d’une plus grande section. Les câbles sont ensuite glissés dans les rainures du châssis.

Connecteurs

 

Connecteurs

 

L’axe X ne dispose pas encore de son tendeur. Il est plus compliqué à réaliser que pour l’autre axe étant donné la présence du moteur de l’axe Z qui va obliger à réaliser un tendeur en S pour abaisser la courroie sous le support du moteur.

 

Sketch

 

Le montage a bien avancé, les moteurs sont en place et l’axe des Y est complet. La barre de guidage de la tête d’extrusion se déplace suivant l’axe Y avec une vitesse importante et une grande fluidité. Le poids de la structure limite les vibrations mais des patins anti-vibration sous les pieds ne seraient pas de trop quand même.

 

 

Bientôt la suite avec je l’espère des tests d’impressions !

- page 1 de 2