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