Accès rapide
- Projets
Listes des projets. - Impression 3D
Le rêve, ce serait que je puisse m'offrir une énorme découpeuse laser ! La dure réalité me dit que pour le moment ce n'est pas possible, mais peut-être que je peux réussir à construire ma propre graveuse laser de poche.
Pour ce projet, je vais essayer de suivre les instructions de cet instructable.
Matériel | Quantité | Description | |
---|---|---|---|
Arduino UNO | x1 | Semageek | |
ATtiny85 | x1 | Petit microcontrôleur capable de remplacer un Arduino pour les choses les plus simples. | AliExpress |
DS-929MG | x1 | Servomoteur. J'ai pris celui-ci car j'en avais un sous la main, mais n'importe quel servo devrait faire l'affaire. Les contraintes en déplacement angulaire et en couple sont vraiment négligeables. | HobbyKing |
EasyDriver v4.4 | x2 | Driver pour contrôler facilement les steppers. | AliExpress |
Cornière alu 15×15 | 2×16 cm | Poutrelles d'aluminium en L qui permettront de bâtir la structure de la graveuse. | Mr. Bricolage |
Lecteur/graveur DVD | x1 | Un lecteur/graveur récupéré sur un vieille ordinateur fait parfaitement l'affaire. |
J'ai récupéré ce matin un lecteur/graveur de DVD. Du moins je l'espère. Il est inscrit sur le claper DVD R/RW ou encore RW (DVD + ReWritable), il faut bien que cela fasse l'affaire !
Le soir, séance de démontage. Après avoir retiré les 4 visses au dos, le boîtier s'ouvre très facilement. Pour dégager le plateau du boîtier, il faut penser à ouvrir le tiroir du lecteur avec un trombone.
Je réserve le plateau pour la suite du projet et garde de coté les moteurs, ça peut toujours servir !
J'ai commandé 4 EasyDrivers sur AliExpress qui devraient arriver dans au plus 1 mois. Prix imbattable (1,38 € !), mais il faut être patient …
Les EasyDrivers sont arrivés ! Par contre, comme je n'ai pas encore de fer à souder dans mon atelier, je ne vais pas pouvoir jouer avec tout de suite. :(
Comme je me suis équipé d'un fer à souder, je peux avancer sur ce projet. J'ai récupéré une alimentation de PC qui me va me servir à alimenter les steppers.
Fil | Fonction |
---|---|
violet | standby (+5V) |
gris | power good (+5V) |
vert | power on (à court-circuiter) |
noir | ground |
Pour rappel, lorsque l'alimentation est branchée sur le secteur, le fil violet (standby
) est maintenu à une tension de 5V, que l'alimentation soit allumée ou non. En mettant le fil vert (power on
) à la masse (fil noir), l'alimentation est allumée, le fil gris (power good
) passe à 5V lorsque toutes les tensions de l'alimentation sont bien stables.
À partir d'une nappe de PC, je fait un connecteur pour le stepper du lecteur CD.
Les branchements de l'EasyDriver sont vraiment très simple. Ma plus grande question a été de savoir comment l'alimenter (pin M+). C'est en fait très simple. Le fonctionnement même de l'EasyDriver fait que n'importe quelle source de tension entre 6V et 30V capable de délivrer 2A au minimum convient. L'EasyDriver se charge ensuite d'adapter le courant qui est effectivement envoyé vers le stepper. Le risque de le griller est donc très limité.
Pin | Branchement |
---|---|
A1, A2, B1; B2 | aux quatre pins du stepper, dans le même ordre |
MS1, MS2 | +5V fourni par l'EasyDriver |
M+ | +12V (alimentation de PC) |
STEP | ~D9 (Arduino) |
DIR | D8 (Arduino) |
Aujourd'hui, travail sur le squelette de la graveuse. Une petite planche de bois sert de base. Comme elle est trop petite, j'ai du imprimer un support adapté pour l'axe du plateau. Je prépare deux petites poutrelles d'aluminium pour y fixer le second axe.
Note. Pour la prochaine fois, évider autant que possible le plat du support imprimé en 3D. Cela permettrait d'économiser beaucoup de PLA.
Quelques courses me donnent le matériel nécessaire pour fixer le second axe sur les poutrelles préparées hier.
Je monte aussi les EasyDriver sur une plaque de prototypage pour tester l'ensemble. La bibliothèque Arduino AccelStepper permet un contrôle fin des steppers. Elle n'est pas bloquante et elle gère les phases d'accélération et de décélération.
La libraire AccelStepper est aussi compatible avec les EasyDrivers. Il suffit utiliser la syntaxe suivante lors de la création des steppers :
AccelStepper stepper(1, pin_step, pin_direction);
Néanmoins, j'envisage d'utiliser Grbl pour avoir un interpréteur complet de G-code.
La course de chaque axe est d'environ de 2000 pas. En réalité, elle est très légèrement supérieure mais cette petite différence fera une marge de sécurité.
Aujourd'hui, j'ai surtout travaillé sur l'installation de Grbl, sa configuration et la définition des étapes à suivre pour faire une gravure.
Les étapes pour installer Grbl sur une Arduino UNO sont très clairement décrites dans sa documentation. Il s'agit de télécharger la librairie, de la rendre disponible pour l'IDE Arduino, d'ouvrir le script d'installation et de le téléverser dans l'Arduino.
Il faut ensuite brancher correctement les deux EasyDriver à l'Arduino. Une fois encore, tout est bien décrit dans la documentation.
Axe X | Axe Y | Axe Z (*) | |
---|---|---|---|
STEP | 2 | 3 | 4 |
DIR | 5 | 6 | 7 |
ENABLE | 8 | 8 | 8 |
(*) Non utilisé.
Relier la masse de l'Arduino à la masse des EasyDriver située juste à coté des pins STEP
et DIR
, PAS à la masse de PWR IN
. Ces deux masses ne doivent pas être reliées.
J'ai ensuite suivit le guide de première utilisation pour configure Grbl. Pour dialoguer avec Grbl, j'ai utilisé UGS (Universal G-Code Sender), un logiciel libre écrit en java pouvant transmettre du G-Code.
La course de chaque axe est de 2000 pas, ce qui correspond à un déplacement de 3,6 mm. Ainsi, pour chaque axe, le déplacement est de 55,556 steps/mm (paramètres $100 et $101). Je règle arbitrairement l'accélération maximale à 70 mm/s² (paramètres $120 et $121). Je fixe enfin le parcours maximal de chaque axe à 3,6 mm (paramètres $130 et $131). Cette valeur n'est pas utilisée par Grbl tant qu'il n'a pas la possibilité de faire un homing. Mais au moins, elle est enregistrée.
Vérifier aussi que l'orientation de chaque axe est correcte. S'aider du schéma de linuxcnc. Dans mon cas, je n'ai pas d'inversion à faire.
Je teste aussi comment générer un G-code. Je choisis d'utiliser le plugin gcode d'Inkscape.
À l'exécution de ce plugin, je reçois l'erreur AttributeError: ‘module’ object has no attribute ‘unittouu’” or “unittouu not part of inkex module
. Pour la corriger, remplacer dans le fichier gcodetools.py
la ligne suivante …
doc_height = inkex.unittouu(self.document.getroot().get('height'))
… par (bien respecter l'indentation) …
doc_height = self.unittouu(self.document.getroot().xpath('@height', namespaces=inkex.NSS)[0])
.
(source)
Pour un premier essai, le plateau est grossièrement fixé avec une paire d'aimants récupérés dans l'un des lecteurs CD et un stylo est accroché à l'aide de eux serre-joints.
Notes sur cet essai
Piste d'amélioration
J'ai réfléchi à une solution pour lever/descendre le stylo. Je projette de le maintenir contre le papier avec un ressort et de le lever avec un servomoteur. Pour que cela fonctionne avec Grbl, un ATtiny85 servira d'intermédiaire entre l'Arduino et le servomoteur. L'Arduino envoie un signal tout ou rien pour indiquer la position souhaitée du stylo (ce qui possible avec le mode de gravure laser de Grbl), l'ATtiny85 interprète ce signal et commande en fonction le servomoteur.
Pour référence, mes notes sur l'utilisation d'un ATtiny85 sont rassemblées ici.
TL;DR : projet terminé !
J'ai construit un mécanisme pour lever et descendre la mine du stylo utilisée sur ma Pocker Laser Engraver. Deux ressorts la maintiennent vers le bas, un servomoteur permet de la lever. Ce dernier est commandé par un ATtiny85 lui même relié à l'Arduino maître.
Pour que la mine soit levée ou descendue par une commande Gcode, j'ai choisi d'utiliser les commandes relatives à la rotation d'une éventuelle fraise. (Rappel, Grbl est a priori utilisé pour piloter une fraiseuse numérique.) En commentant la ligne #define VARIABLE_SPINDLE
dans le fichier config.h
, la fraise ne sera plus commandée par un PWM (ce qui permet de régler sa vitesse) mais par une simple commande tout ou rien.1) Avec cette configuration, on a le comportement suivant :
G-Code | Description | Effet | Action voulue |
---|---|---|---|
M3 | Démarre la fraise dans le sens horaire | Pin 12 –> HIGH | Descendre la mine. |
M4 | Démarre la fraise dans le sens anti-horaire | Pin 12 –> HIGH | Descendre la mine . |
M5 | Stop la fraise | Pin 12 –> LOW | Monter la mine. |
Je reflashe l'Arduino avec Grbl pour qu'il tienne compte de cette nouvelle configuration, je relie l'ATtiny85 à la pin 12 de l'Arduino. (voir schéma)
Faire bien attention aux différentes tensions d'alimentation et aux masses. On trouve :
L'ATtiny85 est alimenté par la tension Vref de l'Arduino et il doit partager sa masse.
Lorsque je génère un fichier G-Code à partir d'un chemin sur Inkscape, il doit être modifié pour la mine soit levé ou descendu au bon moment :
M3
dans l'en-tête du G-Code.M5
avant les déplacements verticaux vers le haut (commande du type G00 Z1.000000
).M3
avant les déplacements verticaux vers le bas (commande du type G01 Z-0.125000 F100.0(Penetrate)
).Et voilà, le projet est terminé ! Certes, ce n'est pas du tout une graveuse laser, mais une traceuse. Le résultat est tout de même impressionnant.
Lorsque le stylo est relevé, le stepper tremble. Je pense que c'est causé par le PWM : soit sa période est trop importante (20 ms plus la durée de commande au lieu de 20 ms), soit il est trop proche de sa buté (2ms ce qui est la limite).