Hack d'une découpeuse laser

De Movilab
Aller à :navigation, rechercher

Ici nous allons présenter la marche à suivre pour remplacer l'électronique de commande d'une découpeuse laser. Nous partons d'une machine chinoise de mauvaise qualité, contrôlée par une carte mère et un logiciel de commande propriétaires, et nous allons les remplacer par une carte Smoothieboard [1] pilotée par le firmware grbl [2]. Le logiciel utilisé pour piloter le laser sera LaserWeb4 [3], mais n'importe quel logiciel générateur de G-Code peut faire l'affaire. Ce logiciel sera accessible via un serveur local implémenté dans une Raspberry Pi, afin de pouvoir contrôler la découpeuse par connexion au WiFi.

Photo découpeuse laser

Etude de l'existant[modifier | modifier le wikicode]

Pour commencer, nous avons cherché à comprendre le principe de fonctionnement de l'ancienne découpeuse. Du fait de l'absence totale de documentation, nous avons appris le fonctionnement du laser par tâtonnements.

Disposition générale[modifier | modifier le wikicode]

Voilà les éléments de la machine identifiés :

Schéma électrique d'origine.png
  • Une boîtier puissance de type MYJG40W [4] alimente l'ensemble de la découpe laser : du 5V pour la carte-mère, du 24V pour les moteurs (via la carte-mère), et du 20 000V pour le tube CO2 qui permet d'allumer le laser.
  • Une carte-mère permet de contrôler les moteurs et l'allumage du laser, et fait la jonction avec le PC de l'utilisateur via un câble USB. Elle alimente directement les moteurs via des drivers intégrés à la carte, et contrôle le laser via une laison PWM (inversée) avec l'alimentation : 5V correspond à l'extinction du laser, tandis que 0V l'allume au maximum.
  • Un panneau de contrôle sur la découpeuse laser assorti d'un écran LED permet de régler la puissance du laser (de 0% à 100%) sans passer par le logiciel. Ce panneau est directement relié à l'alimentation.
  • L'utilisateur envoie du G-Code à la carte-mère Moshisoft [5] via le logiciel propriétaire Moshidraw, qui est ensuite interprété par la carte-mère afin de commander les moteurs et le laser.
  • Une tête laser, qui reçoit le faisceau laser venant du tybe CO2 par un système de miroirs, et peut se déplacer sur des rails selon les axes X et Y.
  • Deux moteurs pas à pas qui permettent à la tête laser de se déplacer selon les axes X et Y.
  • Deux endstops (interrupteurs) qui envoient un signal à la carte-mère lorsque la tête laser a atteint son origine. Ils fonctionnent en mode "normally closed", ce qui signifie que le circuit est normalement fermé (donc du courant circule) et que lorsque l'interrupteur est actionné, le circuit s'ouvre et le courant est coupé.
Branchements d'origine[modifier | modifier le wikicode]

Nous voulons dans un premier temps remplacer la carte-mère originale vers une carte ouverte, nous avons donc étudié ses branchements d'origine :

  • Un bloc de quatre fils du boîtier puissance : un pour l'alimentation 24V des moteurs, un de 5V pour celle de la carte, une masse et un fil de contrôle du laser par PWM.
  • Un bloc de trois fils pour les endstops : un fil d'alimentation commun et un fils de signal pour chacun.
  • Deux blocs de quatre fils, un pour chaque moteur : chacun nécessite une paire de fils pour chaque sens de rotation (horaire et anti-horaire).

Remplacement de l'électronique[modifier | modifier le wikicode]

La carte Smoothie[modifier | modifier le wikicode]
SchemaSmoothie.png

Pour remplacer la carte-mère, nous avons choisi une carte de type Smoothieboard contrôlée par son firmware Smoothie, qui est une alternative Open Source à un prix raisonnable (moins de 100€), facilement configurable par la modification d'un simple fichier texte et disposant de drivers intégrés permettant de contrôler des moteurs pas à pas. De plus une carte de ce type équipe déjà certaines de nos machines.

Nous avons donc retiré la carte initiale en prenant note des branchements originels, et avons mis en place la Smoothieboard en la branchant de la façon suivante [6] :

  • Les fils d'alimentation 24V et le ground sur le bloc "12-24V".
  • Pas de branchements sur le bloc "5V" car la carte sera alimentée en 5V par la Rapspberry Pi.
  • Les deux ensembles de quatre fils seront branchés sur les prises "M0" et "M1" pour les moteurs des axes X et Y respectivement.
  • Nous séparons l'alimentation commune aux deux endstops, puis branchons la paire de fils reliée à l'endstop de l'axe X sur la prise "X min", et les fils de l'endstop Y sur la prise "Y min" en position "normally closed" (soit les fils verts et bleus sur le schéma).
  • Enfin, nous relions le fil de contrôle du laser à la prise "P2.5 (-)", qui peut servir de PWM.
Premiers résultats[modifier | modifier le wikicode]
Branchements de la smoothieboard

Cela fait, nous sommes passé en phase de test. Pour cela, nous avons utilisé LaserWeb pour envoyer du Gcode à la carte Smoothie afin de voir les réactions de la machine :

  • Les moteurs se déplacent dans la bonne direction, mais pas à la bonne distance ; de plus il y a un phénomène de "tressautement" qui fait que les moteurs s'arrêtent parfois une seconde avant de repartir, occasionnant des irrégularités de gravure [7].
  • Le firmware Smoothie inclut un module laser (logiciel) qui permet à la Smoothieboard de contrôler un laser branché sur la pin adéquate. Malheureusement ce module laser, bien qu'activé, ne fonctionnait pas ; nous avons donc dû recréer un module pour actionner la PWM, activé par un Gcode personnalisé. C'est à dire que nous avons ajouté du code dans le fichier de config de Smoothie pour lui dire d'effectuer l'action "activer la PWM du laser" lorsqu'il recevait le Gcode qu'on a configuré :
 switch.laserfire.enable 				true 		
 switch.laserfire.output_pin 			2.5!v 			# connect to laser PSU fire
 switch.laserfire.output_type 			digital 		#
 # /!\ commands for firing/shutting down the laser are inverted! /!\
 switch.laserfire.input_on_command 		M106 			# laser off
 switch.laserfire.input_off_command 		M107			# laser on
 switch.laserfire.startup_state 			true

Nous ensuite dû configurer LaserWeb pour qu'il envoie un tel Gcode lors de la phase d'allumage du laser.

  • Les endstops marchent (ils coupent le courant lorsque le moteur est à son point 0), mais la carte ne les prends pas en compte et continue de faire avancer le moteur lorsqu'il est arrivé à son point d'arrêt, ce qui l'abîme beaucoup.

Après quelques recherches, nous avons conclu que le firmware Smoothie n'est pas adapté pour l'interface LaserWeb, et nous avons donc flashé le firmware grbl dans la carte Smoothieboard.

Configuration du Firmware[modifier | modifier le wikicode]

Le firmware grbl[modifier | modifier le wikicode]

Pour flasher grbl dans la Smoothie, il faut télécharger la version Smoothie de grbl et la placer dans la carte mémoire de la Smoothieboard [8]. Une fois le nouveau firmware flashé, nous avons dû le configurer pour qu'il soit adapté à nos moteurs. La configuration du firmware grbl est très simple : c'est un système clé-valeur [9], pour le modifier il faut envoyer des instructions à la carte sous la forme "$clé=valeur" par l'intermédiaire d'un logiciel capable d'envoyer du Gcode, comme LaserWeb.

Calibrage[modifier | modifier le wikicode]

Tout d'abord, nous avons commencé par calibrer le déplacement des moteurs, qui dépends du paramètre "step per millimeter" ($100 et $101 pour les moteurs X et Y respectivements). Nous lui avons demandé via une injection de Gcode de parcourir une certaine distance, nous avons mesuré cette distance et avons ajusté le paramètre "stp/mm" en fonction de la formule :

stp/mm = stp/mmoriginel * (distance demandée/distance parcourue)

Ensuite, nous avons calibré la vitesse et l'accélération maximale des moteurs, soit les paramètres $110/$111 et $120/$121 respectivement. Ne disposant pas des documentations des moteurs, nous avons utilisé une méthode empirique : nous avons augmenté la vitesse des moteurs jusqu'à ce qu'ils se mettent à caler, et nous avons choisi une vitesse maximale légèrement inférieure.

Enfin, nous avons tenté de déterminer une accélération maximale idéale : en effet, une accélération trop forte fait manquer des pas au moteur, provoquant des décalages de position, tandis qu'une accélération trop faible ralenti considérablement la vitesse d'utilisation du laser. Nous nous sommes par exemple fondés sur le bruit que faisait les moteurs lorsqu'ils étaient soumis à une trop forte accélération pour en ajuster la valeur.

Valeurs pour notre machine (à titre d'exemple!)[modifier | modifier le wikicode]

Largeur = 300mm Hauteur = 220mm

 $100=314.400
 $101=314.600
 
 $110=5000
 $111=5000
 
 $120=5000
 $121=5000

Ajout d'un serveur LaserWeb4 sur une Raspberry Pi [10][modifier | modifier le wikicode]

Présentation du concept et configuration[modifier | modifier le wikicode]
Schéma final.png

Pour contrôler la carte Smoothieboard, nous devons utiliser un logiciel permettant d'envoyer du Gcode ; nous avons choisi LaserWeb4 car c'est un logiciel accessible par le navigateur (pas besoin d'installer quoi que ce soit) et qu'il équipe déjà une autre de nos découpeuse laser.

Mais pour permettre à chacun d'utiliser LaserWeb, nous avons besoin d'un serveur sur lequel LaserWeb est installé et qui sera relié à la Smoothieboard. Nous avons donc choisi d'utiliser une Raspberry Pi pour jouer ce rôle : c'est un mini-ordinateur alimenté par la distribution Raspbian, qui est une architecture Linux. Cette Raspberry est reliée à la carte Smoothieboard par un câble USB.

Afin de faciliter l'utilisation de la Raspberry, nous avons commencé par la configurer : nous avons désactivé l'affichage graphique pour économiser de la mémoire vive, et nous avons autorisé la connexion en ssh pour pouvoir contrôler la Raspberry à distance tant qu'elle était reliée au réseau. Enfin, nous lui avons attribué une adresse IP fixe dans le DHCP.

  • Démarrage en mode console : tapez dans un terminal les commandes suivantes :
 sudo raspi-config

puis choisir : "3 Boot Options" > "B1 Desktop / CLI" > "B2 Console Autologin".

  • Autoriser l'accès SSH :
 sudo raspi-config

puis choisir : "5 Interfacing Options" > "P2 SSH" > "Yes".

  • Pour lui affecter une adresse IP fixe : afficher la page de configuration de votre routeur, afficher les éléments connectés, repérer l'adresse MAC de votre Raspberry, puis ajouter cette adresse MAC dans la liste des machines possédant une adresse IP fixe.
Installation de laserWeb4[modifier | modifier le wikicode]

Une fois la Rapsberry configurée, nous pouvons nous connecter à elle en ssh pour la suite des opérations par la commande : "ssh pi@adresseip" en remplacant "adresseip" par l'adresse IP choisie pour la Raspberry.

Afin d'installer et d'utiliser LaserWeb, nous avons besoin de Git et de Nodejs :

  • Node 6.x :
 curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
 sudo apt-get install -y nodejs
  • Git :
 sudo apt-get install git
  • Installation de LaserWeb4 :
 git clone https://github.com/LaserWeb/lw.comm-server.git
 cd lw.comm-server
 sudo npm install serialport --unsafe-perm --build-from-source
 sudo npm install

Maintenant nous allons faire en sorte que le serveur s'allume automatiquement au démarrage de la Raspberry :

 sudo cp /home/pi/lw.comm-server/lw.comm-server.service /etc/systemd/system/lw.comm-server.service
 sudo systemctl enable lw.comm-server.service
 sudo systemctl start lw.comm-server

Une fois ces opérations réalisées, chaque fois que la Raspberry sera rallumée, elle s'authentifiera et lancera automatiquement le serveur LaserWeb4 et le rendra disponible sur le réseau local via le port 8000 par défaut.

Utilisation[modifier | modifier le wikicode]

Intérieur du boîtier élec de la découpeuse après modifications

Pour utiliser LaserWeb4, il faut se connecter au réseau local et taper dans la barre URL du navigateur Chrome (LaserWeb ne marche pas avec les autres navigateurs web) : "adresseip:8000" en remplacant "adresseip" par l'adresse ip donnée à la Raspberry lors de la configuration du DHCP.

Une fois LaserWeb4 lancé, il faut configurer LaserWeb :

  • Dans l'onglet "Comms", pour se connecter à la Raspberry il faut entrer "addressip:8000" dans la zone "Server Connection" (remplacer "adresseip" par l'adresse IP de la Raspberry). Pour se connecter à la Smoothieboard, il faut dans la zone "Machine Connection" sélectionner les paramètres "USB", "/dev/ttyACMx" (x=0, 1, ...) et "Baudrate = 115200". Si la connexion est réussie, on observe le message "Firmware grbl 1.1 detected".
  • Dans l'onglet "Settings", il faut sélectionner et appliquer le profil "Generic GRBL machine", puis ajuster les paramètres de hauteur et de largeur en fonction de celles de votre machine.

Sources et documentations[modifier | modifier le wikicode]

Soutenir Movilab

Vous pensez que nous allons dans le bon sens ? Si vous en avez l'envie nous vous invitons à nous rejoindre ou à faire un don.