jeudi 10 décembre 2020

Planchette équatoriale : Code Arduino

Comme dans le cas du Star Tracker, le code utilise la bibliothèque AccelStepper qui doit donc être installée dans le logiciel Arduino du PC (voir le billet concernant le code du Star Tracker). Le code inclut la gestion d'un bouton poussoir qui permet le rembobinage de la tige filetée en fin de course. Enfin, je compte faire évoluer ce code afin d'intégrer une gestion logicielle de la dérive progressive du suivi due à l'absence de conversion du mouvement linéaire de la tige filetée en un mouvement circulaire de suivi stellaire... mais nous verrons cela plus tard.

En attendant, voici le code :

/*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
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

// 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)
  {
   // Fixe le microstepping :
  pinMode (M012, OUTPUT);
  digitalWrite (M012, HIGH);
   // Fixe la vitesse de rotation en nombres de pas par seconde :
  stepper.setSpeed(20);
  // 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();
  }
}

Aucun commentaire:

Enregistrer un commentaire

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...