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












