Réalisation d'un robot 4 axes

(Sorry, no english version)

(Difficulté : **** difficile)

Vidéo Youtube du robot en test sur 2 axes (1)

Vidéo Youtube du robot en test sur 4 axes (2)

Vidéo Youtube du robot avec le boîtier de commande (3)

Ce projet consiste à réaliser un robot 4 axes pour le perçage, fraisage, gravure, laser, plasma, impression 3D...

Il y a 2 grandes familles de robot ou CNC : les linéaires et les rotatifs. (Il y a aussi des robots mixtes).

Les robots linéaires sont plus faciles à réaliser mais l'objet à usiner est à l'intérieur du robot : le robot est encombrant et/ou l'objet est petit.

Les robots rotatifs où l'objet est extérieur au robot : on peut donc fabriquer des "grands" objets avec un "petit" robot.

Ici nous souhaitons fabriquer un robot rotatif, 4 axes, économique, "simple" à réaliser sans avoir recours à du fraisage, tournage etc... (Mais une imprimante 3D est quasi indispensable)

Dans un robot, la difficulté, c'est d'avoir à la fois de la précision, de la puissance et de la vitesse (c'est d'ailleurs, ce qui fait le coût des gros robots industriels).

Dans un robot rotatif, le moindre jeu est amplifié quand le robot se déploie et le petit jeu de l'engrenage à peine perceptible sur le premier axe du robot peut se traduire par plus d'un mm de jeu au niveau de l'outil...

Le jeu peut être angulaire ou axial...

Ici, nous cherchons donc une solution simple et économique pour avoir un mouvement angulaire précis, jeux minimum, répétitif, sans "backslash", et suffisamment puissant. (Et suffisamment rapide)

Pour ça, il faut abandonner les engrenages. (Et, évidemment, les servos RC). Il existe des solutions sans jeu comme les "Harmonic drive" mais c'est cher.

Il faut, en plus, que ce soit réalisable en atelier avec une perceuse à colonne, un étau et c'est à peu près tout.

Les quatre axes sont à peu près identiques.

Le premier axe est vertical : rotation du robot dans un plan horizontal sur un angle d'environ 240° (peut-être un peu moins).

Le 2e axe est horizontal : rotation du robot dans un plan vertical, angle environ 240° (peut-être un peu moins).

Le 3e axe est // au 2e à une distance de 205 mm.

Le 4e axe est // au 3e à une distance de 250 mm et supporte l'outil.

Par la suite, on pourrait rajouter un 5e axe horizontal qui porterait l'outil.



1ère partie : conception mécanique


Nota : moteur ou motoréducteur ?


Moteur pas à pas :
https://www.ebay.fr/itm/Moteur-pas-a-pas-Nema-17-Bipolaire-45Ncm-2A-40mm-4-Fils-pour-Imprimante-3D/392581657408?_trkparms=ispr%3D1&hash=item5b67b0b340:g:0dsAAOSwbv9d8JvY&enc=AQAFAAACgBaobrjLl8XobRIiIML1V4Imu%2Fn%2BzU5L90Z278x5ickkyMJZWL%2BqFSgQ3TOOe%2FNr7o%2FxdiUsgX0y7nu9gAyovGEBAn2%2Bic3crqi9A7%2BdDteTNppuFKlTifZGmAbwseu25LH3nhQKnAKF3VLoaXds6V8gv3Q8D1T1pmhNVytjZzwMz6ps9lHboIo8xRkZE7QxtmUAaz9tgI%2F5KdmmIT%2B6QVscfgtJMSPNP9JtnfBmFDmUT5xLwuHCzNtexV8%2Fg0SnGF7P3hQAX84ACZgEoL2S%2FW%2BRxLOwl5HHqsIxVwZtE%2B3pIIoxoW%2B91TARbrXRQIoYMAEJXFJUuOdyWSfZFmZD0Ho%2F%2BBQPGHDPkAu057VeTwKooRm0TuFW%2BFAc1Hu7eyvKOro1pKpOXR8td0UAFcybO61Xuv1acGHZct%2BPiDhH%2FLWLFoEii0v9J2Tl0i27%2BtMkn9rsFGUXL0qZbiAD5WUDqQz94NpsH4pDPDARVI%2Bz1VRsb61impwM3L3tQ4E06fo31cZ4tN%2FVgqVvu9r7fyX5253Or3b1klRVYD7VFvX2me%2BO%2B%2BlKVQIj2Mg5JVwYvrcPGhb236wTrRke8fDH9goWSbHHdIC8H48x1khVg65QjBxWUXFxZpfXhBeOPR6zAOYgkqoiSOBQR2TEMJhI7L%2BhdA2lv3KdS0JepjnyqmQIYlLUS0aEH2bFao3OkjiSluYjBWH2TFVE2BtQZOarME74tLx5OUKnwBEUx1MwtOaTktd3zOfTMDlwHT9YEbQvg7r8DCPq1iH4BvvC%2FBo%2BNRpNBt0t2jBO%2Bdetzvmc6cZ9AMtH3T8HN2hHyvikYmhHsfgEJJ9IrbP%2F37wL3v4Lj%2BRWCT8%3D&checksum=3925816574083c79c7213ca54a53812b74658bdb3bfd
Précision : la plus petite poulie fait un diamètre de 12 environ, ce qui fait, avec la couronne de 95, une démultiplication de 8 environ. Le pas angulaire du moteur est de 1.8° soit 0.0314 rad. Le pas angulaire de la couronne est donc de 0.0039 rad. entièrement déployé, le bras du robot fait 2 fois 150 soit 300. Un pas fait donc 0.0039x300 = 1.2 mm.
C'est trop grand : pas assez de précision, il faudrait des micro-pas, et encore...

Motoréducteur :
https://www.ebay.fr/itm/1-27-Moteur-Pas-a-Pas-Nema-17-Reducteur-Planetaire-Integre-1-8-Degres-3-9V/293622452249?_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D20160908105057%26meid%3D7bd99869f5074f3e97f087d4e3da59b8%26pid%3D100675%26rk%3D3%26rkt%3D15%26mehot%3Dnone%26sd%3D164315639045%26itm%3D293622452249%26pmt%3D1%26noa%3D1%26pg%3D2380057&_trksid=p2380057.c100675.m4236&_trkparms=pageci%3A03b2aaf9-fa5b-11ea-86c7-56439af03f6b%7Cparentrq%3Aa5b50c221740ace085d67e28fff97bf0%7Ciid%3A1
(Axe de 8)
Précision : on peut installer une poulie plus grande de 30 dents soit un diamètre de 20 environ, ce qui fait, avec la couronne de 95, une démultiplication de 5 environ. Le pas angulaire du moteur est de 1.8° soit 0.0314 rad. Le  pas angulaire du motoréducteur (1/27) fait 0.0011rad. Le pas angulaire de la couronne est donc de 0.00022 rad. entièrement déployé, le bras du robot fait 2 fois 250 soit 500. Un pas fait donc 0.00022x500 = 0.11 mm.
Environ 1/10 : c'est suffisamment petit...
Vitesse : on doit pouvoir faire tourner (avec accélération progressive) le moteur autour de 5t/s. Le motoréducteur peut donc tourner à 0.19t/s. la couronne peut donc tourner à 0.038t/s soit 0.244rad/s.
Avec le bras déployé à moitié à 250 mm, pour parcourir 100 mm, il faut donc environ 0.1s ce qui est correct.
Jeu angulaire : sur le motoréducteur, nous avons mesuré un jeu angulaire de 0.007 rad (ce qui est insuffisant pour la précision du robot). Mais avec la couronne, on démultiplie de 5 soit un jeu de 0.0014. Bras déployé à 500 mm (le maximum) cela fera un jeu de 0.6 ce qui est correct mais limite. (C'est pour cette raison que nous avons limité les entraxes des axes à 250 (ce qui fait quand même 500 vers l'avant et 500 vers l'arrière). Pour de la précision, il faut donc déployer le bras du robot le moins possible.

Conception :

Un profilé alu de 85x45 e2 découpé reçoit un motoréducteur pas à pas de 42x42 (fixé par 4 vis M4F90x10). Une poulie crantée entraîne une courroie crantée qui entraîne une couronne en ABS imprimé en 3D de 95 de diamètre et 15 de hauteur. Les deux extrémités de la courroie passent par un trou de 6 dans la couronne. Les deux extrémités sont reliées ensemble et reliées à un ressort qui les tire vers l'axe de la couronne pour supprimer le jeu. Le ressort est maintenu par 1 vis écrou M3x20. La couronne est centrée sur un tube acier D30 et appuyée sur un roulement large mais fin 30x42x7 qui est appuyé sur le profilé alu (côté extérieur) (percé à D38) et centré par 3 vis à M3x120° sur le profilé alu. Le même roulement est centré de la même manière sur la face opposée du profilé. Un tube PVC D40 (plomberie), h 41 est inséré à l'intérieur du profilé alu pour éviter la déformation et l'écrasement du profilé.

Le tube acier D30 traverse le profilé alu (D38) et traverse également le 2e profilé alu (percé à D30) à entraîner qui est plaqué sur la couronne. 3 vis écrous M4x15 l'entraînent en rotation. Le 2e profilé alu reçoit aussi Un tube PVC D40 (plomberie), h 41 inséré à l'intérieur du profilé alu pour éviter sa déformation et son écrasement.

2 bouchons ABS imprimés en 3D ferment le tube de 30 et sont traversés par 6 ou 3 tiges filetées M3x120 avec 12 ou 6 écrous M4 qui bloquent le tout. Le trou restant permet le passage des câbles des moteurs et de la broche.

L'ensemble constitue un système rigide sans jeu, avec un minimum de déformation et assez facile à réaliser avec des moyens limités. Il faut juste une fraise à étage pour percer correctement les grands trous dans les profilés (D22, D30, D38) : https://www.ebay.fr/itm/3-12-4-12-4-20-4-32-5-35-4-42mm-HSS-CO-M35-Fraise-Foret-Forage-%C3%A0-%C3%89tage-Drill-Bit/283816787878?ssPageName=STRK%3AMEBIDX%3AIT&var=585243783853&_trksid=p2060353.m2749.l2649

Une excroissance (imprimée avec la couronne), sur le bord de la couronne permet d'actionner un switch (fixé par 2 boulons M3x20) qui permet au système de faire son 0.

Nomenclature (par axe) :

Vue d'un axe en coupe : la courroie et la poulie de sont pas encore crantées, il manque le ressort....
Le profilé du haut est découpé pour laisser passer la poulie...
robot01.jpg

.
Ce système, assez simple à réaliser, permet un angle d'environ 240°, très peu de jeu, relativement rapide, puissant et pas trop lourd.

Nota : sur le 4e axe, on pourrait peut-être remplacer le motoréducteur par un simple moteur pas à pas...


Améliorations possibles :
Même conception pour les 4 axes :
La couronne du premier axe est fixée au 2e axe par un morceau de profilé intermédiaire.
La couronne du 2e axe est fixée au 3e axe avec un profilé plus long (entraxe 250)
.
La couronne du 3e axe est fixée au 4e axe avec le même profilé (entraxe 250).
Le 4e axe entraîne un morceau de profilé pour fixer un moteur de la broche par exemple
Les câbles passent à l'intérieur des axes, un câble par moteur avec un connecteur DB9 mâle au bout de chaque câble...

Vue des 4 axes coupés :
robot02.jpg

.

La même vue non coupée :
robot03.jpg
.
Vue de l'autre côté :
robot04.jpg
.


me partie : réalisation mécanique des 4 axes

Vue des pièces imprimées en 3D :
robot07.jpg
.
robot07a.jpg
.
robot07b.jpg
.

Une bonne partie des morceaux réalisés, prêt à être assemblés :
La base horizontale avec 4 tiges filetées M8 sur laquelle est monté un profilé et un 2e profilé pour le 2e axe
Les 4 moteurs pas à pas et réducteurs (et leurs câbles et connecteurs).
Un moteur est équipé d'une poulie
Les connecteurs SUBD9 et leurs capots
Les couronnes imprimées en 3D
Le tube PVC à découper
Le tube acier D30 à découper
Les 2 bras en alu percés et peints
Les bouchons imprimés en 3D et peints
(Une fraise à étage est vraiment indispensable pour percer proprement les 17 trous ronds de gros diamètres)

robot08.jpg
.

Le robot en cours de montage.
L'axe 1 (vertical) est assemblé :
Le robot est fixé par 4 tiges filetées M8 provisoirement sur une plaque blanche pour les essais.
robot09.jpg
.
Le robot en cours de montage avec les roulements à billes et les axes en acier : de gauche à droite :

robot10.jpg
.
robot11.jpg
.
robot12.jpg
.
robot13.jpg
.
robot14.jpg
Vue de l'ensemble : les moteurs ont été rapprochés de l'axe vertical (il reste les trous des anciens emplacements), les courroies sont renforcées.
Il manque les microswitchs et leurs butées, les câbles et la broche.
L'ensemble marche bien. L'idéal serait d'augmenter encore la rigidité au niveau de l'axe vertical : des roulements et un axe encore plus gros.
Une fois les microswitchs et leurs butées et les câbles installés, Nous allons pouvoir faire des essais électriques un peu plus sérieux...
robot15.jpg
.
Nous avons installé un système provisoire de contrepoids qui diminue (d'un facteur 3 environ) la tension de la courroie de l'axe 2 mais en augmentant la masse, l'inertie et l'encombrement (et en diminuant certains débattements).
Vue du côté opposé avec le contrepoids provisoire, il faudrait remplacer l'acier par du plomb pour gagner en encombrement :
robot16.jpg
.
Vue du robot complet avec les 4 câbles moteur reliés aux moteurs et aux switchs et le câble 2 fils de broche
câble 6 fils :
Noir : + boucle 1
Vert : - boucle 1
Rouge : + boucle 2
Bleu : - boucle 2
Jaune : commun switch
Blanc : contact switch

Le contrepoids a été remplacé par un ressort beaucoup plus léger, moins encombrant, moins d'inertie et plus efficace
robot17.jpg
.
Vue de l'autre côté :
robot18.jpg
.
La partie électromécanique du robot est à peu près terminée...
Les premiers essais sont concluants : après avoir réglé et testé les switches, le déplacement avec une petite carte de commande de moteur pas à pas, en testant les 4 axes un par un, tout se passe bien. Il faut surveiller les collisions, en particulier avec le contrepoids qui n'était pas prévu au départ. Reste à voir les vitesses maxi que l'on pourra obtenir en gérant les accélérations et décélérations. Et la résolution, en utilisant des micro-pas.
.

me partie : électronique
Pour la commande du robot, il nous faut une carte microprocesseur Arduino, les 4 interfaces pour les moteurs pas à pas et au moins un relais pour commander le moteur de broche.
Nous avons décidé d'essayer d'utiliser la carte mère d'une imprimante 3D très répandue (la nôtre) : une Ender 3 Pro.
La Ender 3 Pro a été fabriquée à des centaines de milliers d'exemplaires et il y a tout un écosystème matériel et logiciel autour de cette imprimante.
Cette carte mère contient tout ce qu'il faut :
robot19.jpg
.
robot20.jpg
.
Et nous en avons trouvé une à moins de 8 €...
https://www.cdiscount.com/informatique/cartes-meres/carte-mere-ender-3/f-10765-auc9581251775561.html

robot21.jpg
Il faut aussi un kit pour la programmer : avec ce kit, relié au connecteur ISP, et connecté à la prise USB d'un PC, cette carte est vue comme un Arduino normal.
Attention de choisir un kit USBasp compatible avec un Atmega 1284P et muni d'un adaptateur pour un connecteur 2x3 :

https://www.ebay.fr/itm/USBASP-Programmateur-Microcontroleurs-A-Base-D-Arduino-Atmega-1284P/274627136018?hash=item3ff10d8a12:g:jN8AAOSwTu9f6Etj


robot22.jpg
.
Nous y avons rajouté l'afficheur et la molette de commande de l'Ender 3 pro...
https://www.ebay.fr/itm/3D-Printer-LCD-Screen-Display-Kit-Replacement-For-Creality-3D-Ender-3-3s-Pro-B2/324057332793?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649

robot23.jpg

.

Le "potentiomètre" n'en est pas un : c'est un commutateur à impulsions pour se déplacer dans les menus. Il a aussi un contact pour appuyer dessus pour valider.

En principe, pour l'électronique, tout est là, à part l'alimentation 24 V et l'alimentation du moteur de broche.


Brochages :


Brochage des moteurs Arduino : les moteurs ont un connecteur mâle 6 broches au pas de ~2 mm

1   A+

2   B+

3   Bcommun

4   Acommun

5   A-

6   B-


Brochage des motoréducteurs : les moteurs ont un connecteur mâle 6 broches et sont vendus avec le connecteur femelle équipé de 4 fils

Rouge   A+

Bleu      A-

Noir      B+

Vert      B-


Il faut donc relier les fils du motoréducteur à la carte Arduino : dans l'ordre :

Rouge

NC

Noir

Bleu

NC

Vert


Tests préliminaires :

Nous avons procédé à des tests préliminaires en reliant l'axe 1 (vertical) de l'imprimante au câble du moteur Y (moteur débranché) de notre Ender 3 pro. Après avoir créé une pièce de plastique circulaire assez grande, nous l'avons "imprimé" en 3D en PLA. Une fois le lit et l'extrudeur de l'imprimante chauds, l'imprimante a fait son 0 en X Quand elle a fait son 0 en Y, quand le robot a été dans une position adéquate, nous avons appuyé manuellement sur le switch Y de l'imprimante. Puis l'imprimante a fait son zéro en Z et s'est mise "à imprimer" (sans plastique).

Le robot fonctionne très bien, l'amplitude maxi (bras déployé) était de l'ordre de 60 mm, la vitesse maxi entre 10 et 20 mm/s.

Le moteur du robot "chante" comme l'imprimante (peut-être un peu moins fort).

Le mouvement du robot est très lisse et très répétitif: il arrive toujours au même endroit et semble précis. Il faudra faire des mesures géométriques.

Nous allons brancher un 2e axe (sans doute l'axe 2) sur le connecteur Y de l'imprimante et continuer les essais.

Cela montre qu'une carte Ender 3 Pro à 8 euros permet au moins de tester les axes.

On pourra aussi essayer de monter l'axe 2 et l'axe 3 en // (inversé) sur le connecteur de l'imprimante.

Vidéo Youtube du robot en test sur 2 axes (1)

Vidéo Youtube du robot en test sur 4 axes (2)

Après avoir relié l'alimentation 19V 6A d'un ancien PC portable à la carte mère Ender 3 Pro, reliée à l'afficheur et à la molette. Nous avons relié l'axe X de la carte à un moteur pas à pas.

Simuler les 2 thermistances du lit chauffant et de l'extrudeur avec 2 ajustables (en bas) pour faire croire à la carte que le lit chauffant est à 100°C et l'extrudeur à 250°C et nous avons installé une carte micro SD avec un Gcode de test. Le moteur tourne normalement, les pas et les micro-pas sont visibles sur l'oscilloscope.

A noter que la carte n'a pas fait les Zéros.

On voit aussi l'interface ISP à relier sur le connecteur à côté de la Led bleu pour programmer la carte Ender 3 Pro comme un Arduino classique

3robot25.jpg

Nous avons ensuite connecté :

Les 4 axes fonctionnent correctement quand on "imprime" un fichier Gcode
Évidemment, l'axe 3 et 4 tournent lentement, toujours dans le même sens.
Nous avons ensuite imprimé en 3D, en ABS noir, en deux morceaux, réunis par 6 vis, un capot incliné pour loger l'afficheur et sa molette.
Nous allons ensuite loger la carte mère (et l'alimentation) dans un petit boîtier 1/2 rack :

A l'intérieur :
Sur la face avant :
Sur le dessus : le bouton d'arrêt d'urgence

Sur la face arrière :
robot26.jpg
.

Nous avons ensuite connecté :

Nous avons permuté les fils Vert et Noir du connecteur Y pour inverser le sens du moteur Y. (Noir, Vert, Rouge, Bleu).
Les switchs sont compatibles (sens et polarité) avec ceux de la carte Ender 3 Pro.
L'expérience montre que l'utilisation de la carte Ender 3 Pro et son logiciel est très pratique pour la mise au point du robot.

A partir de maintenant, le robot peut faire son zéro (bras en l'air).
Nous allons pouvoir faire des mesures de répétabilité : exemple on imprime trois fois de suite un objet très simple et on vérifie (au comparateur) que l'outil s'arrête exactement au même endroit...

En cas de gros souci, on appuie sur le bouton d'arrêt d'urgence qui coupe l'alimentation de la machine et sert aussi de mise en marche :
https://www.ebay.fr/itm/660V-10A-Bouton-poussoir-pour-larret-durgence-1NO-1NC-DPST-champignon-rouge/361977631521?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
robot24.jpg



Vidéo Youtube du robot avec le boîtier de commande (3)

Nous pouvons tester directement les axes avec le code Ender 3 Pro.
Malheureusement :
Malgré tout, avec un petit Gcode, on peut tester les 4 axes avec axe1 axe2 rapides (environ 1s pour parcourir les 100mm.
Voici un exemple de Gcode commenté pour tester le robot :
Dans le petit code qui suit, après avoir fait les 3 zéros, on déplace légèrement les 4 axes puis on déplace les 2 axes rapides 1 et 2 pour dessiner plusieurs fois un "carré"

;09 test_robot_petit commenté code Ender 3 Pro
; a priori Xmax=235, Ymax=235, Zmax=250 pas de E max
; a priori Z et E sont limités en vitesses max

GCODES qui pourraient nous être utiles : https://reprap.org/wiki/G-code/fr
G0 X235 ; déplacement linéaire X axe 1
G1 X0 Y0 Z0 F1500 ; déplacement linéaire au 0
G28 ; met tous les axes à 0
M92 ; définit le nombre de steps/mm (80, 80, 80, 80) par exemple au lieu de 80, 80, 400, 93)
    M92 X80 Y80 Z80 E080
M106 ; marche ventilateur (broche)
M107 ; arrêt ventilateur (broche)
M108; vitesse extrusion (axe 4) a priori pas gérée dans Ender 3 Pro/Marlin
M201 ; accélération maximum d'impression
    M201 X1000 Y1000 Z1000 E01000
M202 ; vitesse maxi accélération déplacement des axes
    M202 X1000 Y1000 Z1000 E0 1000
M208 ; débattement maxi des axes
    M208 X1000 Y1000 Z1000 E01000
M211 ; active/désactive butée logicielle
    1 :active, 0 : Désactive
    M211 X0 Y0 Z0 E00
M300 : jouer un son
    M300 S300 P1000 joue 300Hz pendant 1000 ms
M564 ; limite des axes
    M564 S0 au delà des limites des axes
    M564 S1 intérieur des limites des axes
M574 : régle configuration butées


M82 ; mode extrudeur absolu
G92 E0 ; met l'extrudeur à 0
G28 ; met tous les axes à 0
G1 X0 Y0 Z0 F1500 ; déplacement linéaire au 0
G1 X23 Y0 Z0 E0 ; déplacement linéaire X axe 1
G1 X23 Y23 Z0 E0 ; déplacement linéaire Y axe 2
G1 X23 Y23 Z25 E0 ; déplacement linéaire Z axe 3
G1 X23 Y23 Z25 E10 ; déplacement linéaire E axe 4
G1 X0 Y0 Z0 E0 ; déplacement linéaire X Y Z E vers la position zéro

G0 F25000 ; réglage vitesse
G0 X235 ; déplacement linéaire X axe 1
G0 Y235; déplacement linéaire Y axe 2
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe

G0 F25000 ; réglage vitesse
G0 X235 ; déplacement linéaire X axe 1
G0 Y235; déplacement linéaire Y axe 2
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe

G0 F25000 ; réglage vitesse
G0 X235 ; déplacement linéaire X axe 1
G0 Y235; déplacement linéaire Y axe 2
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe


G0 F25000 ; réglage vitesse
G0 X235 ; déplacement linéaire X axe 1
G0 Y235; déplacement linéaire Y axe 2
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe

G0 F25000 ; réglage vitesse
G0 X235 ; déplacement linéaire X axe 1
G0 Y235; déplacement linéaire Y axe 2
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe

M84 X Y Z E ;Désactive tous les moteurs X Y Z E
; FIN

Nota : avec les accélérations Ender 3 Pro (on peut peut-être les augmenter sans perdre de pas), le robot pourrait aller plus vite pour un déplacement plus important.
Montage du support moteur de broche
robot27.jpg
.
robot28.jpg
La broche CNC et son support ont été installés sur le robot ainsi que son alimentation et le potentiomètre de réglage sur le coffret (ouvert)
Le poids supplémentaire du moteur nous a conduit a renforcé le système de ressort de compensation des masses :
robot29.jpg
.
Le robot avec son coffret ouvert :
robot29.jpg




me partie : le logiciel Arduino
Il y a 3 solutions :
Nous allons commencer par la 3e solution simple et rapide.
Ensuite on peut envisager d'en rester là et d'écrire séparément un convertisseur de Gcode (en Visual basic?, sous Excel ?)
qui transforme un Gcode linéaire : X Y Z (E=0) (ce qui permet de récupérer les Gcode issus de programme CFAO classique, voire d'écrire le Gcode à la main...)
en Gcode rotatif X= Axe1, Y= Axe2, Z=Ase3 et E=Axe4 en gardant, dans un premier temps l'outil vertical pour simplifier
Ensuite on pourrait améliorer le GCode linéaire : X, Y, Z, E= angle de l'outil / verticale...


Installation du code 1e solution :
https://howchoo.com/ender3/ender-3-bootloader-firmware-update-marlin
https://www.ender3.fr/turoriel-marlin-1-1-9-touch-mi-pour-la-ender3/

Il y a deux solutions : soit utiliser une carte Aduino Uno, soit utiliser un kit USBasp.
Voici la 1e solution.

  1. Télécharger la version ancienne 1.8.5 d'Arduino Windows depuis https://www.arduino.cc/en/main/OldSoftwareReleases
  2. Lancer arduino.exe
  3. Fichier, Exemples, 11ArduinoISP, ArduinoISP
  4. Croquis, Inclure une bibolothèque, U8glib
  5. Fichier, Préférences, dans URL de gestionnaire de cartes  supplémentaires, coller "https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json", OK
  6. Outils, Type de carte, Sanguino
  7. Connecter la carte Arduino UNO au PC (connecteur USB - USB imprimante) :
  8. Une Led rouge de l'Arduino Nano s'allume, l'autre clignote
  9. Outils, Type de carte, Arduini/Genuino Uno
  10. Outils, Port, COM3
  11. Croquis, Téléverser
  12. On reçoit le message :"Les options de compilation, Le croquis utilise 4420 octets..., Les variables..."
  13. Conserver l'Arduino Uno connecté au PC
  14. Relier la carte Arduino Uno à la carte Ender 3 Pro via un câble en nappe avec un adptateur à chaque bout ISP 2x3 broches de chaque côté. ATTENTION au sens du câble de chaque coté
  15. La Led bleu de la carte Ender 3 pro s'allume
  16. Outils, Type de carte, Sanguino
  17. Outils, Programmeur, Arduino as ISP
  18. Outils, Graver la séquence d'initialisation
  19. Ca peut durer plusieurs minutes...
  20. On reçoit un message "Gravure de la séquence réussie" ***************PB
  21. Déconnecter toutes les cartes
  22. Télécharger la dernière version du code Marlin
  23. La modifier
  24. Compiler
  25. Connecter le PC à la Ender 3 Pro avec un cordon Mini USB
  26. Outils, Type de carte, Sanguino
  27. Outils, Programmeur, Arduino as ISP
  28. Croquis, Téléverser
  29. On reçoit le message :"Les options de compilation, Le croquis utilise..., Les variables..."
  30. Débrancher la carte Ender 3 pro du PC
  31. Connecter le carte Ender 3 pro : le nouveau programme est en place
 
Installation du code 2e solution :

Voici la 2e solution.
On peut aussi installer un bootloader : charger un petit code dans la carte mère qui permet ensuite de la programmer via le connecteur mini
USB. C'est une solution plus sure que le USBasp (avec le USBasp, on peut, si on règle mal les fusibles, rendre la carte mère inutilisable.

Installation d'un bootloader :
https://www.ender3.fr/installation-dun-bootloader-avec-un-usbasp/
Une fois le bootloader chargé, il n'y a plus de firmware dans la carte mère.
.
Avant de modifier le logiciel, nous allons reprogrammer la carte en suivant ce tutoriel en français :
https://www.ender3.fr/turoriel-marlin-1-1-9-touch-mi-pour-la-ender3/
En passant directement au paragraphe "Mise à jour de Marlin 1.1.9 ender3.fr"
On charge le code Marlin,
https://www.ender3.fr/images/FICHIERS/Ender3.fr_MarlinV1.1.9_Touch-MI_V2.zip
on compile
Et on programme la carte mère (juste pour voir si tout marche bien) et on la teste avec notre petit bout de Gcode... (en augmentant les déplacements X Y Z et E par exemple de 0 à 1000)

Ensuite, il ne reste plus qu'à modifier le code Marlin....
Il faut commencer par le décortiquer...
Dans le répertoire : example_configuration\Crealty\Ender 3
A modifier dans configuration.h :

Recette complète d'installation :
  1. Se procurer un programmeur ISP USBasp compatible Atemega1284P pour quelques € comme celui-ci : https://www.ebay.fr/itm/USBASP-Programmateur-Microcontroleurs-A-Base-D-Arduino-Atmega-1284P/274627136018?hash=item3ff10d8a12:g:jN8AAOSwTu9f6Etj
  2. Télécharger le driver pour le programmeur ISP USBasp https://protostack.com.au/download/USBasp-win-driver-x86-x64-v3.0.7.zip
  3. Le dézipper et le lancer : clic sur InstallDriver.exe: les pilotes sont intallés, clic sur Terminer
  4. Télécharger Progisp172 https://docs.google.com/file/d/0B-mqOQablplXTnhJeUt4UTYtY1k/edit
  5. Le dézipper et le lancer : clic sur progisp.exe
  6. Dans la fenêtre, PROGRAM, PROGISP est grisé et USBASP est coloré
  7. Brancher le programmeur ISP dans une prise USB du PC. Maintenant dans PROGRAM, PRGISP et USBASP sont colorés
  8. Si ça ne marche pas, essayer de changer de prise USB
  9. Débrancher le programmeur ISP du PC
  10. Débrancher l'alimentation de la carte mère Ender 3 Pro
  11. Débrancher le câble de l'afficheur sur le carte mère Ender 3 pro
  12. Brancher, dans le bon sens, le connecteur 2x3 de l'USBasp sur la carte mère
  13. Raccorder la prise USB sur le PC dans la bonne prise USB : la LED rouge de l'USBasp et la LED bleue de la carte mère doivent s'allumer
  14. PC : dans Progisp172, Command, Read Flash : la barre verte en bas avance au fur et à mesure de la lecture...
  15. BUFFER permet de voir que le fichier a été correctement chargé
  16. File, Save Flash, Type : Hex, Nom: Original, Enregistrer
  17. Le fichier original.hex fait 283 ko, conserver original.hex en sécurité
  18. Débrancher l'USBasp du PC puis de la carte mère
  19. Fermer Progisp172
  20. Télécharger la version ancienne 1.8.5 d'Arduino Windows depuis https://www.arduino.cc/en/main/OldSoftwareReleases
  21. Lancer arduino.exe
  22. Fichier, Préférences, dans la fenêtre, en face de Url de gestionnaire de carte supplémentaire
  23. Coller https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json
  24. OK, OK
  25. Outils, Type de carte, Gestionnaire de carte
  26. Type : Tout, taper sanguino
  27. Sélectionner Sanguino et clic sur Installer (c'est un peu long), Fermer
  28. Outils, Type de carte, Sanguino
  29. Outils, Processeur, Atmega1284P 16MHz
  30. Croquis, Inclure une bibliothèque, Gérer les bibliothèques
  31. Rechercher et sélectionner U8glib, Installer, Fermer
  32. Télécharger depuis https://marlinfw.org/meta/download/
  33. La version 1.1.9.1 du logiciel Marlin pour Ender 3 Pro
  34. Dézipper : un répertoire Marlin est créé. (Conserver le zip par sécurité)
  35. Recopier Marlin/example-configurations/Creality/Ender-3 les 4 fichiers .h dans Marlin_robot
  36. Arduino : Ouvrir Marlin.ino
  37. Clic sur l'onglet configuration.h
  38. Ligne 601, remplacer :
  39. Default Axis Steps Per Unit (steps/mm) : X, Y, Z, E0 : 80, 80, 400, 93 par 80, 80, 80, 80
  40. Default max Feed rate mm/s (override with M203) : X Y Z E0 : 500 , 500, 5, 25 par 500, 500, 500, 500
  41. Ligne 878, remplacer :
  42. #define X_BED_SIZE 220 par 999
    #define Y_BED_SIZE 220 par 999
  43. #define Z_MAX_POS 250 par 999
  44. Fichier, Enregistrer
  45. Croquis, Vérifier/Compiler (ça prend un moment...)
  46. Message "Le croquis utilise 122712 octets (94%) ..." montre que tout s'est bien passé
  47. Un fichier Marlin.ino.sanguino.hex est créé dans le répertoire \Marlin-1.1.x\Marlin-1.1.x\Marlin
  48. Lancer progisp172
  49. Débrancher l'alimentation de la carte mère Ender 3 Pro
  50. Débrancher le câble de l'afficheur sur le carte mère Ender 3 pro
  51. Brancher, dans le bon sens, le connecteur 2x3 de l'USBasp sur la carte mère
  52. Raccorder la prise USB sur le PC dans la bonne prise USB : la LED rouge de l'USBasp et la LED bleue de la carte mère doivent s'allumer, dans PROGRAM, PRGISP et USBASP sont colorés
  53. File, Load Flash, sélectionner Marlin.ino.sanguino.hex précédemment créé
  54. Clic sur [...]
  55. Clic sur Read en bas à gauche (pour régler les fusibles) DC F6 FD Lock value FF
  56. robot32.jpg
  57. Fermer la fenêtre
  58. robot33.jpg
  59. Clic sur Auto : la barre verte en bas avance au fur et à mesure de l'écriture : Programming flash... puis Verifying flash... puis Ready
  60. En haut de la fenêtre : Erase, Write Flash, Verifying Flash, Successfuly done
  61. Débrancher le programmeur USBisp de la carte mère, puis du PC
  62. Alimenter la carte mère : le logiciel doit être à jour : on peut le vérifier avec Prepare, Move axis, Move X, +10mm et vérifier que l"on peut dépasser 235 pour atteindre 999 avec la molette.
  63. Débrancher la carte mère
  64. Préparer le Gcode qui suit, copier dans une carte microSD (32 Go max), insérer dans la carte mère, alimenter la carte mère et lancer le Gcode :
  65. Le robot fait ses zéros, se déplace légèrement sur ses 4 axes, puis se déplace en faisant des mouvements rapides de plus en plus grands : attention aux collisions avec le robot lui-même, les objets alentour et l'utilisateur  !
;10 test_robot code Ender 3 Pro
; a priori Xmax=1000, Ymax=1000, Zmax=1000 pas de E max
; a priori Z et E ne sont pas limités en vitesses max

M82 ; mode extrudeur absolu
G92 E0 ; met l'extrudeur à 0
G28 ; met tous les axes à 0
G1 X0 Y0 Z0 F1500 ; déplacement linéaire au 0 vitesse lente
G1 X23 Y0 Z0 E0 ; déplacement linéaire X axe 1
G1 X23 Y23 Z0 E0 ; déplacement linéaire Y axe 2
G1 X23 Y23 Z25 E0 ; déplacement linéaire Z axe 3
G1 X23 Y23 Z25 E10 ; déplacement linéaire E axe 4
G1 X0 Y0 Z0 E0 ; déplacement linéaire X Y Z E vers la position zéro

G0 F25000 ; réglage vitesse
très rapide
G0 X100 ; déplacement linéaire X axe 1
G0 Y100; déplacement linéaire Y axe 2
G0 Z100; déplacement linéaire Z axe 3
G0 E100; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4


G0 F25000 ; réglage vitesse très rapide
G0 X200 ; déplacement linéaire X axe 1
G0 Y200; déplacement linéaire Y axe 2
G0 Z200; déplacement linéaire Z axe 3
G0 E200; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X300 ; déplacement linéaire X axe 1
G0 Y300; déplacement linéaire Y axe 2
G0 Z300; déplacement linéaire Z axe 3
G0 E300; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X400 ; déplacement linéaire X axe 1
G0 Y400; déplacement linéaire Y axe 2
G0 Z400; déplacement linéaire Z axe 3
G0 E400; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4


G0 F25000 ; réglage vitesse très rapide
G0 X500 ; déplacement linéaire X axe 1
G0 Y500; déplacement linéaire Y axe 2
G0 Z500; déplacement linéaire Z axe 3
G0 E500; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X600 ; déplacement linéaire X axe 1
G0 Y600; déplacement linéaire Y axe 2
G0 Z600; déplacement linéaire Z axe 3
G0 E600; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X700 ; déplacement linéaire X axe 1
G0 Y700; déplacement linéaire Y axe 2
G0 Z700; déplacement linéaire Z axe 3
G0 E700; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X800 ; déplacement linéaire X axe 1
G0 Y800; déplacement linéaire Y axe 2
G0 Z800; déplacement linéaire Z axe 3
G0 E800; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X900 ; déplacement linéaire X axe 1
G0 Y900; déplacement linéaire Y axe 2
G0 Z900; déplacement linéaire Z axe 3
G0 E900; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G0 F25000 ; réglage vitesse très rapide
G0 X1000 ; déplacement linéaire X axe 1
G0 Y1000; déplacement linéaire Y axe 2
G0 Z1000; déplacement linéaire Z axe 3
G0 E1000; déplacement linéaire E axe 4
G0 X0; déplacement linéaire X axe 1
G0 Y0; déplacement linéaire Y axe 2
G0 Z0; déplacement linéaire Z axe 3
G0 E0; déplacement linéaire E axe 4

G1 F5000 ; réglage vitesse moyen
G1 X0 Y0 Z0 E0 ; déplacement linéaire au 0
G1 X400 ; déplacement linéaire X axe 1
G1 F5000
G1 Y50; l'outil se positionne rapidement
G1 F500
G1 Y100 ; l'outil perce un trou lentement (pas tout à fait verticalement)
G1 F1500
G1 Y0
; l'outil se relève plus rapidement
G1 Y400 Z400 E400 ; l'outil se déploie horizontalement, axe vertical
G1 F5000
G1 Y450
; l'outil se positionne rapidement
G1 F500
G1 Y500 ; l'outil perce un trou lentement (pas tout à fait verticalement)
G1 F1500

G1 Y400; l'outil se relève plus rapidement
G1 X600 ; déplacement horizontal
G1 F1500
G1 Y50
; l'outil se positionne rapidement
G1 F500
G1 Y100 ; l'outil perce un trou lentement (pas tout à fait verticalement)
G1 F1500
G1 Y0
; l'outil se relève plus rapidement
G1 X400 ; déplacement horizontal
G1 F1500
G1 Y50
; l'outil se positionne rapidement
G1 F500
G1 Y100 ; l'outil perce un trou lentement (pas tout à fait verticalement)
G1 F1500
G1 Y0
; l'outil se relève plus rapidement

G1 Y0 Z0 E0 ; l'outil se rétracte horizontalement

M84 X Y Z E ;Désactive tous les moteurs X Y Z E
; FIN


On fait croire à la carte que l'on a une imprimante géante... (1m x 1m x 1m !)
Si tout marche bien on peut déjà usiner à partir de ce point-là (mais il manque le zéro du Z.)
On peut éventuellement le régler provisoirement avec un niveau sur le support de broche en le mettant horizontal avant la mise sous tension.
robot34.jpg

me partie : le logiciel PC
A venir...

Nous allons probablement utiliser la version gratuite (réservée aux amateurs) de Fusion 360, le logiciel de CFAO d'Autodesk.

.


me partie : les essais
A venir...
.



That's All, folks !

Écrivez-nous : 

email.gif


http://spt06.perso.libertysurf.fr

Compteur Global gratuit sans inscription


Commencé le 26/09/2020
A jour le 20/09/2021