Bonjour,
Je suis nouveau sur le forum et nouveau dans le monde de l'arduino. J'ai quelques bases en électronique et programmation de sorte que je me lance dans l'aventure de (re)motoriser mon télescope à l'aide de l'arduino. Il existe déjà une électronique que j'avais conçue et montée et qui rend de bons et loyaux services, mais comme je souhaite la faire évoluer, je préfère changer de système.
Vous pouvez voir le télescope, la caméra, la motorisation ici , des images prises avec ce télescope là.
Sur le principe, le télescope suit le mouvement des étoiles grâce a une monture équatoriale qui compense la rotation de la terre. Donc à la base, il y a une rotation sur un axe, à la vitesse sidérale. Dans mon cas, c'est une vis qui doit tourner à 1 tour/mn (entraînement par secteur lisse).
Pour pointer finement un objet (le plus gros se fait à la main), on a besoin de vitesses de pointage sur deux les axes (ascension droite=AD et déclinaison=Dec).
Pour guider (compenser les variations du suivi pour différentes causes), on a besoin de vitesses de guidage sur les deux axes.
Dans l'avenir, je souhaite pouvoir rembobiner automatiquement le secteur lisse qui engendre la rotation du télescope à la vitesse sidérale, mais qui a comme défaut de devoir être rembobiné toutes les deux heures.
Je me suis équipé d'une carte MEGA 2560 REV3 et d'une carte RAMPS 1.4, de moteurs pas à pas et de pilotes DRV8825.
Et j'ai commencé à écrire du code (voir ci-dessous).
Voilà, j'aurais sans doute quelques questions à poser, donc à très bientôt!
Nathanaël
#define pas_AD 36 // pin pas ascension droite sur E1
#define direction_AD 34 // pin direction ascension droite sur E1
#define activer_AD 30 // pin activation ascension droite sur E1
#define pas_Dec 26 // pin pas déclinaison sur E0
#define direction_Dec 28 // pin direction déclinaison sur E0
#define activer_Dec 24 // pin activation déclinaison sur E0
#define bouton_AD_plus_guidage 4 // pin boutons raquettes
#define bouton_AD_moins_guidage 5
#define bouton_Dec_plus_guidage 6
#define bouton_Dec_moins_guidage 8
#define bouton_AD_plus_centrage 9
#define bouton_AD_moins_centrage 10
#define bouton_Dec_plus_centrage 11
#define bouton_Dec_moins_centrage 12
#include "Timer.h" // importe la librairie timer.h
Timer AD_siderale; // déclaration des timers d'ascension droite
Timer AD_plus_guidage;
Timer AD_moins_guidage;
Timer AD_plus_centrage;
Timer AD_moins_centrage;
Timer Dec_guidage; // déclaration des timers de déclinaison
Timer Dec_centrage;
void setup() {
Serial.begin(9600); // ouvre le port de communication avec l'arduino
pinMode( pas_AD,OUTPUT ); // déclare les pins comme des sorties
pinMode( direction_AD,OUTPUT );
pinMode( activer_AD,OUTPUT );
pinMode( pas_Dec,OUTPUT );
pinMode( direction_Dec,OUTPUT );
pinMode( activer_Dec,OUTPUT );
pinMode( bouton_AD_plus_guidage,INPUT ); // déclare les pins comme des entrées
pinMode( bouton_AD_moins_guidage,INPUT );
pinMode( bouton_Dec_plus_guidage,INPUT );
pinMode( bouton_Dec_moins_guidage,INPUT );
pinMode( bouton_AD_plus_centrage,INPUT );
pinMode( bouton_AD_moins_centrage,INPUT );
pinMode( bouton_Dec_plus_centrage,INPUT );
pinMode( bouton_Dec_moins_centrage,INPUT );
// fonctions oscillation des pas en millisecondes:
AD_siderale.oscillate(pas_AD, 9.375, LOW); // durée du pas : 1tr/mn/200pas/32microspas
AD_plus_guidage.oscillate(pas_AD, 8.4375, LOW); // durée du pas : - 10%
AD_moins_guidage.oscillate(pas_AD, 10.3125, LOW); // durée du pas : + 10%
Dec_guidage.oscillate(pas_AD, 93.75, LOW); // durée du pas : 10 x AD_sidérale (1/10 vitesse sidérale)
AD_plus_centrage.oscillate(pas_AD, 4.6875, LOW); // durée du pas : 1/2 x AD sidérale (2 x vitesse sidérale)
AD_moins_centrage.oscillate(pas_AD, 1000, LOW); // durée du pas : arrêt (ou presque)
Dec_centrage.oscillate(pas_AD, 9.375, LOW); // durée du pas : AD_sidérale
}
void loop() {
digitalWrite( activer_AD,HIGH);
digitalWrite( activer_Dec,HIGH);
digitalWrite( direction_AD,HIGH);
if (bouton_AD_plus_guidage,HIGH){AD_plus_guidage.update();};
if (bouton_AD_moins_guidage,HIGH){AD_moins_guidage.update();};
if (bouton_Dec_plus_guidage,HIGH){Dec_guidage.update();digitalWrite(direction_Dec,HIGH);};
if (bouton_Dec_moins_guidage,HIGH){Dec_guidage.update();digitalWrite(direction_Dec,LOW);};
if (bouton_AD_plus_centrage,HIGH){AD_plus_centrage.update();};
if (bouton_AD_moins_centrage,HIGH){AD_moins_centrage.update();};
if (bouton_Dec_plus_centrage,HIGH){Dec_centrage.update();digitalWrite(direction_Dec,HIGH);};
if (bouton_Dec_moins_centrage,HIGH){Dec_centrage.update();digitalWrite(direction_Dec,LOW);};
}