mercredi 27 janvier 2021

Monture allemande : Démonstration

Dans le billet du 27 décembre je montrais le prototypage de l'asservissement de la petite monture allemande motorisée. C'est encore loin d'être abouti et pour l'instant cela ne fait que faire bouger les moteurs de l'axe Alpha et Delta à l'aide d'un joystick. Voici une petite vidéo démontrant que cela fonctionne. Il me reste donc encore à modifier le code Arduino afin d'obtenir un véritable outil de suivi stellaire avec possibilité de corrections. Dès que cela aura avancé, je mentionnerai le plan de câblage et le code Arduino. Il me faut encore comprendre si je dois utiliser la fonction Enable du driver DRV8825 en particulier pour l'axe Delta ? 

 


💫 Arduino 💫 Astrophotographie 💫 DRV8825 💫 goBilda 💫 Instrumentation astronomique 💫 Monture équatoriale motorisée 💫 Suivi stellaire 💫

 

dimanche 24 janvier 2021

Monture allemande : Modification

J'avais déjà mentionné l'intérêt d'un « meccano » comme le système goBilda que j'utilise : on peut corriger et modifier à souhait. Ayant réalisé l'avantage d'un viseur polaire lors de mes essais du Star Tracker, puis de la planchette équatoriale motorisée, je décide d'inclure cette possibilité sur la monture équatoriale allemande. J'ajoute une charnière qui permet la bascule de l'axe delta de déclinaison autorisant ainsi la visée polaire à travers l'axe alpha d’ascension droite. Notez que j'ai déjà en tête une optimisation du viseur polaire de la planchette équatoriale motorisée.


La monture allemande réalisée en structure goBilda avec la charnière permettant la bascule de l'axe Delta et donc la visée polaire. L'axe est ici basculé et la monture ne ressemble donc pas à grand chose. Une fois l'axe Delta re-basculé en place, elle est très similaire à la version précédemment présentée. 

  

💫 Astrophotographie 💫 goBilda 💫 Instrumentation astronomique 💫 Monture équatoriale 💫 Planchette équatoriale motorisée 💫 Star tracker 💫 Suivi stellaire 💫 Viseur polaire 💫

mercredi 20 janvier 2021

Planchette équatoriale : Routine Arduino avec correction de dérive

Le test de suivi stellaire de la planchette équatoriale motorisée réalisé sur Capella dans la nuit du 17 janvier fut très positif. L'asservissement du moteur pas à pas est effectué par un code Arduino qui inclut une correction de la dérive attendue du suivi stellaire. La correction consiste à considérer la développante du cercle comme une succession de segments de droites. Voici le code Arduino ci-dessous :

/*Routine Arduino pour Planchette équatoriale avec moteur pas à pas, 
driver de moteur DRV 8825, microstepping à 32 µpas par pas, 
utilisation de la bibliothèque de fonctions "accelstepper" 
Rotation continue
Mais compensation de dérive
(succesion de segments de droite)
Rembobinage par bouton pressoir
Voir le blog "Astronomie par les trois bouts" : 
https://astronomiebbb.blogspot.com/ */

// Inclut la bibliothèque "AccelStepper" :
#include <AccelStepper.h>

// Définit les connections Arduino destinées au contrôle du moteur pas à pas :
#define dirPin 2
#define stepPin 3
// Définit l'utilisation d'un driver (attribution de 1 au type d'interface) :
#define motorInterfaceType 1
// Définit la connection Arduino destinée au microstepping :
#define M012 4
// définit la variable rpm et lui attribue la valeur initiale 20
float Vmoteur=20;
// Définit la variable TempsRef et lui attribue le temps de la carte Arduino
long TempsRef = millis();


// Création du moteur dans le code Arduino :
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);
 
void setup() {
  // Déclare la pin 8 comme lecture du bouton poussoir
  pinMode(8,INPUT);
  // Fixe la vitesse maximale du moteur (indispensable) :
  stepper.setMaxSpeed(1000);
}

void loop() 
{
if(digitalRead(8) == 1)
  {
   // Ajustement Vmoteur
   if ((millis()-TempsRef)>86000) Vmoteur=20.001;
   if ((millis()-TempsRef)>162000) Vmoteur=(0.0014709*((millis()-TempsRef)/600000)+19.9978723);
   if ((millis()-TempsRef)>300000) Vmoteur=(0.0028689*((millis()-TempsRef)/600000)+19.9902650);
   if ((millis()-TempsRef)>600000) Vmoteur=(0.0057442*((millis()-TempsRef)/600000)+19.9591370);
   if ((millis()-TempsRef)>1200000) Vmoteur=(0.0095880*((millis()-TempsRef)/600000)+19.8822833);
   if ((millis()-TempsRef)>1800000) Vmoteur=(0.0134501*((millis()-TempsRef)/600000)+19.7664368);
   if ((millis()-TempsRef)>2400000) Vmoteur=(0.0173800*((millis()-TempsRef)/600000)+19.6109349);
   // Fixe le microstepping :
  pinMode (M012, OUTPUT);
  digitalWrite (M012, HIGH);
   // Fixe la vitesse de rotation en nombres de pas par seconde :
  stepper.setSpeed(Vmoteur);
  // Fait tourner le moteur à la vitesse définie par setSpeed():
  stepper.runSpeed();
  }
if(digitalRead(8) == 0)
  {
  // Inactive le microstepping :
  pinMode (M012, OUTPUT);
  digitalWrite (M012, LOW);
  // Fixe la vitesse de rotation en nombres de pas par seconde :
  stepper.setSpeed(-100);
  // Fait tourner le moteur à la vitesse définie par setSpeed():
  stepper.runSpeed();
  // Reset les valeurs pour un nouveau suivi
  Vmoteur=20;
  TempsRef=millis();
  }
}

lundi 18 janvier 2021

Newton T200 : Barillet neuf points

La conception du tube d'un télescope doit tenir d'un certain nombre de paramètres. Le plus important est bien sûr la distance focale du miroir principal. Mais la longueur du porte oculaire est aussi à prendre compte ainsi que l'espace mort en arrière de la surface optique du miroir primaire. Il me faut donc concevoir le barillet du miroir primaire afin de me faire idée de cet espace mort. Je choisi de faire un barillet neuf points. Ce n'est pas forcément nécessaire avec un miroir de 203 mm mais c'est tellement plus classe. Je commence donc par réaliser les trois triangles flottant portant chacun trois points de support du miroir. Ils sont réalisés en planche à découper PVC. La rotule de ce triangle est un écrou à rotule (cela sert de pied de meuble et se trouve dans les magasins de bricolage). Un logement pour la tête de l'écrou est creusé dans le morceau de planche à découper. La tête de l'écrou est maintenue en place par une rondelle collée.

Les triangles de flottant du futur barillet neuf points. Sur celui du bas, on voit le logement creusé afin d'accueillir la tête de l'écrou à rotule (en haut à gauche, il faudra enlever la protection en plastique). Le triangle à droite est finalisé avec l'écrou à rotule maintenu en place par une rondelle comme celle posée à côté de l'écrou en haut.

💫 Astronomie amateur 💫 Instrumentation astronomique 💫 Miroir 💫 Optique astronomique 💫 Télescope 💫

 

dimanche 17 janvier 2021

Planchette équatoriale : Test de suivi stellaire, 3ème

Le début de nuit du 15 janvier fut beau et ce fut l’occasion de tester la nouvelle stratégie de correction de la dérive attendue du suivi stellaire de la planchette équatoriale motorisée. Cette stratégie consiste à considérer la courbe de vitesse théorique du moteur pas à pas d'asservissement comme une succession de segments de droite. Le montage photo ci-dessous est réalisé comme pour le test sans correction (mis à part pour le premier temps qui ne comporte que le cliché initial). On ne perçoit la dérive qu'après 37,5' de suivi. C'est bien mieux que sans correction ou qu'avec la stratégie précédente. On ne peut pas savoir si la dérive encore observée est du à l'imperfection de la stratégie ou à un défaut de mise en station de la planchette équatoriale ou bien encore à la flexibilité de la tige mère qui augmente forcément plus elle est sortie... Quoi qu'il en soit, c'est super et il est temps de passer à autre chose avant les premières photos quand j'en aurai l'occasion...

 

Montage réalisé à partir d'une série de 120 clichés centrés sur Capella et objectivant un suivi stellaire quasi parfait sur au moins 35' surtout en comparaison de l'essai sans correction de suivi, intervallomètre 20 s, Lumix G, objectif de 25 mm (équivalent 50), F/D 1.8, 1/10 s, 6400 ISO

💫Arduino 💫 Astrophotographie 💫 Instrumentation astronomique 💫 Moteur pas à pas 💫 Planchette équatoriale motorisée 💫 Suivi stellaire 💫

vendredi 15 janvier 2021

Planchette équatoriale : Développante du cercle

Voici la courbe théorique en bleu de la vitesse de rotation du moteur pas à pas d'asservissement de la planchette équatoriale motorisée. C'est une développante du cercle (enfin je crois, je ne suis pas un matheux). Arduino n'a pas la capacité de calcul afin d'ajuster la vitesse du moteur en fonction de cette développante du cercle. J'ai donc utilisé une autre solution qui consiste à ajuster cette vitesse de temps à autres. Un essai a montré que cette solution est bien meilleure que sans correction mais cela reste perfectible. Voici ma piste de travail : En découpant la courbe théorique en plusieurs parties, on peut assimiler chacune de ces parties à une droite en jaune sur le graphe. Le coefficient de régression r² est toujours très bon, au minimum à 0.993 et au maximum à 0.999. Je vais donc demander à Arduino d'adapter en permanence la vitesse du moteur mais non pas en fonction de la développante du cercle mais en fonction d'une succession de quelques segments de droite. Un calcul de la forme y = a.x + b devrait être dans les cordes d'Arduino ? Je vais donc explorer cette piste. 


 

💫 Arduino 💫 Astrophotographie 💫 Instrumentation astronomique 💫 Moteur pas à pas 💫 Planchette équatoriale motorisée 💫 Suivi stellaire💫

 

jeudi 14 janvier 2021

Planchette équatoriale : Code Arduino

J'avais donc testé un code Arduino permettant de corriger la dérive attendue du suivi stellaire de la planchette équatoriale motorisée. C'était plutôt concluant... mais perfectible. Voici tout de même ce code Arduino. Il n'est pas très élégant car il comporte une série de tests conditionnels. J'ai déjà en tête une autre façon de faire, toujours via le code Arduino et avec des calculs qui devraient être dans les cordes d'Arduino et de ses performances limitées.

En attendant voici le code Arduino du dernier test :

 

/*Routine Arduino pour Planchette équatoriale avec moteur pas à pas, 
driver de moteur DRV 8825, microstepping à 32 µpas par pas, 
utilisation de la bibliothèque de fonctions "accelstepper" 
Rotation continue
Mais compensation de dérive
Rembobinage par bouton pressoir
Voir le blog "Astronomie par les trois bouts" : 
https://astronomiebbb.blogspot.com/ */

// Inclut la bibliothèque "AccelStepper" :
#include <AccelStepper.h>

// Définit les connections Arduino destinées au contrôle du moteur pas à pas :
#define dirPin 2
#define stepPin 3
// Définit l'utilisation d'un driver (attribution de 1 au type d'interface) :
#define motorInterfaceType 1
// Définit la connection Arduino destinée au microstepping :
#define M012 4
// définit la variable rpm et lui attribue la valeur initiale 20
float Vmoteur=20;
// Définit la variable TempsRef et lui attribue le temps de la carte Arduino
long TempsRef = millis();


// Création du moteur dans le code Arduino :
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);
 
void setup() {
  // Déclare la pin 8 comme lecture du bouton poussoir
  pinMode(8,INPUT);
  // Fixe la vitesse maximale du moteur (indispensable) :
  stepper.setMaxSpeed(1000);
}

void loop() 
{
if(digitalRead(8) == 1)
  {
   // Ajustement Vmoteur
   if ((millis()-TempsRef)>86000) Vmoteur=20.001;
   if ((millis()-TempsRef)>162000) Vmoteur=20.002;
   if ((millis()-TempsRef)>212000) Vmoteur=20.003;
   if ((millis()-TempsRef)>253000) Vmoteur=20.004;
   if ((millis()-TempsRef)>288000) Vmoteur=20.005;
   if ((millis()-TempsRef)>319000) Vmoteur=20.006;
   if ((millis()-TempsRef)>347000) Vmoteur=20.007;
   if ((millis()-TempsRef)>373000) Vmoteur=20.008;
   if ((millis()-TempsRef)>398000) Vmoteur=20.009;
   if ((millis()-TempsRef)>421000) Vmoteur=20.01;
   if ((millis()-TempsRef)>604000) Vmoteur=20.02;
   if ((millis()-TempsRef)>744000) Vmoteur=20.03;
   if ((millis()-TempsRef)>861000) Vmoteur=20.04;
   if ((millis()-TempsRef)>964000) Vmoteur=20.05;
   if ((millis()-TempsRef)>1057000) Vmoteur=20.07;
   if ((millis()-TempsRef)>1222000) Vmoteur=20.08;
   if ((millis()-TempsRef)>1297000) Vmoteur=20.09;
   if ((millis()-TempsRef)>1367000) Vmoteur=20.1;
   if ((millis()-TempsRef)>1498000) Vmoteur=20.12;
   if ((millis()-TempsRef)>1619000) Vmoteur=20.14;
   if ((millis()-TempsRef)>1731000) Vmoteur=20.16;
   if ((millis()-TempsRef)>1836000) Vmoteur=20.18;
   if ((millis()-TempsRef)>1935000) Vmoteur=20.2;
   if ((millis()-TempsRef)>2030000) Vmoteur=20.22;
   if ((millis()-TempsRef)>2120000) Vmoteur=20.24;
   if ((millis()-TempsRef)>2207000) Vmoteur=20.26;
   if ((millis()-TempsRef)>2290000) Vmoteur=20.28;
   if ((millis()-TempsRef)>2370000) Vmoteur=20.3;
   if ((millis()-TempsRef)>2448000) Vmoteur=20.32;
   if ((millis()-TempsRef)>2523000) Vmoteur=20.34;
   if ((millis()-TempsRef)>2596000) Vmoteur=20.36;
   if ((millis()-TempsRef)>2667000) Vmoteur=20.38;
   if ((millis()-TempsRef)>2737000) Vmoteur=20.40;
   if ((millis()-TempsRef)>2804000) Vmoteur=20.42;
   if ((millis()-TempsRef)>2870000) Vmoteur=20.44;
   if ((millis()-TempsRef)>2934000) Vmoteur=20.46; 
   if ((millis()-TempsRef)>2997000) Vmoteur=20.48;
   if ((millis()-TempsRef)>3059000) Vmoteur=20.50;
   // Fixe le microstepping :
  pinMode (M012, OUTPUT);
  digitalWrite (M012, HIGH);
   // Fixe la vitesse de rotation en nombres de pas par seconde :
  stepper.setSpeed(Vmoteur);
  // Fait tourner le moteur à la vitesse définie par setSpeed():
  stepper.runSpeed();
  }
if(digitalRead(8) == 0)
  {
  // Inactive le microstepping :
  pinMode (M012, OUTPUT);
  digitalWrite (M012, LOW);
  // Fixe la vitesse de rotation en nombres de pas par seconde :
  stepper.setSpeed(-100);
  // Fait tourner le moteur à la vitesse définie par setSpeed():
  stepper.runSpeed();
  // Reset les valeurs pour un nouveau suivi
  Vmoteur=20;
  TempsRef=millis();
  }
}

Newton T200 : Mise au point astrophoto déportée

P lusieurs limites étaient apparues lors du dernier essai d'astrophoto avec le T200 . L'une d'elles était la difficulté de mettr...