Motorisation d'un telescope

Bonjour

Je ne suis plus tout à fait débutant mais pas très doué dans tout ce qui est programmable et aujourd'hui je voudrais vous solliciter
la motorisation d'une monture équatoriale pour avoir un suivi qui compense plus ou moins la rotation de la terre j'ai : un arduino, une base motorshied et un nema 17 (bien sur j'ai du matériel supplémentaire mais j'habite sur une île en plus les conditions du moment qui ne sont pas très favorables il m'est très dur d'avoir du matériel supplémentaire livré) et si cela est possible car comme je vous le rappelle je ne suis pas un expert j'ai une vieille tablette Samsung que j'ai eu pas cher et que je peux utiliser juste pour ce projet

MERCI

Post mis dans la mauvaise section, on parle anglais dans les forums généraux, je viens de déplacer le post dans la section francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone".

Bonjour myxomycetes

C'est cette base?

A quoi veux tu utiliser ta tablette, dans ce projet?

A+
Cordialement
jpbbricole

eh bien, je pensais que je pourrais l'utiliser comme écran de contrôle

et oui C bien cette base

Il y a un sujet similaire en route, sur ce forum mais pas avec le même moteur et une autre électronique.
Pour ta tablette, tu veux utiliser une liaison Bluetooth?

Pour le programme, j'ai posé la question à l'IA qui fait une proposition de programme pas mal comme base de départ.

Le programme IA:

#include <AFMotor.h>

// Déclaration du moteur sur M1/M2
AF_Stepper moteur(200, 1);  // 200 pas par tour, moteur branché sur M1/M2

// Définition du pas sidéral (360° en 24h)
// Un tour moteur = 200 pas, réduction 1:100, vis sans fin 144:1
#define PAS_SIDERAL (200 * 100 * 144 / 360.0)  // Pas pour 1° de rotation
#define INTERVALLE_SIDERAL (24 * 60 * 60 * 1000 / PAS_SIDERAL)  // Intervalle en ms

unsigned long dernierPas = 0;  // Stocke le dernier temps d'exécution

void setup() {
    moteur.setSpeed(5);  // Vitesse du moteur en RPM (ajustable)
    Serial.begin(9600);
    Serial.println("Début suivi équatorial...");
}

void loop() {
    unsigned long maintenant = millis();  // Temps actuel

    // Vérifie si l'intervalle de temps est écoulé pour avancer d'un pas
    if (maintenant - dernierPas >= INTERVALLE_SIDERAL) {
        dernierPas = maintenant;  // Met à jour le temps du dernier pas
        moteur.step(1, FORWARD, SINGLE);  // Un pas en avant
    }

    // Ici, on peut ajouter d'autres tâches sans bloquer le programme
}

Il faut installer la bibliothèque:

A+
Cordialement
jpbbricole

eh bien merci beaucoup je vous tiendrai informé dans les prochains jours

Je ne sais pas s'il y avait des choses à modifier ou autre chose, j'ai installé la bibliothèque mais le moteur vibre et j'ai l'impression qu'il le tourne puis il s'arrête completement avant de redémarrer je ne sais pas si c'est ma carte qui est ancienne ou autre ?

Essaies de faire un exemple de la bibliothèque comme StepperTest.ino
Attention, // to motor port #2 (M3 and M4)

Ok.

Je ne sais pas si ça tourne mais il a perdu toute sa résistance

et j'ai trouvé un programme qui fait tourner le moteur mais beaucoup trop vite``

#include "Stepper.h"

// Define number of steps per revolution:
const int stepsPerRevolution = 200;

// Give the motor control pins names:
#define pwmA 3
#define pwmB 11
#define brakeA 9
#define brakeB 8
#define dirA 12
#define dirB 13

// Initialize the stepper library on the motor shield:
Stepper myStepper = Stepper(stepsPerRevolution, dirA, dirB);

void setup() {
  // Set the PWM and brake pins so that the direction pins can be used to control the motor:
  pinMode(pwmA, OUTPUT);
  pinMode(pwmB, OUTPUT);
  pinMode(brakeA, OUTPUT);
  pinMode(brakeB, OUTPUT);

  digitalWrite(pwmA, HIGH);
  digitalWrite(pwmB, HIGH);
  digitalWrite(brakeA, LOW);
  digitalWrite(brakeB, LOW);

  // Set the motor speed (RPMs):
  myStepper.setSpeed(60);
}


void loop() {
  // Step one revolution in one direction:
  myStepper.step(200);

  delay(2000);

  //Step on revolution in the other direction:
  myStepper.step(-200);

  delay(2000);
}

Voilà une version avec la même bibliothèque, Stepper.h:

#include <Stepper.h>

// Paramètres du moteur
#define PAS_PAR_TOUR 200  // Nombre de pas par tour du moteur Nema 17

// Configuration du moteur avec les broches du Motor Shield Rev3
// Moteur connecté sur M1/M2 => Broches 11, 3, 9, 12 du Shield
Stepper moteur(PAS_PAR_TOUR, 11, 3, 9, 12);

// Paramètres pour le suivi sidéral
#define REDUCTION_ENGRENAGES 100  // Rapport de réduction mécanique
#define REDUCTION_VIS_SANS_FIN 144  // Rapport vis sans fin
#define PAS_SIDERAL (PAS_PAR_TOUR * REDUCTION_ENGRENAGES * REDUCTION_VIS_SANS_FIN / 360.0)  
#define INTERVALLE_SIDERAL (24 * 60 * 60 * 1000 / PAS_SIDERAL)  // Temps entre chaque pas

unsigned long dernierPas = 0;  // Stocke le dernier temps d'exécution

void setup() {
    moteur.setSpeed(5);  // Définir une vitesse de rotation (RPM)
    Serial.begin(9600);
    Serial.println("Début suivi équatorial...");
}

void loop() {
    unsigned long maintenant = millis();  // Temps actuel en millisecondes

    // Vérifie si l'intervalle de temps est écoulé pour avancer d'un pas
    if (maintenant - dernierPas >= INTERVALLE_SIDERAL) {
        dernierPas = maintenant;  // Mise à jour du temps du dernier pas
        moteur.step(1);  // Avancer d'un pas
    }

    // Possibilité d'ajouter d'autres tâches ici
}

Je n'ai, malheureusement, pas le temps de faire l'essai "en vrai" :wink:

A titre indicatif, je te mets le lien du chat IA qui m'a donné ce résultat. Ce lien ne sera pas disponible en permanence,

alors j'ai essayé le code, il y a du progrès
le moteur fait un pas mais quelques secondes plus tard il en fait un dans l'aure sens j'ai utilisé le lien et j'ai demandé à l'IA de me donner le code pour empêcher le pas en arrière mais rien ne fait le moteur fait toujours ce pas en arrière

:grimacing:

et un autre probleme est qu'il perd toute sa resistance pendent le pas

dallieur voici le lien du site sur lequel jai trouver le code qui faiser tourner le moteur mais bien tros vite :Stepper with Arduino Motor Shield Rev3 Tutorial (4 Examples)

Bonjour myxomycetes

Il y a une erreur dans le code de l'IA :woozy_face::
Stepper moteur(PAS_PAR_TOUR, 11, 3, 9, 12);
doit être:
Stepper moteur(PAS_PAR_TOUR, 11, 3, 9, 8);

Essaies ça, peut être il faut croiser une des paires.

A+
Cordialement
jpbbricole

merci pour les conseils et désolé de ne pas être là depuis quelques jours