Aller au contenu


Photo
- - - - -

aide programation CNC


  • Veuillez vous connecter pour répondre
124 réponses à ce sujet

#121 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 07 février 2017 - 01:04

L'arduino met du temps à réagir au contact c'est ça ? Il y a bien une résistance de rappel sur l'entrée ?
Pour la section de câble au contraire plus le diamètre est gros mieux c'est pour les longue distance, il y a moins de chute de tension. Tu as mesuré quelle tension tu as sur l'entrée de l'arduino?

#122 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 146 messages

Posté 07 février 2017 - 01:28

Bonjour non il n'y a pas de résistance, oui l'arduino met environ 1s à réagir et non je n'ai pas mesurer la tension

#123 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 018 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 08 février 2017 - 07:24

Comment as tu câblé ton microrupteur ? 

Tu as la masse le 5V et le pin de l'arduino chacun relié sur les pattes du microrupteur? 

Sinon c'est peut être que ton programme met trop de temps à vérifier l'état de tes boutons. Dans ce cas là il faut optimiser un peu ton code, ou tricher en mettant à plusieurs endroit les vérification d'état du bouton ou tout simplement mettre tes boutons sur interruption. =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#124 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 146 messages

Posté 08 février 2017 - 08:26

bonjour, concernant le branchement: la fin de course est branchée en NF, un fil vas au gnd de l'arduino et l'autre sur un pin de l'arduino. concernant le code le voici:

 EEPROM.get(1,position_actuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>position_actuelle && valeur<valeur_maxi)                  // si valeur > position_actuelle
           {
            Deplacement = valeur - position_actuelle;    // deplacement = valeur - position_actuelle
            NbPas = Deplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.149
            do                                          // Tourner de NbPas dans le sens horaire
              {if(digitalRead(FDC2)== LOW)
               stepper.step(1);                     
               i++;
              }while(i<NbPas);          //FDC1 = fin de course côté 6m
           }

bonne journee



#125 nouss08

nouss08

    Membre occasionnel

  • Membres
  • Pip
  • 146 messages

Posté 08 février 2017 - 09:42

aussi concernant la librairie accelstepper, j'ai effectuer quelques modif a mon code mais je ne suis pas sur d'avoir bien tous compris, je vous met les morceau de code que j'ai modifier, pouvez vous jeter un œil s'il vous plait? je ne l'ai pas encore essayer car la machine se situe maintenant dans mon entrepot a plusieurs km de chez moi et je n'y ai pas internet donc je prefere deja essayer d'avoir le moins d'erreur. merci a tous.

donc deja si j'ai bien compris, comme j'ai fait le code lors du deplacement du moteur, le moteur vas demarer a une vitesse de 50pas/sec et augmenter de 50pas/sec jusqu'à atteindre la vitesse max de 400pas/sec c'est bien ca? je vous met juste les extrais modifier, si il vous faut l'ensemble dite le moi et je le mettrai.

 

partie avant la fonction setup:

#include <AccelStepper.h>
#include <MultiStepper.h>

AccelStepper stepper(1, 12,13);

partie setup:

stepper.setMaxSpeed(400);
stepper.setAcceleration(50);  

partie loop deplacement :

{                             // positionnement de la scie mobile
 

         EEPROM.get(1,position_actuelle);                // lire position_actuelle dans l'EEPROM
         if (valeur>position_actuelle && valeur<valeur_maxi)                  // si valeur > position_actuelle
           {
            Deplacement = valeur - position_actuelle;    // deplacement = valeur - position_actuelle
            NbPas = Deplacement / PAS;                  // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0.149
            do                                          // Tourner de NbPas dans le sens horaire
              {if(digitalRead(FDC2)== LOW)
               stepper.move(1);                     
               i++;
              }while(i<NbPas);          //FDC1 = fin de course côté 6m
           }
           
           
         if (valeur<position_actuelle && valeur>decalage_depart )                   // si valeur < position_actuelle
           {
            Deplacement = position_actuelle - valeur;    // deplacement =  position_actuelle – valeur
            NbPas = Deplacement / PAS;                   // NbPas = deplacement / PAS
            i=0;                                        // PAS = 0,149
            do                                          // Tourner de NbPas dans le sens antihoraire
              {if(digitalRead(FDC1)== LOW)
               stepper.move(-1);
               i++;
              }while( i<NbPas);          //FDC1 = fin de course côté 30cm
           }
           if (valeur>decalage_depart && valeur<valeur_maxi)
         EEPROM.put (1,valeur);                         // Ecrire valeur dans l'EEPROM
          }

partie loop ettalonage:

{
 do                                          // Tourner de NbPas dans le sens antihoraire
              {
                longueur_etalonnage=(3199*PAS)+ decalage_depart; 
               stepper.move(-1);
               i++;
              }while(digitalRead(FDC1)== LOW) ;    //retour a 0 du chariot
              delay(3000);
              stepper.moveTo(3199); // avance du chariot de 1m
              
              EEPROM.put (1,(longueur_etalonnage)); //enregistrement position dans eeprom
              delay(3000);
               lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("etalonnage");
    lcd.setCursor(0,1);
    lcd.print("termine");
    delay(3000);
    lcd.clear();
                
}

merci d'avance. bonne journée






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users