ITopie maxProject
Sommaire
- 1 Projet "Fabriquer une iTopie from scratch"
- 2 Découpage du cadre avec la CNC du c01n
- 3 Impression 3D des pièces de la iTopie
- 4 Assemblage de la iTopie
- 5 L'électronique de bord
- 6 Logiciels
- 7 Calibration de l'imprimante
- 8 Configuration des impressions
Projet "Fabriquer une iTopie from scratch"
Je cherchais un projet pour me mettre en jambe. Cela faisait quelques temps que je souhaitais réaliser une RepRap, car je trouve le concept d'une beauté désarmante, je me suis donc lancé. J'avais d'abord jeté mon dévolue sur une variante d'une Prusa i3 : un kit de P3Steel à monter, car plutot costaud (j'aime la robustesse). Jérémie m'a conseillé de regarder le projet iTopie, ce qui m'a tout de suite convaincu d'en réaliser une from scratch. La RepRap iTopie est grosso modo une i3 avec pour particularité d'avoir un cadre robuste en MDF. Ce cadre hautement configurable peut etre fabriqué avec une CNC. Si l'on considère qu'une imprimante 3D est une CNC, alors on peut éstimer que l'on augmente ainsi la capacité d'auto réplication de cette imprimante.
Découpage du cadre avec la CNC du c01n
Logiciels
- OpenScad
- Heekscad & HeeksCNC
- LibreCad
Préparation de la découpe avec la CNC
Pitfall :
- Configuration "step over" & "material allowance" du pocketage. (cf Usinage Demo 6)
- Configuration de "roll radius" sur les profilages. (cf Usinage Demo 6)
- La profondeur du pocketing est plutot mauvaise : avec 6mm on obtient 7mm. Avec 5mm on obtient 5.7mm. Avec 5.5mm on obtient à peu près 6mm.
Tips :
- Pointer le centre des trous : séléctionner point > clic droit sur un trou > click mid point
- Changer le zero : séléctionner set origin > pick 1 point ; Séléctionner tous les items plus coordinate > clic droit sur coordinate > transform selected items to world coordinates
Usinage d'une démo
Problèmes à régler : Les pochetages n'ont pas la bonne profondeur : environ 6,7mm Le réglage dans heekscnc était de 6mm de profondeur avec des passes de 3 mm. De mémoire, les passes dans dans linuxcnc était superieur à 3 mm. Peut ^etre le problème vient-il de là.
Le pochetage accueillant les tiges de metal glissière fait 7 mm au lieu de 8 mm. On dirait que le gcode de heekscnc calcul mal cette découpe.
L'angle inferieur droit en bas à gauche de la pièce est percé dans la pièce plutot qu'à l'exterieur.
Usinage du plateau 1 alpha
Usinage "demo6"
- "step over" 2mm (au lieu de 1mm) pour réduire le temps de pocketage
- "material allowance" 0mm (au lieu de 0.2mm) pour augmenter la surface "pocketé"
- "roll radius" 1mm (au lieu de 2mm) pour réduire la taille des drills "profilés"
Validation des paramètres suivants avec démo 4 :
- Vitesse de découpe rapide (tour de la pièce): 400mm / min avec 10k rpm ok
- Vitesse de découpe moyenne (petits évidages): 300mm / min avec 10k rpm ok
- Vitesse de découpe précise (perçage de trous): 200mm / min avec 10k rpm ok
- Découpe "roll radius" à 1mm (< au rayon de la fraise) pour le perçage fait avec l'operation profiling
- Pocketage "step opver" à 1.5mm (= au rayon de la fraise)
- Vitesse de pocketage : 200mm / min
Tips:
- Ralentir la dernière couche de la découpe finale.
- Utiliser les finish pass pour diminuer le feed rate : à tester
Usinage du plateau 2
Améliorations:
- Perçage de coin à 1mm à l'exterieur du coin
Usinage du footer seul. Utilisation des réglages "demo 6".
25 min + ??? => pièce OK
Usinage du plateau 1
25 min + 3h 15 min
Impression 3D des pièces de la iTopie
Globalement, l'impression fût plutôt laborieuse au début, car la tête d'impression de la foldarap chauffait trop à cause d'un faux contact sur la sonde de température. J'ai fais beaucoup de test pour commencer à apprivoiser la foldarap.
Structure
J'ai pris les pièces dispo sur le projet github ici : https://github.com/lautr3k/RepRap-iTopie
Extrudeur
Concernant l'extrudeur, j'ai choisis celui-ci : https://github.com/lautr3k/Wade-L3K
Enfin, j'ai décidé d'effectuer une maj de l'extrudeur en utilisant une courroie. Ceci est expliqué dans la description de l'extruder sur thingiverse : http://www.thingiverse.com/thing:512338
Logs
L'extrudeur Wade L3K est celui conseillé par l'auteur.
Pièce 1 : "Big gear 43 dents"
La premiere pièce imprimé : la grande roue 42 dents semble parfaite. => Config: layer: 0.25mm ; first: 140% ; perimetre x2 ; top & bot: x3 ; infill 40% ; rectilinéar x2 ; brim: 0mm
Pièce 2 : "Small gear 10 dents"
Elle a nécéssité 3 tentatives => La pièces gondole rapidement et nécéssite d’utiliser un brim => Config retenue: layer: 0.25mm ; first: 140% ; perimetre x3 ; top & bot: x4 ; infill 40% ; rectilinéar x2 ; brim: 3mm
Pièce 3 : "Idler"
Temps éstimé 1 heure.
Tentative 1
Dès la première couche, Le brim se soulève un peu à l’avant de l’imprimante. Retirer le birm ? La pièce extrude très mal un trou censé accueillir un écrou à l’avant de l’imprimante.
Tentative 2
Sans brim avec 0.2mm par couche. Le Infill est plutot moche.
Tentative 3
Réduction des vitesse d'impression Réglage du paramétrage avancé de slicer => utilisation des valeurs par défaut à la place de custom Retour à 0.25mm / layer => Encore un peu d'over-heating ==> Ventillation de l'impression au journal à la mano.
Bien meilleure qualité. Infill beaucoup mieux. Je dois pouvoir réduire à 3 le nombre de perimètre des pièces.
Add-ins
Support de connecteur d'alimentation
J'ai dessiné et imprimé un support pour le connecteur secteur C14 et son interrupteur. le voici :https://github.com/mxbossard/3dPrints/tree/master/power_connector_holder
Impression d'un support pour les connecteurs d'alimentation
Assemblage de la iTopie
Assemblage du cadre
J'ai suivi le guide de montage pour assembler l'imprimante disponible ici : http://www.reprap.org/wiki/ITopie_Build_Manual.
Peinture
Peinture à l'eau random pendant les open atelier du coin. La prochaine fois je testerai peut-être l'aerosol.
Extruder
[TODO] Pour l'extrudeur, j'ai utilisé l'image représentant une vue explosée, disponible sur thingiverse: http://www.thingiverse.com/thing:512338 [IMG]
Alimentation
ref: 12V 30A max J'ai décidé de fixer l'alimentation en dessous de l'imprimante pour gagner minimiser l'encombrement de l'imprimante. L'avenir nous dira si c'était un choix judicieux. J'ai donc fixé le bloc d'alimentation à l'aide de 3 vis dans le cadre.
Câblage
[TODO] Prolongation des fils des moteurs, de l'extrudeur, des thermistors, ... Cette étape est plutôt fastidieuse. Il faut de plus braser des connecteurs "molex" pour connecter tout ce matériel à l’électronique embarqué.
Moteurs
ref: NEMA17 Stepper motor 1.8 degrees step / 4.8 kg/cm Attention pour l'alimentation des moteurs pas à pas. Ceux que j'utilise ont 4 fils. J'ai testé tous les branchements possible sur un moteur, il semble qu'il y en ai plusieurs qui soit fonctionnel. J'ai donc choisis un branchement que j'ai utilisé pour tout les moteurs et qui au final est correcte.
Interrupteurs de fin de course
Les fins de courses des axes X et Y sont cablés pour relier l'entrée du microcontrôleur à la masse lorsque le fin de course est activer (état logique "0"). C'est le comportement par défaut du firmware marlin. Si l'axe n'est pas en fin de course, le circuit reste ouvert, une résistance de "pull up" dans le microcontrôleur force un état logique "1".
Test des capteurs de fin de course via le firmware marlin avec M119 ?
Capteur inductif
ref: LJ12A3-4-Z/BY (INDUCTIVE PROXIMITY SENSOR DETECTION SWITCH PNP DC6-36V 12MM) Doc: [TODO] C'est un capteur actif, je l'alimente en 5V entre les fils bleu(0V) et marron(+5V). Lorsque le capteur est proche de certains matériaux comme l'aluminium (métal de notre bed), la sortie du capteur (fil noir) est à l'état logique "1" (+5V). Dans le cas contraire, la sortie du capteur est à l'état logique "0". Cela est un l'inverse de comportement par défaut du firmware marlin.
Capteur capacitif
ref: LJC18A3-B-Z/AX C'est un capteur capacitif alimentable jusqu'à +X volts. Cette technologie semble mieux detecter le bed, et surtout depuis une plus longue distance, ce qui permettra d'intercaller un sur bed en plastique. Je l'alimente en 12V ce qui augmente son range de detection, et j'utilise un pont diviseur pour ramener la sortie du capteur à 5V. Par défaut, si le capteur ne capte pas le bed, la sortie est à 0V (état logique 0) et la LED de test éteinte. Il faut régler une resistance de tirage vers le bas (pull-down) dans l'Arduino.
Lit chauffant (heated bed)
ref: Heatbed MK3 Alu lien: [TODO] Pour utiliser le capteur inductif, j'ai choisis un lit chauffant aluminium de type MK3. Je l'alimente en 12V, et je lui scotch un thermistance de ref: avec du kapton. Le lit chauffant consomme 120 W, soit 1A à 12V. Je décide donc d'utiliser du fil de section 0.75 mm² pour son alimentation. J'utilise une mince couche de liège pour isoler le lit chauffant du plateau de l'imprimante.
Pour la thermistance du bed : ref: B57560G1104F000 (EPCOS / TDK Thermistances CTN G1560/ 100K/ 1% NTC Thermistor) http://www.mouser.com/ds/2/400/Glass_enc_Sensors__B57560__G560__G1560-525576.pdf
Hot end (le bout qui chauffe le fil plastique)
ref: Kit E3D v6 chez reprap.me doc: [TODO] Attention, il n'est pas si simple de l'assembler. La hot end va atteindre 200°C à 300°C, ce qui pourra faire fondre les pièces plastiques se trouvant aux alentours. Il est nécessaire de la monter correctement pour dissiper les excès de chaleur. Le dissipateur thermique sur lequel est monté le ventilateur ne doit pas être chaud au touché.
Le kit était fourni avec une cartouche résistive chauffante, une thermistance relativement inconnue, un ventilateur pour refroidir le dissipateur.
L'électronique de bord
"Carte mère" minitronics v1.1
http://reprap.org/wiki/Minitronics_10
Arduino plugin
IDE version reprapworld
- Créer un compte sur https://reprapworld.fr
- Allez sur https://reprapworld.fr/software/
- Télécharger la Version 1.6.12 de l'IDE arduino
Modifications manuels
Pour programmer la carte minitronics "à la mode Arduino", il faut suivre la procédure décrite ici : http://h3do.e-monsite.com/pages/construire-son-imprimante-h3do/programmation-de-la-minitronics.html
Voici cette procédure recopié au cas ou lien mourrait :
- Installer l'IDE Arduino: apt install arduino
- Ajouter le texte suivant dans le fichier /usr/share/arduino/hardware/arduino/boards.txt
############################################################## mega1281.name=Minitronics mega1281.upload.protocol=arduino mega1281.upload.maximum_size=126976 mega1281.upload.speed=57600 mega1281.bootloader.low_fuses=0xFF mega1281.bootloader.high_fuses=0xDA mega1281.bootloader.extended_fuses=0xF5 mega1281.bootloader.path=atmega mega1281.bootloader.file=ATmegaBOOT_168_atmega1281.hex mega1281.bootloader.unlock_bits=0x3F mega1281.bootloader.lock_bits=0x0F mega1281.build.mcu=atmega1281 mega1281.build.f_cpu=16000000L mega1281.build.core=arduino mega1281.build.variant=minitronics ##############################################################
- Copier le contenu des répertoires bootloaders et variants de l'archive rrw.zip dans les repertoire bootloaders et variantes situé dans le repertoire /usr/share/arduino/hardware/arduino
- Remplacer le fichier /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h par celui présent dans l'archive rrw.zip. Faites attention à conservez une copie de sauvegarde du fichier Arduino.h avant de le remplacer.
- Desormais, dans l'IDE Arduino, vous pouvez choisir le type de carte "Minitronics" dans le menu Outils/Tools.
Firmware de test
Pour tester le fonctionnement de la carte minitronics, il est possible d'utiliser le firmware de test qui va faire gigoter les moteurs, mesurer les températures (uniquement en valeur numérique issue du convertisseur analogique numérique), et afficher l'état des switchs fin de courses.
Le firmware est disponible dans cette archive : File:MinitronicsTest.zip
Sélection du firmware marlin
Au départ je suis partit sur un Marlin v1? préconfiguré pour imprimante "cube H3D0". Que 'ai reconfiguré moi meme comme décrit dans le chapitre suivant. Voici l'archive contenant ce firmware Marlin v1.1
Configuration du firmware marlin
Axes X, Y, Z
Mes moteurs sont des 200 pas / tour. Le driver XXX de la carte minitronics pilote les moteurs au 1/32 de pas. C'est ce que l'on appel du micro stepping. Nous considérons donc que les moteurs nécessitent d'effectuer 6400 "µpas" (micro pas) (200 * 32) pour réaliser un tour.
Pour les axes X & Y, le moteur entraîne via une roue de 20 dents, une courroie 2mm par dent. Un tour de moteur implique donc un déplacement de la courroie de 40mm. (20 * 2mm = 40mm) Pour effectuer un déplacement de 1 mm sur les axes X & Y, il faut donc tourner le moteur de 160 µpas (6400/40) ou 5 pas.
Pour l'axe Z, le moteur entraîne une vis de pas 8mm. Un tour de moteur implique donc une translation verticale de 8mm. Pour effectuer un déplacement de 1 mm sur l'axe Z, il faut donc tourner le moteur de 800 µpas (6400/8) ou 25 pas.
L'imprimante ayant une précision de 1 µpas, les déplacements minimum qu'elle est capable d'effectuer sont :
- sur X & Y: 0.1mm => 16 µpas ; 16,25 µm / pas
- sur Z: 0.1mm => 80 µpas ; 1,25 µm / pas
Optimisation possible
On voit qu'une optimisation pourrait être de réduire le nombre de micro pas. Il faut vérifier si cela est intéressant, mais il est possible de conserver une bonne résolution ainsi:
- sur X & Y
- pour 100µm par µpas: piloter le moteur au 1/2 de pas (400 µpas / tour pour translater de 40mm).
- pour 12,5µm / µpas: piloter le moteur ai 1/16 de pas.
- sur Z
- pour 40µm par µpas: piloter le moteur au pas complet (200 µpas / tour pour translater de 8mm).
- pour 10µm par µpas: piloter le moteur au 1/4 de pas.
"Axe E" moteur de l'extrudeur
Cet axe pousse le fil plastique dans l'extrudeur. Pour le réglage, j'ai effectué une règle de 3:
- J'extrude 10mm de fil
- Je mesure la distance de filament réellement "consommé" par l'extrudeur, et j'ajuste dans le firmware le nombre de pas nécessaire pour extruder 1mm de filament.
- Je répète plusieurs fois l'opération en augmentant la distance d'extrusion pour augmenter la précision des mesures.
Thermistance
[TODO]
Fin de course
- Pour tester si les fin de courses sont fonctionnels
>>> M119 SENDING:M119 Reporting endstop status x_min: open y_min: open z_min: TRIGGERED
- Configurer la sonde de l'axe Z
http://www.instructables.com/id/Enable-Auto-Leveling-for-your-3D-Printer-Marlin-Fi/
Régulateur PID
Le PID est un algorithme d'asservissement en boucle fermée. Il est intégré dans le firmware marlin pour contrôler les températures du lit chauffant et de la hot-end. Il permet d'atteindre rapidement la température désirée, et de la conserver de manière précise et robuste. [TODO]
Zone d'impression
// The size of the print bed #define X_BED_SIZE 200 #define Y_BED_SIZE 200
bed leveling
- Mode automatique
- G29 V3 T: lancer 9 mesures verbeuse de (niveau 3) et génère un rapport de mesure
- Mode manuel (prend une mesure là où est la tête)
- G30
- Test de la sonde
- M48 P10 v4 : effectue 10 mesures
Mean: -0.097500 Min: -0.104 Max: -0.095 Range: 0.009 Standard Deviation: 0.002958
http://www.soliforum.com/topic/13542/probleme-dauto-bed-leveling/
Connecteurs
[TODO] J'ai eu du mal à trouver les bon connecteurs à souder pour raccorder tous les équipements (moteur, thermistance, capteurs, ...) à la carte électronique de bord. Il sont pourtant courant, mais difficile à trouver sur les sites marchands. Voila leur référence dans la serie MOLEX 6471:
- 2 positions femelle: ??? MOLEX 22-01-2025 (2 CRT TERM HOUSING) !!! pas reçu le bon élément !
- 3 positions femelle: MOLEX 22-01-2035 (3 CRT TERM HOUSING)
- 4 positions femelle: MOLEX 22-01-2045 (4 CRT TERM HOUSING)
- connecteurs à sertir: ??? !!! pas reçu le bon élément !
Logiciels
Pronterface
Dispo sur github : git clone https://github.com/kliment/Printrun.git sudo aptitude install build-essential cython libpython2.7-dev python setup.py build_ext --inplace
( peut etre aussi: sudo aptitude install python-wxgtk3.0 python-numpy python-pyglet python-psutil)
Configuration
- Dans Paramètres > Options il faut modifier :
- Débit de communication : 250000
- Largeur : 200
- Longueur : 200
- hauteur : 230
puis appuyer sur OK
Slic3r
Une version prusa (plus à jour) est disponible ici
Les paramètres pour la i3 sont sur git là
Calibration de l'imprimante
- Pour le homing "standard" X Y Z, utilisez la commande GCode G28.
- Pour l'auto bed leveling, utilisez la commande GCode G29.
Ensuite, il reste à règler l'écart (offset) entre le Zero en Z mesuré par la sonde et le Zéro réel du bed. Pour cela, on peut jouer avec l'instruction M851 ; ex: M851 Z-1 pour fixer un offset en Z de 1 mm. Ensuite, il faut sauvegarder ce règlage avec l'instruction M500. On peut alors vérifier la valeur enregistrée dans l'EEPROM avec l'instruction M501.
Guide de calibration
On peut suivre : http://reprap.org/wiki/Calibration/fr
Configuration des impressions
Refroidissement (cooling)
Pour tester le refroidissement, on peut utiliser le GCode M106 S100 qui demande un vitesse de 100/255 au cooling fan.
Test : Pas de refroidissement sur la première couche. J'utilise pour le moment le cooling par défaut de Slic3r.
Conseil d'utilisation du wade L3K
- Vitesse des ventilateurs radiaux conseillé : 70% (Au delà, trop d'air généré qui perturbe la hotend)
- Distance de rétraction conseillée : 1mm environ
- Vitesse de rétractation : entre 20 & 40mm/s
Gcode
Quelques instructions GCode comprises par Marlin.
cf doc complète du GCode : http://reprap.org/wiki/G-code
Start (avant impression)
- G1 Z5 F500 ; lift nozzle
- G28 X Y ; home X & Y axes
- G29 ; auto bed leveling
- G1 Z5 F500 ; lift nozzle
End (après impression)
M104 S0 ; turn off extruder temperature M140 S0 ; turn off bed temperature G91 ; set relative coordinates G1 Z20 F500 ; lift nozzle G90 ; set relative coordinates G28 X ; home X axis G1 Y200 F1000 ; move bed to front M84 ; disable motors