====== CNC modulaire ====== * Auteurs : [[:user:resonance:|reso-nance]] et [[:user:thome:|Thomé]] * Date : 06/2014 * Licence : libre ! * Contexte : stage, recherches, pédagogie * Fichiers : {{:projets:cnc-modulaire:cnc-modular-data.zip|cnc-modular-data.zip}} {{tag>cnc arduino moteur metal}} ===== Description ===== L'idée est de réaliser un axe robotisé que l'on retrouve souvent dans les machines à commandes numérique (CNC), comme les fraiseuses numériques et autres imprimantes 2D ou 3D (voir notre page [[:materiel:fabrication-numerique:|fabrication numérique]]). Le premier test est pédagogique, il consiste à utiliser des composants pour la plupart basiques et à montrer comment ça marche. Ensuite, on pourrait perfectionner le modèle et obtenir des axes modulaires pour réaliser des choses en 2D ou en 3D, comme sur cette [[https://www.youtube.com/watch?v=-Nw3TCcR6hc|vidéo]]. {{vimeo>97939056?600x400}} Dans cette vidéo, un buste imprimé en 3D (de notre super stagiaire) se déplace de haut en bas. ===== Inspirations ===== [[https://www.youtube.com/watch?v=wkk4zv96Dvo|Modular desktop CNC machines]] {{:projets:cnc-modulaire:cncmodular.png?600|}} [[http://monograph.io/james/m-mtm|Modular Machines that Make : Cardboard CNC]] {{:projets:cnc-modulaire:cncmodular-cardboard.png?600|}} ===== Matériaux ===== {{:projets:cnc-modulaire:cnc-modulaire_composants.jpg?600}} ===== Tutoriel ===== ==== Dessin 2D ==== Pour la conception 2D, on a ajouté un créneau dans la matière pour incruster les deux supports des axes porteurs dans la planche contre plaqué (représentée ici sous la première pièce). {{:projets:cnc-modulaire:cnc-modular-2d.png?250}} ==== G-Code ==== Pour la création du G-Code on a utilisé Cambam, avec plusieurs fonctions : perçage, contour intérieur (pour les trou) et extérieur (pour découper la pièce), poche pour le créneau dans la planche. On a utilisé un outil de 3mm de diamètre. Pour les quatre petits trous, on a utilisé le perçage pour fixer le moteur. {{:projets:cnc-modulaire:screen_shot_06-05-14_at_06.32_pm.png?600}} Pour le contour extérieur, on ajoute deux attaches pour que la pièce ne se détache pas a la fin de l'usinage. {{:projets:cnc-modulaire:screen_shot_06-05-14_at_06.28_pm.png?600}} On a ajouté 4 petits coins pour que la pièce puisse prendre le diamètre de l'outil et permettre à la pièce de bien s'imbriquer. {{:projets:cnc-modulaire:screen_shot_06-05-14_at_06.13_pm.png?600}} ==== Fraiseuse ==== On a réduit à 20% ou 30% la vitesse de la fraiseuse pour ne pas abîmer la pièce ou pour ne pas la casser. {{:projets:cnc-modulaire:screen_shot_06-05-14_at_06.52_pm.png?600}} ==== Circuit électronique ==== Dans un premier temps, on a essayé avec une Arduino Roméo qui a l'avantage d'avoir un pilote de moteur l298, mais cela n'a pas marché. On s'est donc reporté vers une solution plus classique : une Arduino (n'importe laquelle, pas nécessairement une Mega) et un pilote de moteur L298 de Keyes, {{:projets:cnc-modulaire:cnc-modulaire-connectique.jpg?600}} Pour pouvoir faire fonctionner l'alimentation d’ordinateur on place un fil de cuivre entre le PS_ON et le COM. {{:projets:cnc-modulaire:connector_alim_pc.jpg|}} ==== Code ==== Voir le code complet : [[http://reso-nance.org/files/lfo/projets/cnc-modulaire/cnc-modular-data/code/cnc_modular/cnc_modular.ino|cnc_modular.ino]] /* * CNC MODULAR * Action : une pièce posée sur un axe CNC bouge de façon aléatoire. * Placer la pièce au milieu de l'axe. */ #include int revolution = 200; // 200 pas pour le NEMA17 int vitesse; // de 0 a 120 int tours; int tabTours [] = { 20, 100, 30, 70 }; // doit etre pair int tabVitesse [] = { 20, 90, 80, 40 }; int compteur = 0; int nbValues = 4; int maxTours = 0; Stepper cnc (revolution, 9, 10, 11, 12); // steps négatif = descente, positifs = montee void setup() { // rien ! } void loop() { if (compteur == nbValues ) { setRandomValues(); compteur = 0; } // --------- MONTEE --------- // tours = tabTours[compteur]; vitesse = tabVitesse[compteur]; cnc.setSpeed(vitesse); cnc.step(revolution * tours); delay(random(50,3000)); // --------- DESCENTE --------- // tours = tabTours[(nbValues - 1) - compteur]; vitesse = tabVitesse[(nbValues - 1) - compteur]; cnc.setSpeed(vitesse); cnc.step(-revolution * tours); delay(random(50,3000)); compteur++; } void setRandomValues() { for (int i = 0; i < nbValues; i++) { int val = random(20, 120); tabVitesse[i] = val; tabTours[i] = map(val, 20, 120, 5, 140); } } ==== Modèle 3D ==== Pour faire le modèle 3D, on a scanné notre stagiaire avec Skanect puis on l'a travaillé sur Blender et exporté en .stl pour l'imprimer en 3D. {{:projets:cnc-modulaire:cnc-modulaire7.jpg?600}} ===== Galerie ===== {{gallery>galerie?&crop&lightbox }}