User Tools

Site Tools


projets:001

Pocket Laser Engraver

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

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.

logbook

9 mai 2016

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 …

21 mai 2016

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. :(

1 novembre 2016

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)

21 août 2017

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.

22 août 2017

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é.

23 août 2017

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

  • Mieux fixer le plateau pour qu'il reste bien à l'horizontal tout le long de la “gravure”.

Piste d'amélioration

  • Utiliser un ressort pour plaquer la mine du stylo sur la feuille.
  • Trouver un système pour pouvoir lever/descendre le stylo.

3 avril 2018

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.

4 avril 2018

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 :

  • un rail de 12V avec sa propre masse pour les steppers ;
  • un rail de 5V avec sa propre masse pour le servomoteur.

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 :

  • Supprimer la commande M3 dans l'en-tête du G-Code.
  • Ajouter une commande M5 avant les déplacements verticaux vers le haut (commande du type G00 Z1.000000).
  • Ajouter une commande 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.

Sources

Liens divers

  • Piccolo − Toute petite CNC traceuse faite à partir de pièces fabriquée à la découpeuse laser. S'en inspirer pour l'axe Z ?
projets/001.txt · Last modified: 2018/09/03 19:17 (external edit)