Introduction: CNC - Carton - Controled With Joystick

About: Tech, DIY and Arduino Realisation If you liked it , come check our sites Website :http://technofabrique.wixsite.com/techno-fabrik Google +:https://plus.google.com/109229784299061111421

CNC - carton - controled with joystick ( by TechnoFabrique)

[FR]

Le projet ( réalisé par technofabrique) Commander un traceur 3 axes avec un manette comportant 2 joystick ( 1 XY et 1 Z). Chaque axes sera finalisé par deux interrupteurs de fin de course qui permettront de conditionner le déplacement . Lorsqu'un interrupteur est actionné, une LED témoin s'allume.

En savoir plus : http://bit.ly/2uU2lkx

[EN]

CNC made in carton and controlled with joysticks. The device use Arduino .

Do It Yourself : http://bit.ly/2uU2lkx

Step 1: Materials You Need

(1) Arduino Uno

(3) step motor NEMA 17 (12V)

(3) drivers A4988

(6) limis switchs

(6) LEDs & résistances

(3) capacitor 47uF

(2) Joysticks

carton

glue gun

wire

Step 2: Setup

(FR)

ETAPE 1 : Moteurs pas-à-pas NEMA 17 + Driver A4988

Connecter le moteur au driver associé. Alimenter en +12V les moteurs avec un condensateur en parallèle de 47uF. Alimenter le driver avec le +5V de l'arduino. Connecter les liaisons step et dir qui contrôleront le pas du moteur et le sens de rotation.

ETAPE 2 : Joysticks On connecte le joystick à une résistance et le point milieu est acheminé vers une entrée analogique.

ETAPE 3 : Interrupteurs de fin de course On connecte un interrupteur avec une LED et des résistances . Le point milieu est amené vers une entrée analogique.

Step 3: Code

Programme (codé en C)// 10/08/2017 - Programme C - Traceur X Y commande par joystick  //                            MATERIEL : 3 moteurs pas a pas NEMA 17 //                                       3 drivers A4988  //                                       1 alimentation 12 V 1A + alimentation arduino //                                       resistances //                                       6 leds  // Ce programme a pour objectif de :  //                                     -  commander les moteurs pas a pas avec les joysticks pour ecrire sur un support papier //                                     -  lorsqu'un fin de course est actionné, une led s'allume et le joystick ne permet plus d'aller dans la direction du fin de course //                                      // Programme réalisé par Techno_Fabrik // ********************BIBLIOTHEQUES**************************** //********************DECLARATIONS**************************** int A4988_pas2 = 6;  // moteur pas a pas nema 17 commande par le pas ( nombre de tours ) et la direction ( HIGH ou LOW) int A4988_direction2 = 7; int A4988_pas = 9;  int A4988_direction = 10;  int A4988_pas1 = 11;  int A4988_direction1 = 12;  int joystick1,joystick2,joystick3;// valeur des joysticks int findecourseGD, findecourseHB, findecoursestylo; int findecourseHB_bug_H=0, findecourseHB_bug_B=0, findecoursestylo_bug_B=0, findecoursestylo_bug_H=0, findecourseGD_bug_G=0, findecourseGD_bug_D=0;  // permet de ne pas prendre en compte les faux contacts    //********************SETUP*********************************** void setup() // On initialise les pins 2 et 3 en sortie { pinMode(A4988_pas,OUTPUT);  pinMode(A4988_direction,OUTPUT); pinMode(A4988_pas1,OUTPUT);  pinMode(A4988_direction1,OUTPUT); pinMode(A4988_pas2,OUTPUT);  pinMode(A4988_direction2,OUTPUT); Serial.begin(250000); } //**************************  FONCTIONS  *********************************** // *********** BLOQUER LE MOTEUR LORS DE L'ACTIVATION DES FIN DE COURSE ******************* int fdcbug (int x,int fdc, int mini, int maxi)// fonction permettant d'éviter les faux contacts {   if ( (fdc>mini) && (fdc < maxi) )   {     x = 30;   }   else    {     x = x-1;     if (x<0) x=0;   }   return x; } int interrupteur_max (int fdc_bug, int joystick, int joystickmax)  {   if (fdc_bug>1)   {      if ( joystick>joystickmax )      {         joystick = joystickmax;      }   }   return joystick; } int interrupteur_min (int fdc_bug, int joystick, int joystickmin)  {   if (fdc_bug>1)   {      if ( joystick // *********** COMMANDER LES MOTEURS GRACE AUX JOYSTICKS *******************   void moteur ( int J, int J_min, int J_max, int dir_pap, int step_pap ) {   if( J  > J_max)   {     digitalWrite(dir_pap,HIGH);     for(int x = 0; x < 1; x++)        {                          // Permet de faire un PAS à une certaine allure. Pour tourner plus vite, changer le delay jusqu'à 1 , pour ralentir, le changer jusqu'à 30           digitalWrite(step_pap,HIGH); // On fait un tour avec 200 pas pour le Nema 17            delay(5);            digitalWrite(step_pap,LOW);            delay(5);             }   }    if( J  < J_min)   {     digitalWrite(dir_pap,LOW);     for(int x = 0; x < 1; x++)        {                          // Permet de faire un PAS à une certaine allure. Pour tourner plus vite, changer le delay jusqu'à 1 , pour ralentir, le changer jusqu'à 30           digitalWrite(step_pap,HIGH); // On fait un tour avec 200 pas pour le Nema 17           delay(5);            digitalWrite(step_pap,LOW);            delay(5);             }   } }   // **************************** BOUCLE ************************** void loop() { // *********** LECTURE DES ENTREE ANALOGIQUES : joystick + capteur de fin de course ***************   joystick1=analogRead(A0);     joystick1=map(joystick1,0,525,0,100);   joystick2=analogRead(A1);     joystick2=map(joystick2,0,525,0,100);   joystick3=analogRead(A2);   joystick3=map(joystick3,290,1025,0,100);//5 95   findecourseGD=analogRead(A3);   findecourseHB=analogRead(A4);   findecoursestylo=analogRead(A5);    // *********** BLOQUER LE MOTEUR LORS DE L'ACTIVATION DES FIN DE COURSE ******************* findecoursestylo_bug_H= fdcbug(findecoursestylo_bug_H,findecoursestylo,300,500); findecoursestylo_bug_B=fdcbug(findecoursestylo_bug_B,findecoursestylo,15,300); joystick3=interrupteur_max(findecoursestylo_bug_H,joystick3,59); joystick3=interrupteur_min(findecoursestylo_bug_B, joystick3,11); findecourseGD_bug_D= fdcbug(findecourseGD_bug_D,findecourseGD,100,200); findecourseGD_bug_G= fdcbug(findecourseGD_bug_G,findecourseGD,230,500); joystick2=interrupteur_max(findecourseGD_bug_G,joystick2,65); joystick2=interrupteur_min(findecourseGD_bug_D,joystick2,65); findecourseHB_bug_H= fdcbug(findecourseHB_bug_H,findecourseHB,200,500); findecourseHB_bug_B= fdcbug(findecourseHB_bug_B,findecourseHB,30,200); joystick1=interrupteur_max(findecourseHB_bug_H,joystick1,65); joystick1=interrupteur_min(findecourseHB_bug_B,joystick1,65); // *********** COMMANDER LES MOTEURS GRACE AUX JOYSTICKS ******************* moteur(joystick3,10,60,A4988_direction2,A4988_pas2); moteur(joystick1,40,80,A4988_direction,A4988_pas); moteur(joystick2,40,80,A4988_direction1,A4988_pas1);    }

Step 4: Video of Presentation