Catégories
Liens
Ceci est une ancienne révision du document !
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 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 vidéo.
Dans cette vidéo, un buste imprimé en 3D (de notre super stagiaire) se déplace de haut en bas.
Voir le code complet : 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 <Stepper.h> 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); } }
Autre photos / gallerie ou autre