MOX CNC

Multi usage CNC

Cette machine est basée sur la OX CNC disponible sur openbuilds. Je me suis inspiré de celle là par sa robustesse apparente ainsi que par sa possibilité de modularité.
De plus, l’idée de partir sur les profiles openbuilds m’ont semblé une bonne chose : facilité d’assemblage, bonne tenue des profilés, disponibilités des accessoires. Donc… Zou !

PS : une première version du build est disponible sur openbuilds, site que je vous recommande : plein d’idées peuvent s’y trouver pour vous. La page sur openbuils sera également maintenue, les contenus seront semblables bien que sur openbuils des schémas électrique sont ajoutés.

Au niveau de la commande :

Je suis partit du principe que je voulais une machine multi usage, il me fallait donc un moyen de contrôle assez flexible, en sachant les contraintes qui peuvent arriver avec le côté « impression 3D ». Dès lors, je suis partit sur un arduino mega + carte RAMPS. J’avais déjà expérimenté auparavant les A4988, c’était donc pour moi un gain de temps.

Le firmware pour l’impression 3D sera Sprinter. Pas vraiment d’argument, Marlin semblais également prometteur, il a donc fallu choisir.

Le contrôle des températures de l’extrudeur et du plateau est géré par deux régulateurs REX-C100 sur thermocouple (j’en avais en stock, autant utiliser ce que j’avais déjà).

Le contrôle de la machine en mode « CNC », se fera via le port parallèle et EMC2Axis, que j’avais aussi testé par le passé. Des problèmes se présenterons, mais une chose à la fois.

Assemblage du châssis

L’assemblage du châssis a été une chose assez aisée mais qui m’a pris plus de temps que prévu : je me suis un peu sur-estimé. Et surtout, je n’ai pas eu envie de regarder les 2h de vidéo pour l’assemblage de du frame donc j’ai été à tâtons. Bref, en deux soirées, l’ensemble était monté.
Juste un petit conseil : mettez les moteurs latéraux sur les plaques avant de les monter : des vis sont masquées par le rail, j’ai donc dû démonter une partie pour y placer mes moteurs et remonter ensuite.

Une fois le châssis monté, il a de la gueule ! Le système semble respecter ses angles, les déplacements sont doux. Reste à brancher les moteurs pour tester mais là, on passe au point suivant.

Test des moteurs

Afin de tester facilement mes moteurs, j’ai réalisé un petit code arduino avec un « protocole » me permettant de lui demander de changer de sens, de faire x tours, avec un temps de x µs.

Le premier problème est que sur mon grand axe (X dans mon cas), je n’ai pas un, mais deux moteurs. Il faut donc que le second tourne en sens inverse de son complémentaire. Soit j’inverse le câblage, soit je lui ferai une inversion dans le firmware de la machine (la seconde option sera retenue).

Configuration de Sprinter

Là, j’ai perdu beaucoup de temps en tests, retests, rere-tests… Je m’étais approché des valeurs pour les « step per units », mais il a fallu chipoter avec la configuration des endstops, et le dé-bridage de la gestion de température.

Et pour la gestion du moteur complémentaire ?

Je vous ai entendu venir de loin :-). J’ai utilisé la sortie pour le second extrudeur (E1), et j’ai rajouté dans l’ensemble du firmware la recopie sur E1 des informations envoyées sur X. Cela me permet de gérer toute ma configuration dans le fichier Configuration.h, proprement.

Oui mais… et pour le mode CNC, il faudra tout décâbler pour passer sur le port parallèle ?

Sur le coup, j’ai été fainéant. Non, je ne veux rien décâbler, on ne touche pas un câblage une fois la cabine électrique faite (sauf pour corriger des erreurs). Je suis partit sur l’idée d’avoir un interrupteur rotatif afin de choisir le mode Laser-CNC / Impression 3D. Par défaut, c’est le mode impression 3D qui prime, rien de spécial n’est fait. Si l’on passe sur l’autre mode, c’est un peu différent : tout ce qui est

  • Gestion PID
  • Gestion du port série
  • calcul des pas à réaliser
  • Interprétation du GCode

Est suspendu et les entrées du port parallèle directement recopiées sur les drivers moteurs. L’ensemble est fait en allant directement travailler sur les registres, sans passer par le langage haut niveau de l’arduino.

Beaucoup de complications pour pas grand-chose, non ?

Oui… mais non !
EMC2Axis gère directement la régulation des moteurs pour les accélérations et mouvements. Je n’avais pas envie que l’arduino n’interfère avec la liaison moteur – PC. Accéder directement au registre me permet de gagner quelques µs à chaque passage dans le loop(), le dé-bridage des autre fonctions me permet de garder également le même nombre d’instructions exécutées à chaque passage dans le loop, m’évitant de perdre du temps, et de peut-être louper des pas envoyés par le pc.

Câblage de la cabine et des moteurs

A ce niveau, les photos parleront d’elles-même 🙂 .
Rien de spécial au niveau du câblage. Je teste pour les câbler au travers de connecteurs USB afin d’éviter d’avoir des connecteurs douteux ci et là.

La première impression 3D

Bon ben on y arrive tout doucement. J’avais une ancre en STL qui trainait quelque part. Je l’importe dans Cura et on va voir ce que cela donne…

Le résultat n’est pas si mal : l’état de surface de la partie supérieure n’est pas des plus jolies (« trous » au niveau des alvéoles), et un léger recourbement au niveau des pointes surement à cause d’un refroidissement trop rapide.