Aller au contenu


Photo
- - - - -

motorisation telescope


Aucune réponse à ce sujet

#1 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 01 juillet 2022 - 08:25

coucou les copins .

alors voilas ,je me suis l'ansé dans la motorisation de mon télescope .

j'ais donc deux moteurs pas a pas nema ( un pour le suivi de l'astre a observer ) et ( un pour la mise au point du focus ) 

je pilote c'est moteur avec une carte arduino et deux driver ( un pour chaque moteur)

grasse a vous j'ais pu réaliser ce programme avec accelstepper .


#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.
}

mais j'ais deux soucis 

 -souci numero 1 ,   mon moteur de suivi chauffe beaucoup trop 

 

avant j'utilisais ce programme qui ne me faisais pas de surchauffe .

 

/*
    Name:       Vitesse MPAP
    Auteur:     vitou 
*/
#define tempoDepart 2080;
int tempo = 0;                         // Moteur arrete
int tempoAccelerer = -800;
int tempoRalentir = 900;
int tempoAddition = 0;


#define driverDirPin 4
#define driverStepPin 5    
#define boutonAccelererPin 6    
#define boutonRalentirPin 7
#define boutonMarchePin 8
#define boutonArretPin 9


void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);


  pinMode(boutonAccelererPin,
INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonRalentirPin, INPUT_PULLUP);   //         "        "        "
  pinMode(boutonMarchePin, INPUT_PULLUP);
  pinMode(boutonArretPin, INPUT_PULLUP);


  digitalWrite(driverDirPin, LOW);            // On met la broche DIR a l'etat bas
}


void loop()
{
  for (int i = 0; i <= 200; i++)
  {
    tempoAddition = 0;
    if (digitalRead(boutonAccelererPin) == LOW)      // Si le bouton accelerer est presse
    {
      tempoAddition = tempoAccelerer;
    }
    else if (digitalRead(boutonRalentirPin) == LOW)  // Si le bouton freiner est presse
    {
      tempoAddition = tempoRalentir;
    }
    else if (digitalRead(boutonMarchePin) == LOW)    // Si le bouton marche est presse
    {
      tempo = tempoDepart;
    }
    else if (digitalRead(boutonArretPin) == LOW)     // Si le bouton marche est presse
    {
      tempo = 0;
    }


    if (tempo > 0)
    {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo + tempoAddition);
      digitalWrite(driverStepPin,
HIGH);
      delayMicroseconds(tempo + tempoAddition);
    }
  }
}

 - souci numero 2 ,   mes boutonZoom in et out ne fonctionnes pas tout le temps ( une fois sur deux ) 

 

 

 

pourquoi c'est problème surviennes t'ils ?

pourtant notre programme a l'air bien ?

 

si vous vouler je peut vous donner le cablage et toute les infos que vous me demenderer  .

 

merki d'avence les copin(e)s

 

 

 

 





Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users