OpenFactory-Xcarve
Page liée : Montage CNC par OpenFactorySainté
Présentation de la fraiseuse numérique par Mr Bidouille
configuration du firmware grbl pour Xcarve (large)[modifier | modifier le wikicode]
$3=3 (dir port invert mask:00000011) $4=0 (step enable invert, bool) $5=0 (limit pins invert, bool) $6=0 (probe pin invert, bool) $10=3 (status report mask:00000011) $11=0.020 (junction deviation, mm) $12=0.002 (arc tolerance, mm) $13=0 (report inches, bool) $20=1 (soft limits, bool) $21=0 (hard limits, bool) $22=1 (homing cycle, bool) $23=3 (homing dir invert mask:00000011) $24=25.000 (homing feed, mm/min) $25=750.000 (homing seek, mm/min) $26=250 (homing debounce, msec) $27=1.000 (homing pull-off, mm) $100=40.000 (x, step/mm) $101=40.000 (y, step/mm) $102=188.000 (z, step/mm) $110=8000.000 (x max rate, mm/min) $111=8000.000 (y max rate, mm/min) $112=500.000 (z max rate, mm/min) $120=250.000 (x accel, mm/sec^2) $121=250.000 (y accel, mm/sec^2) $122=50.000 (z accel, mm/sec^2) $130=760.000 (x max travel, mm) $131=750.000 (y max travel, mm) $132=80.000 (z max travel, mm)
Pour plus de détails, voir la doc grbl 0.9: https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9
Générer du gcode[modifier | modifier le wikicode]
Infos sur les fraises/matériaux/vitesse de coupe par le Labomédia
Depuis Fusion 360[modifier | modifier le wikicode]
Ca fonctionne out of the box
TODO: expliquer comment faire
Depuis OpenScad[modifier | modifier le wikicode]
Depuis HeeksCAD[modifier | modifier le wikicode]
HeecksCAD est un logiciel de CAO simple, semble disposer d'un module CAM : HeecksCNC
Pilotage de la xcarve[modifier | modifier le wikicode]
La solution technique que nous avons retenue pour piloter la x-carve utilise un RaspBerry Pi. Ce dernieri délivrera d'un coté l'interface home-machine au travers d'une interface HTTP, et dialoguera de l'autre avec la carte GRBL de la x-carve à laquelle il envera les commandes G-Code.
Plusieurs solutions existent pour implémenter cette solution. Nous en avons testé deux qui se ressemblent beaucoup :
- chilipeppr - cncjs
Les interfaces et fonctionalités des deux outils sont très proches. La principale différence entre ces deux solutions réside sur le fait qu'avec Chilipeppr, c'est le client HTTP transmet le g-code tout au long du job, alors qu'avec cncjs, le g-code est stocké sur le raspbery. Cette dernière solution est plus sécure, car dans le cas d'un arrêt du client (fermeture du navigateur, coupure réseau...) le travail en cours n'est pas interrompu.
les procédures d'installation des deux solutions sont documentées ci-dessous.
Installer une Raspbian[modifier | modifier le wikicode]
Traduction en français de l'interface[modifier | modifier le wikicode]
Installation de Chilipeppr[modifier | modifier le wikicode]
Site web de Chilipeppr
Créer un utilisateur chilipeppr[modifier | modifier le wikicode]
$ sudo adduser --system --home=/opt/chilipeppr chilipeppr
Installation de l'interface serial <-> http-json[modifier | modifier le wikicode]
Télécharger le packet
$ sudo su - chilipeppr --shell=/bin/bash $ wget -qO- https://github.com/chilipeppr/serial-port-json-server/releases/download/v1.88/serial-port-json-server-1.88_linux_arm.tar.gz | tar xvz $ mv serial-port-json-server-1.88_linux_arm serial-port-json-server
Test du service[modifier | modifier le wikicode]
$ sudo su - chilipeppr $ /opt/chilipeppr/serial-port-json-server/serial-port-json-server -hostname xcarve
vous devriez obtenir quelque chose comme ça :
chilipeppr@raspberrypi:~$ /opt/chilipeppr/serial-port-json-server/serial-port-json-server -hostname xcarve 2016/03/10 17:02:25 main.go:89: Version:1.88 2016/03/10 17:02:25 main.go:96: Hostname: xcarve 2016/03/10 17:02:25 main.go:102: Garbage collection is on using Standard mode, meaning we just let Golang determine when to garbage collect. 2016/03/10 17:02:25 main.go:115: Starting server and websocket on 192.168.0.233:8989 2016/03/10 17:02:25 main.go:118: The Serial Port JSON Server is now running. 2016/03/10 17:02:25 main.go:119: If you are using ChiliPeppr, you may go back to it and connect to this server. 2016/03/10 17:02:25 main.go:129: You can enter verbose mode to see all logging by starting with the -v command line switch. 2016/03/10 17:02:26 main.go:144: Your serial ports: 2016/03/10 17:02:26 main.go:151: {/dev/ttyACM0 Arduino Srl Arduino Uno (ttyACM0) [] 754313433343516021C1 02 Arduino Srl 0043 2a03} 2016/03/10 17:02:26 main.go:151: {/dev/ttyAMA0 ttyAMA0 [] }
faites ctrl+c pour arrêter le service et reprendre la main.
Installation en tant que service (lancement au boot)[modifier | modifier le wikicode]
Passer root (si votre utilisateur n'a pas les privilèges requis pour vous promouvoir root, passez d'abord pi comme indiqué ci-dessous)
chilipeppr@raspberrypi:~$ su - pi Mot de passe : pi@raspberrypi:~ $ sudo su - root@raspberrypi:~#
Créer le fichier d'unité systemd
vim /etc/systemd/system/chilipeppr-serial-json.service
placez-y le contenu suivant et sauvegardez :
[Unit] Description=Chilipeppr serial port json server After=network.target [Service] ExecStart=/opt/chilipeppr/serial-port-json-server/serial-port-json-server -hostname xcarve ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target Alias=chilipeppr-serial-json.service
Pour lancer le service :
systemctl start chilipeppr-serial-json
Vérifiez qu'il tourne :
root@raspberrypi:~# ps -ef |grep json-server | grep -v grep root 2281 1 1 17:26 ? 00:00:01 /opt/chilipeppr/serial-port-json-server/serial-port-json-server -hostname xcarve root@raspberrypi:~#
Pour l'activer au boot :
sudo systemctl enable --system chilipeppr-serial-json.service
rebootez le raspberry et vérifiez que le service a bien été démarré grace à la commade
ps -ef |grep json-server | grep -v grep
Se connecter à l'interface[modifier | modifier le wikicode]
A faire : tuto d'utilisation de la CNC, tout le protocole pour l'utiliser.
Installation de CNC.JS[modifier | modifier le wikicode]
Créez le user cncjs
$ sudo adduser --system --home=/opt/cncjs cncjs
Installez le gestionnaire de paquets nodejs
$sudo apt-get install npm
passez root puis cncjs
pi@raspberrypi:~ $ sudo -s root@raspberrypi:/home/pi# su - cncjs --shell=/bin/bash
Déterminez le dossier d'install des paquets du framework npm
echo "prefix=~/node_modules" >> ~/.npmrc
Mettez a jour npm
npm install -g npm
installez la lib libicu-dev
sudo apt-get install libicu-dev
installez l'application cncjs
$npm install -g cncjs
Permettez à l'utilisateur cncjs d'accéder au port série
pi@raspberrypi:~ $ sudo adduser cncjs dialout
Test du service cncjs[modifier | modifier le wikicode]
Lancer le service en ligne de commande depuis un terminal
$ su - cncjs --shell=/bin/bash cncjs@raspberrypi:~$ node_modules/bin/cnc
vous devez obtenir quelque chose comme ça :
Server is listening on 0.0.0.0:8000
depuis un navigateur web, connectez-vous à l'interface : http://<@IP_du_raspberry>:8000, vous devez voir l'interface de pilotage de la CNC
revenez à la fenêtre terminal, faites ctrl+c pour arrêter le service et reprendre la main.
Installation en tant que service (lancement au boot)[modifier | modifier le wikicode]
Passer root (si votre utilisateur n'a pas les privilèges requis pour vous promouvoir root, passez d'abord pi comme indiqué ci-dessous)
$ su - pi Mot de passe : pi@raspberrypi:~ $ sudo su - root@raspberrypi:~#
Créez le fichier d'unité systemd
vim /etc/systemd/system/cncjs.service
placez-y le contenu suivant et sauvegardez :
[Unit] Description=Service cncjs After=network.target [Service] ExecStart=/opt/cncjs/node_modules/bin/cnc ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target Alias=cncjs.service
Démarrez le service :
systemctl start cncjs
Vérifiez qu'il tourne :
root@raspberrypi:~# ps -ef |grep cncjs | grep -v grep root 24914 1 99 16:10 ? 00:00:03 node /opt/cncjs/node_modules/bin/cnc root@raspberrypi:~#
Pour l'activer au boot :
sudo systemctl enable --system cncjs.service
rebootez le raspberry et vérifiez que le service a bien été démarré, toujours grâce à la commade
ps -ef |grep cncjs | grep -v grep
Construction d'une boîte de protection[modifier | modifier le wikicode]
Besoins[modifier | modifier le wikicode]
La boîte répond d'abord a un besoin de sécurité : protéger les individus en cas d'accident ou de problème, si une pièce ou un morceau s'envole il restera enfermé dans la boîte.
Il s'agit aussi de limiter le bruit et éviter que la poussière se balade partout.
Matériels[modifier | modifier le wikicode]
- Plaque en bois MDF (neuf)
- 19 mètres de cornières en zinc (neuf)
Comment ça marche ?[modifier | modifier le wikicode]
La CNC est protégé par un capot en glace.
Au niveau de la broche un compresseur va soufflé la poussière, elle sera aspiré par un entonnoir en dessous.
Sources d'informations[modifier | modifier le wikicode]
- Le wiki de grbl : https://github.com/grbl/grbl/wiki/
- Le wiki de shapeoko http://www.shapeoko.com/wiki/index.php