Astronomie · DIY · Arduino · ASCOM

Un chercheur est très utile en spectroscopie : il se substitue au guideur pour le pointage lorsque la focale de l'instrument devient conséquente (> 2 m). Ce projet décrit la motorisation complète d'un chercheur Evoguide 50ED en utilisant des composants peu onéreux, que l'on trouve facilement sur les sites de commerce en ligne.

Chercheur Evoguide 50ED motorisé : moteur et engrenages imprimés sur la bague de mise au point, carter électronique fixé par le collier
L'Evoguide 50ED motorisé : à droite le moteur et ses engrenages sur la bague de mise au point, en haut le carter électronique porté par le collier.

1. Introduction

Chercheur-guideur Sky-Watcher Evoguide 50ED sur son support
Le chercheur-guideur Sky-Watcher Evoguide 50ED, instrument motorisé dans ce projet.

En astrophotographie, la mise au point est l'un des réglages les plus délicats. Toucher la molette du porte-oculaire fait vibrer le tube, la température fait dériver le foyer au fil de la nuit, et les routines d'autofocus des logiciels d'acquisition ont besoin d'un moteur qu'elles peuvent piloter seules. Les focusers motorisés du commerce font très bien ce travail, mais leur prix dépasse souvent celui d'un bon oculaire.

Ce projet propose une alternative entièrement maison, construite autour de composants très répandus :

  • un Arduino Mega 2560 (ici en version compacte « PRO Mini »), relié au PC par USB ;
  • un moteur pas à pas 28BYJ-48 5 V et sa carte pilote ULN2003, vendus ensemble pour quelques euros ;
  • un boîtier et un collier de fixation imprimés en 3D ;
  • un driver ASCOM écrit en C#.
4 076demi-pas par tour d'axe moteur
≈ 0,07 µmpar pas (hélicoïde 1 mm/tour)
IFocuserV3focuser absolu
~ 68 gde PLA/PETG au total

Cette résolution découle de la chaîne de transmission. Le moteur fait 4 076 demi-pas par tour ; son pignon (diamètre primitif de 23 à 26 mm) entraîne une couronne de 80,2 mm fixée sur la bague de mise au point, soit un rapport d'environ 3,3. Il faut donc près de 13 000 pas pour un tour de bague : avec un hélicoïde de 1 mm par tour, chaque pas déplace le foyer d'environ 0,07 µm, très en dessous de la zone de netteté de ±30 µm à f/4,8. Le détail du calcul figure dans la partie Arduino.

Le focuser est absolu : il connaît en permanence sa position, la mémorise en EEPROM et la retrouve après une coupure de courant. Il compense le jeu mécanique (backlash) et coupe l'alimentation des bobines à l'arrêt pour que le moteur ne chauffe pas. Il a été pensé pour passer l'outil de validation officiel ConformU.

Câblage

Le schéma est volontairement minimaliste : quatre fils de commande entre l'Arduino et l'ULN2003, une masse commune, et une alimentation 5 V pour le moteur issue de l'Arduino Mega.

Arduino MegaCarte ULN2003
D12IN1
D10IN2
D8IN3
D6IN4
GND− (et GND de l'alimentation 5 V)
5V+ : alimentation 5 V, 500 mA minimum

2. Les pièces imprimées en 3D (fichiers STL)

Les pièces sont fournies sous forme de fichiers STL, prêts à trancher. Leur géométrie a été validée par une série de contrôles automatiques : collisions, épaisseurs, orientation des cartes et passage des connecteurs.

Télécharger tous les fichiers STL (zip, 1,4 Mo)

Le carter électronique

Le boîtier principal regroupe la Mega 2560 PRO Mini et l'ULN2003 sur un seul niveau, angles arrondis R5.

Intérieur du carter : carte ULN2003 à gauche, Mega 2560 PRO Mini à droite, câblée
Le carter ouvert : l'ULN2003 à gauche, la Mega 2560 PRO Mini à droite, le micro-USB face à l'ouverture de la paroi.
FichierRôle
Carter_Base.stlBase
Carter_Couvercle.stlCouvercle
Base et couvercle du carter électronique dans le trancheur
La base (à gauche) et le couvercle du carter électronique, prêts à imprimer.
  • Encombrement : 110,7 × 56 × 24,6 mm, plus un berceau USB de 9 mm, soit 119,7 mm hors tout. Environ 26 g de PLA.
  • Mega posée sur quatre bossages de 3 mm (deux vissés, deux simples appuis) qui dégagent les soudures. Les deux appuis supplémentaires empêchent la carte de basculer, ses deux trous de fixation étant du même côté.
  • ULN2003 vissée sur quatre plots, avec 13 mm de dégagement pour enficher la nappe moteur et des Dupont coudés.
  • Prise USB directe : le cordon traverse la paroi par une ouverture de 12 × 9 mm et se branche dans le micro-USB de la carte. Autour de l'ouverture, la paroi est amincie à 1,2 mm pour que la fiche atteigne le connecteur.
  • Berceau extérieur en U : il soutient la fiche, et un serre-câble passé dans deux fentes bride le câble pour que rien ne tire sur le connecteur soudé.
  • Sortie du câble moteur par une demi-lune de ⌀ 7 mm au plan de joint.
  • Fixation par deux vis M3 dans le fond, entraxe 35 mm, têtes noyées.

Le boîtier ne prévoit pas encore d'entrée dédiée pour le 5 V moteur. Le plus simple est de faire passer les deux fils par la demi-lune du câble moteur ; on peut aussi percer un jack sur la paroi droite, qui est libre.

Une variante plus petite, le carter ULN2003 seul (52,2 × 49,5 × 29,6 mm), loge uniquement la carte pilote pour ceux qui gardent l'Arduino ailleurs. Elle utilise le même entraxe de fixation de 35 mm.

Le collier de fixation sur le chercheur

Le carter se fixe sur le tube du chercheur (⌀ 56,30 mm) à l'aide d'un collier en deux demi-coquilles cylindriques serrées par quatre vis M4.

FichierRôle
Collier_Long_Haut.stlCoquille haute, qui porte le plateau du carter
Collier_Long_Bas.stlCoquille basse
Les deux demi-coquilles du collier de fixation dans le trancheur
Les deux demi-coquilles du collier de fixation sur le chercheur.
  • Encombrement : 80,4 × 46 × 82,9 mm, environ 42 g de matière.
  • Carter dans l'axe du tube, posé sur un plateau de 46 × 46 mm.
  • Embase surélevée de 22 mm au-dessus du tube, pour passer au-dessus des colliers de la lunette.
  • Vis de serrage tête par dessus, accessibles même carter monté.
  • Anneau cylindrique ⌀ 65,5 mm.

L'alésage fait 56,50 mm et il reste 1 mm de jeu par coquille au plan de joint : c'est ce jeu qui permet aux vis de réellement pincer le tube. Les écrous M4 sont captifs dans des logements hexagonaux, aucune clé n'est nécessaire de leur côté.

Le collier s'imprime sur le flanc, axe du tube vertical. Comme son profil est strictement constant sur toute la largeur, chaque couche est identique à la précédente : aucun porte-à-faux, et un anneau vraiment rond sans support. Les couches se retrouvent en outre perpendiculaires à l'effort de serrage, là où une pièce imprimée est la plus résistante.

La transmission

La bague de mise au point de l'Evoguide est entraînée par une couronne à denture en chevrons (55 dents, diamètre primitif 80,2 mm) serrée sur la bague, et par un petit pignon calé sur l'axe du 28BYJ-48. Le support moteur se serre sur le corps du chercheur ; ses deux fentes en arc permettent de faire pivoter le moteur pour régler l'engrènement et limiter le jeu. Ces pièces sont adaptées du modèle Belt-less, helical gear focuser publié sur Printables.

Support moteur, couronne et pignon à chevrons dans le trancheur
Le support moteur (à gauche), la couronne et le pignon à chevrons (à droite).

Paramètres d'impression

PièceRéglagesMatière
Carterscouche 0,2 mm, 3 périmètres, remplissage 20 %, sans supportPLA, ou PETG si le matériel reste dehors la nuit
Collierscouche 0,2 mm, 3 périmètres, remplissage 40 %, sans supportPETG conseillé : le PLA flue sous serrage permanent

Les STL sont livrés déjà orientés pour l'impression : il ne faut pas les tourner dans le trancheur.

Visserie

QtéVisUsage
2M3 × 6Mega sur ses bossages
4M3 × 8ULN2003 sur ses plots
4M3 × 12couvercle du carter
2M3 × 10carter sur le collier
4 + 4M4 × 20 CHC + écrous M4serrage du collier
1serre-câble 3,6 mmbridage du cordon USB

Ordre de montage : visser d'abord le carter sur son collier, depuis l'intérieur, avant d'installer les cartes : les deux vis M3 se trouvent ensuite sous l'électronique et ne sont plus accessibles.

3. Le programme Arduino Mega

Le firmware FocuserMega.ino ne dépend d'aucune bibliothèque externe, seulement de EEPROM.h fournie avec l'IDE.

Installation

  1. Ouvrir Arduino/FocuserMega/FocuserMega.ino dans l'IDE Arduino.
  2. Choisir la carte Arduino Mega or Mega 2560, processeur ATmega2560.
  3. Téléverser.

Au premier démarrage, le firmware écrit ses valeurs par défaut en EEPROM et se place à mi-course (32767 sur 65535). La position est sauvegardée automatiquement une seconde après chaque arrêt du moteur.

Fonctionnement

  • Pilotage en demi-pas (séquence à 8 phases), soit 4 075,8 pas par tour de l'axe de sortie du 28BYJ-48 (rapport réel du réducteur 63,684:1, souvent arrondi à 4096).
  • Mouvements non bloquants : la commande MOVE rend la main immédiatement et le moteur avance dans la boucle principale, ce qui permet d'interroger la position ou d'envoyer HALT à tout moment.
  • Compensation du backlash : le firmware dépasse systématiquement la cible puis revient, si bien que la position finale est toujours atteinte dans le même sens.
  • Coupure des bobines à l'arrêt (désactivable) pour éviter l'échauffement.
  • Vitesse réglable : 1500 µs par demi-pas par défaut, soit environ 660 pas/s. En dessous de 1100 µs, le moteur commence à décrocher.

Le protocole série

La liaison fonctionne à 57600 bauds, 8N1, avec une commande ASCII par ligne terminée par \n. Chaque réponse tient sur une ligne, et une erreur renvoie ERR:<code> (BADARG, RANGE, BUSY, UNKNOWN, OVERFLOW). On peut donc tout tester au moniteur série de l'IDE, fin de ligne réglée sur « Nouvelle ligne » :

PING          →  PONG:AFOC1
GETPOS        →  POS:32767
MOVE:33000    →  OK
ISMOVING      →  MOV:1
STATUS        →  ST:32812,33000,1,65535,0
HALT          →  OK
CommandeRéponseRôle
PINGPONG:AFOC1Identification
GETVERVER:1.0.0Version du firmware
STATUSST:pos,cible,moving,max,backlashÉtat complet en une requête
GETPOS / GETTGTPOS:n / TGT:nPosition courante / cible
ISMOVINGMOV:0|1Mouvement en cours
MOVE:nOKDéplacement absolu
HALTOKArrêt immédiat
SETPOS:nOKRecale la position sans bouger
SETMAX:nOKCourse totale
SETDLY:nOKDurée d'un demi-pas (900 à 20000 µs)
SETBL:n / SETBLDIR:0|1OKBacklash (0 à 1000 pas) et sens d'approche
SETREV:0|1OKInversion du sens
SETHOLD:0|1OKMaintien des bobines à l'arrêt
SETSTEP:fOKTaille d'un pas en microns
SAVE / RESETOKÉcriture EEPROM / valeurs d'usine

Chaque commande SET… a son pendant GET…. Un portage pour Arduino Nano (FocuserNano.ino, firmware 1.1.0) reprend exactement le même protocole et le même câblage ; il bascule les quatre bobines en une seule écriture du port B et occupe 33 % de la flash du Nano.

Résolution

Le moteur entraîne la bague de mise au point de l'Evoguide par un pignon et une couronne imprimés à denture en chevrons. La résolution se calcule à partir des diamètres primitifs :

résolution = pas de l'hélicoïde ÷ (4 075,8 × Dp couronne ÷ Dp pignon)
  • couronne : Dp = 80,2 mm (55 dents) ;
  • pignon : Dp ≈ 22,7 à 26,3 mm selon le réglage de l'entraxe (fentes du support moteur) ;
  • rapport de 3,05 à 3,53, soit 12 400 à 14 400 pas moteur par tour de bague.

Pour un hélicoïde de 1 mm par tour, chaque pas déplace le foyer d'environ 0,07 µm (0,069 à 0,080 µm). À f/4,8, la zone de netteté de l'Evoguide fait environ ±30 µm : elle couvre près de 1 000 pas, la finesse de réglage est donc largement suffisante et c'est le jeu des engrenages qui limite la précision. Cette valeur est à renseigner dans le champ Taille d'un pas du driver, après avoir mesuré le pas réel de l'hélicoïde (avance du tube sur 5 tours de bague, divisée par 5).

Calibrage

  • Course totale : partir de la butée basse, envoyer SETPOS:0, puis remonter par paliers (MOVE:2000, MOVE:4000…) jusqu'à la butée haute. La dernière valeur, moins une petite marge, devient la course maximale.
  • Backlash : sur une étoile, avancer de 200 pas puis reculer de 200, et compter les pas nécessaires avant que l'image ne réagisse au changement de sens.

4. Le driver ASCOM

ASCOM est la norme qui permet aux logiciels d'astronomie sous Windows (N.I.N.A., MaxIm DL, SharpCap, APT…) de piloter le matériel de manière uniforme. Le projet fournit un driver ASCOM COM écrit en C# (.NET Framework 4.8, ASCOM Platform 6.6), qui pilote le focuser par la liaison USB du PC Windows.

Compilation et installation du driver COM

Il faut l'ASCOM Platform 6.6 et Visual Studio 2022 avec la charge de travail « Développement .NET desktop ». On ouvre src\ArduinoFocuser.sln et on génère en configuration Release.

Pour l'enregistrement, copier Install.bat à côté de ASCOM.ArduinoFocuser.Focuser.dll et l'exécuter en administrateur. Le driver apparaît alors dans le sélecteur ASCOM :

  • ProgID : ASCOM.ArduinoFocuser.Focuser
  • Nom affiché : Arduino 28BYJ-48 Focuser

Configuration

Le bouton Properties… du sélecteur ouvre la fenêtre de réglages : port COM (avec un bouton « Tester la connexion »), course totale, taille d'un pas en microns, durée d'un demi-pas, inversion du sens, maintien des bobines, jeu à rattraper et sens d'approche, journal de trace. Ces paramètres sont enregistrés dans le profil ASCOM et renvoyés à l'EEPROM de l'Arduino à chaque connexion, pour que les deux côtés restent toujours cohérents.

Conformité à la norme

Le driver implémente l'interface IFocuserV3 :

  • Absolute vaut True ; Move() reçoit une position absolue et rend la main immédiatement, IsMoving passant à True.
  • MaxIncrement est égal à MaxStep : n'importe quelle position est accessible en un seul mouvement.
  • Le montage n'a pas de sonde : TempCompAvailable vaut False et Temperature lève PropertyNotImplementedException, comme l'exige la spécification.

La validation se fait avec ConformU, l'outil officiel de l'ASCOM Initiative :

conformu conformance ASCOM.ArduinoFocuser.Focuser --devicetype Focuser

Actions personnalisées

Via Action(nom, paramètre), le driver expose Sync, GetFirmwareVersion, GetBacklash, SetBacklash, GetStepDelay et SetStepDelay. Les méthodes CommandString, CommandBlind et CommandBool transmettent directement une commande du protocole série.

Dépannage

SymptômeCause probable
Aucun focuser détectéMauvais port COM, firmware absent, ou moniteur série de l'IDE resté ouvert
Le moteur vibre sans tournerFils inversés, ou durée de demi-pas trop courte
Le moteur chauffe à l'arrêt« Maintenir les bobines » est coché
Pas perdus en chargeAugmenter la durée du demi-pas (1800 à 2500 µs)
Position fausse après redémarrageAlimentation coupée moins d'une seconde après un mouvement
Absent du sélecteur ASCOMInstall.bat non lancé en administrateur

Structure du driver COM dérivée du modèle ASCOM Focuser Driver (C#) de l'ASCOM Initiative. Documentation développeur : ascom-standards.org.

Laisser un commentaire