Aller au contenu


Photo
- - - - -

focuser motorisé télescope


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

#41 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 26 février 2022 - 06:57

SUPER mes deux moteurs tourne

je met le programme 

 

tu me diras si mes devoir sont bien fait 

#include <AccelStepper.h>


#define zoomDirPin 2
#define zoomStepPin 3 
#define suiviDirPin 5
#define suiviStepPin 4


AccelStepper stepper(1, zoomStepPin, zoomDirPin);
AccelStepper stepper2(1, suiviDirPin, suiviStepPin);


void setup()
{  
   stepper.setMaxSpeed(2000); //vitesse max du moteur en nombre de steps par seconde
   stepper.setSpeed(1000);//Réglage de la vitesse du moteur
   stepper2.setMaxSpeed(2000);
   stepper2.setSpeed(1000);
}


void loop()
{  
   stepper.runSpeed();// fait tourner le moteur à la vitesse réglée. 
   stepper2.runSpeed();
}

enfin quelque chose que j'ai pu avancer "tous seule" c'est pas grand chose mais ca fait plaisir .

bon reste plus qua faire le reste .



#42 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 26 février 2022 - 07:00

A quelques minutes près j'allais poster la solution x) Je suis content que tu y sois arrivé tout seul c'est justement le but ;) Tu seras plus content de l'avoir fait toi même et de l'avoir compris par toi même que si je t'avais donné la solution directement x) 

Maintenant il te reste plus qu'à tester les valeurs de vitesse que tu veux pour le " lent, normale , rapide "  et rajouter la logique des boutons. hésite pas à poster à nouveau ton code si tu bloques sur un des point.

 

Modifier un gros problème en plusieurs petits sous problème à résoudre un par un rend le gros problème plus facile à résoudre ;)

Sinon petite astuce, au lieu de mettre stepper et stepper2 tu peux mettre stepperZoom et stepperSuivi ;)


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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#43 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 27 février 2022 - 09:54

j'ai essayer ca se matin

#include <AccelStepper.h>


#define zoomDirPin 2
#define zoomStepPin 3 
#define suiviDirPin 5
#define suiviStepPin 4
#define boutonZoomInPin 10
#define boutonZoomOutPin 11


bool zoom = false 
AccelStepper stepperZoom(1, zoomStepPin, zoomDirPin);
AccelStepper stepperSuivi(1,suiviDirPin, suiviStepPin);


void setup()
{  
  
  pinMode(zoomDirPin, OUTPUT);
  pinMode(zoomStepPin, OUTPUT);


  pinMode(boutonZoomInPin,INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "


}
  


void loop()
{
if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est presse
digitalWrite(driverDirPin, LOW);
zoom = true;
} else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est presse
digitalWrite(driverDirPin, HIGH);
zoom = true;
}


if (zoom) {
digitalWrite(driverStepPin, LOW);
delayMicroseconds(tempo);
digitalWrite(driverStepPin, HIGH);
delayMicroseconds(tempo);
zoom = false;
}


 {   
   stepperZoom.runSpeed();// fait tourner le moteur à la vitesse réglée. 
   stepperSuivi.runSpeed();
}
}  

pour l'heure j'essai juste pour le zoom , on verra apres pour le suivi (pour l'instant il tourne simplement ) 

mais cette ligne me tracasse 

AccelStepper stepperSuivi(1,suiviDirPin, suiviStepPin);

 le Step et Dir ne devrait il pas etre inverser ? car il ne tourne pas comme ca

 AccelStepper stepperSuivi(1,suiviStepPin, suiviDirPin);

sinon pour le reste je pense que le tempo et le delayMicroseconde dans le void loop induit en ereure avec AccelStepper 

il faut donc les suprimer ?



#44 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 27 février 2022 - 07:53

 

mais cette ligne me tracasse 

AccelStepper stepperSuivi(1,suiviDirPin, suiviStepPin);

 le Step et Dir ne devrait il pas etre inverser ? car il ne tourne pas comme ca

 AccelStepper stepperSuivi(1,suiviStepPin, suiviDirPin);

 

 

 

Je pense que tu as une erreur sur le câblage que tu penses avoir fait. 

Pour la librairie accelStepper le 1 sert à indiquer que tu utilises un driver qui utilise les broches step et direction. ensuite le premier des deux est censé être le pin step et le suivant le pin direction. 

Donc si dans ton code ça marche en étant en inversé et pas en normal c'est soit que tu t'es trompé dans ton câblage, soit que tu as mis le mauvais numéro de broche pour step et dir .

 

 

 

sinon pour le reste je pense que le tempo et le delayMicroseconde dans le void loop induit en ereure avec AccelStepper 

il faut donc les suprimer ?

 

 

 

En effet la libraire accelStepper vient remplacer les écritures sur les pins step et dir pour te faciliter le pilotage du moteur. Donc adieu les digitalWrite, les delay etc... ( en plus utiliser des delay c'est pas une bonne chose en général car ça te fait du code bloquant et c'est pour cela que ton code précédent ne marchait pas bien avec deux moteurs  

et du coup en utilisant accelstepper avec tes boutons ça te donne un truc comme ça : 

 

#include <AccelStepper.h>

#define zoomDirPin 2
#define zoomStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11

AccelStepper stepperZoom(1, zoomStepPin, zoomDirPin);

void setup() {
  pinMode(zoomDirPin, OUTPUT);
  pinMode(zoomStepPin, OUTPUT);
  pinMode(boutonZoomInPin, INPUT_PULLUP);    // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
}

void loop() {
  if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est pressed
    stepperZoom.setSpeed(100);
  } else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est pressed
    stepperZoom.setSpeed(-100);
  } else {
    stepperZoom.setSpeed(0);
  }

  stepperZoom.runSpeed();// fait tourner le moteur à la vitesse réglée.
}

Il ne te reste plus qu'à ajouter le moteur de suivi et ses boutons en suivant le modèle. 

Au final je pense que tu te rends compte qu'utiliser la libraire accelStepper te simplifie énormément le travail ;) 


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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#45 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 28 février 2022 - 05:33

il ne fonctionne pas 

#include <AccelStepper.h>

#define zoomDirPin 2
#define zoomStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11

AccelStepper stepperZoom(1, zoomStepPin, zoomDirPin);

void setup() {
pinMode(zoomDirPin, OUTPUT);
pinMode(zoomStepPin, OUTPUT);
pinMode(boutonZoomInPin, INPUT_PULLUP); // L'autre cote du bouton au GND
pinMode(boutonZoomOutPin, INPUT_PULLUP); // " " "
}

void loop() {
if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est pressed
stepperZoom.setSpeed(100);
} else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est pressed
stepperZoom.setSpeed(-100);
} else {
stepperZoom.setSpeed(0);
}

stepperZoom.runSpeed();// fait tourner le moteur à la vitesse réglée.
}

peut etre la tu fais exprès , mais j'ais rajouter ca 

void loop() {
    stepperZoom.setMaxSpeed(2000);
Je pense que tu as une erreur sur le câblage que tu penses avoir fait. 

Pour la librairie accelStepper le 1 sert à indiquer que tu utilises un driver qui utilise les broches step et direction. ensuite le premier des deux est censé être le pin step et le suivant le pin direction. 

 

effectivement j'ais inversé le les pins 4 et 5 dans le programme .

 

 

 

ET VOILAAAAAAA.  :ignat_02:  :ignat_02:  :ignat_02:

 

 
#include <AccelStepper.h>


#define suiviDirPin 4
#define suiviStepPin 5
#define boutonAccelererPin 6
#define boutonRalentirPin 7
#define boutonMarchePin 8
#define boutonArretPin 9


AccelStepper stepperSuivi(1, suiviStepPin, suiviDirPin);


#define zoomDirPin 2
#define zoomStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11


AccelStepper stepperZoom(1, zoomStepPin, zoomDirPin);


void setup() {
  pinMode(suiviDirPin, OUTPUT);              
  pinMode(suiviStepPin, OUTPUT);             
  pinMode(boutonAccelererPin, INPUT_PULLUP);        // L'autre cote du bouton au GND
  pinMode(boutonRalentirPin, INPUT_PULLUP);        //     "         "       "
  pinMode(boutonMarchePin, INPUT_PULLUP);          //     "         "       "
  pinMode(boutonArretPin, INPUT_PULLUP);           //     "         "       "
  
  pinMode(zoomDirPin, OUTPUT);
  pinMode(zoomStepPin, OUTPUT);
  pinMode(boutonZoomInPin, INPUT_PULLUP);    // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
}


void loop() {
    stepperSuivi.setMaxSpeed(2000);
    
  if (digitalRead(boutonAccelererPin) == LOW) { // Si le bouton Accelerer est pressed 
    stepperSuivi.setSpeed(1000);  
  } else if (digitalRead(boutonRalentirPin) == LOW) { // Si le bouton Ralentir est pressed 
    stepperSuivi.setSpeed(500);
  }  else if (digitalRead(boutonMarchePin) == LOW) { // Si le bouton Marche est pressed
    stepperSuivi.setSpeed(700);
  }  else if (digitalRead(boutonArretPin) == LOW) { // Si le bouton Arret est pressed 
    stepperSuivi.setSpeed(0);
  } else {
   
  }


  stepperSuivi.runSpeed(); // fait tourner le moteur a vitesse réglée
  
   
    stepperZoom.setMaxSpeed(2000);
  if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est pressed
    stepperZoom.setSpeed(1000);
  } else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est pressed
    stepperZoom.setSpeed(-1000);
  } else {
    stepperZoom.setSpeed(0);
  }


  stepperZoom.runSpeed();// fait tourner le moteur à la vitesse réglée.
}

je n'ais pas inclut la ligne 

stepperSuivi.setSpeed(0); 

afin que le moteur ne s'arrete pas quand je relache les boutons 

 

sinon c'est impec a par que le bruit de chaque moteur change quand les deux fonctionnes et que l'un s'arrete 

 

j'ais plus qua régler la vitesse de suivi sur le terrain 



#46 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 28 février 2022 - 05:47

il ne fonctionne pas 

#include <AccelStepper.h>

#define zoomDirPin 2
#define zoomStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11

AccelStepper stepperZoom(1, zoomStepPin, zoomDirPin);

void setup() {
pinMode(zoomDirPin, OUTPUT);
pinMode(zoomStepPin, OUTPUT);
pinMode(boutonZoomInPin, INPUT_PULLUP); // L'autre cote du bouton au GND
pinMode(boutonZoomOutPin, INPUT_PULLUP); // " " "
}

void loop() {
if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est pressed
stepperZoom.setSpeed(100);
} else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est pressed
stepperZoom.setSpeed(-100);
} else {
stepperZoom.setSpeed(0);
}

stepperZoom.runSpeed();// fait tourner le moteur à la vitesse réglée.
}

peut etre la tu fais exprès , mais j'ais rajouter ca 

void loop() {
    stepperZoom.setMaxSpeed(2000);

 

Ce n'étais pas fait exprès c'était bien un réel oubli de ma part, mais comme on a fait l'exercice ensemble au fur et à mesure, le fait que tu as trouvé, ça montre que tu as bien compris ;) 

Parfait ! 

En tout cas super content de savoir que tout marche pour toi ! =) 
Tu peux éventuellement supprimer le " else"  vide  pour le moteur de suivi du coup =). 

Maintenant je compte sur toi pour aider un éventuel débutant avec les moteurs pas à pas qui poserait des questions sur le forum ;)

 

@+ 


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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#47 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 28 février 2022 - 09:30

encore un GRAND MERCI a toi a sandro et au forum 

vous etes tops les gars 



#48 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 09 juillet 2022 - 10:34

coucou 

je sais pas si c'est correcte ou ci il faut que je recomence un autre post .

mais je vais poser la question ici .


#include <AccelStepper.h>


#define suiviDirPin 4
#define suiviStepPin 5
#define boutonAccelererPin 6
#define boutonRalentirPin 7
#define boutonMarchePin 8
#define boutonArretPin 9


AccelStepper stepperSuivi(1, suiviStepPin, suiviDirPin);


#define zoomDirPin 2
#define zoomStepPin 3
#define boutonZoomInPin 10
#define boutonZoomOutPin 11


AccelStepper stepperZoom(1, zoomStepPin, zoomDirPin);


void setup() {
  pinMode(suiviDirPin, OUTPUT);              
  pinMode(suiviStepPin, OUTPUT);             
  pinMode(boutonAccelererPin, INPUT_PULLUP);        // L'autre cote du bouton au GND
  pinMode(boutonRalentirPin, INPUT_PULLUP);        //     "         "       "
  pinMode(boutonMarchePin, INPUT_PULLUP);          //     "         "       "
  pinMode(boutonArretPin, INPUT_PULLUP);           //     "         "       "
  
  pinMode(zoomDirPin, OUTPUT);
  pinMode(zoomStepPin, OUTPUT);
  pinMode(boutonZoomInPin, INPUT_PULLUP);    // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
}


void loop() {
    stepperSuivi.setMaxSpeed(2000);
    
  if (digitalRead(boutonAccelererPin) == LOW) { // Si le bouton Accelerer est pressed 
    stepperSuivi.setSpeed(1000);  
  } else if (digitalRead(boutonRalentirPin) == LOW) { // Si le bouton Ralentir est pressed 
    stepperSuivi.setSpeed(20);
  }  else if (digitalRead(boutonMarchePin) == LOW) { // Si le bouton Marche est pressed
    stepperSuivi.setSpeed(100);
  }  else if (digitalRead(boutonArretPin) == LOW) { // Si le bouton Arret est pressed 
    stepperSuivi.setSpeed(0);
  } else {
   
  }


  stepperSuivi.runSpeed(); // fait tourner le moteur a vitesse réglée
  
   
    stepperZoom.setMaxSpeed(2000);
  if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est pressed
    stepperZoom.setSpeed(200);
  } else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est pressed
    stepperZoom.setSpeed(-200);
  } else {
    stepperZoom.setSpeed(0);
  }


  stepperZoom.runSpeed();// fait tourner le moteur à la vitesse réglée.
}

dans ce programme a quoi sert la fonction setmaxspeed ?

car mon moteur de focuszoom ne réagi pas corectement au ordre donné du programme .

faut il changer les valeur du maxspeed ?



#49 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 09 juillet 2022 - 11:26

La fonction maxspeed sert à définir la vitesse max que peut avoir ton moteur. 

Typiquement tu testes à quelle valeur ton moteur décroche et tu mets dans ce maxspeed une valeur un peu inférieur à cette dernière. 
Par contre tu peux mettre ton setMaxSpeed uniquement dans le setup. 
 


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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#50 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 10 juillet 2022 - 11:08

OK
Donc mes setmaxspeed dans les void loop
Ça pose donc un souci ?

#51 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 10 juillet 2022 - 10:40

J'ai pas dit ça ... Je ne sais pas si ça pose un problème ou pas, Je n'ai pas testé. Je dis juste que tu es pas obligé de le mettre dans le loop à chaque fois... 
C'est à toi de tester et de nous dire si ça change quelque chose ou si ça ne change rien pour toi :)


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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 





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

0 members, 0 guests, 0 anonymous users