ASTROGPU
CONTACT
LIENS
GALERIE
PAGES
ACCUEIL
ASTROGPU
ACCUEIL » BRICOLAGES
Article 1
Focuser PC lowcost ou transformation d'un moteur de mise au point 
Généralement, on trouve ce type de produit aux alentours des 60€. Je voulais à la base me faire une solution connectée au PC de manière à pouvoir affiner la mise au point sur l'écran.  
Sachant qu'on peut le piloter aussi via un accès à distance via un logiciel comme TeamViewer.  
Avant que ça devienne compliqué dans le temps de part certains ajouts à venir, j'affiche ici la base du projet qui est simple est fonctionnelle pour donner peut être le gout à la programmation pour certains ou tout simplement réaliser un focuser pour PC à moindre cout.  
 
Pour ce projet, il faut:  
 
-1 moteur de mise au point (60€) forcement :D  
-1 LN298 (moins de 2€).  
-1 Arduino : Perso, je préfère le Nano car tout petit et plus pratique pour le ranger dans une boite (moins de 2€)  
-1 alimentation 12V (1A à 1,78€ sur Ali en ce moment).  
-1 boitier (moins de 4€ mais à voir en fonction de vos ambitions).  
 
 
Le principe est simple:  
Le moteur (DC) est branché sur le L298 qui lui même est relié à l'Arduino selon le plan fourni.  
L'alimentation du moteur se fait par le transformateur en 12V et le LN298.  
Seul la borne négative (-) est commun avec l'Arduino via le GND (masse appelée aussi le - dans le cas de l'Arduino ).  
 
Le code à injecter dans l'arduino est aussi très basique: (voir ce site pour le soft Arduino:
https://www.arduino.cc/en/Main/Software )  
 
// Simple Focuser  
//-- MOTEUR B --  
int ENB=6; //Connecté à Arduino pin 6(Sortie pwm)  
int IN3=4; //Connecté à Arduino pin 4  
int IN4=7; //Connecté à Arduino pin 7  
 
String Code;  
String SubCode;  
 
void setup() {  
    Serial.begin(115200);  
    Serial.setTimeout(10); //important pour plus de rapidité  
    pinMode(ENB,OUTPUT);//Configurer les broches comme sortie  
    pinMode(IN3,OUTPUT);  
    pinMode(IN4,OUTPUT);  
    digitalWrite(ENB,LOW);// Port moteur B désactivé par défaut  
}  
 
void loop() {  
  if (Serial.available() > 0) { 
 
     Code = Serial.readString();  
 
   if (Code.substring(0,1)=="L") {  
      SubCode=Code.substring(1,4);  
      digitalWrite(IN3,HIGH);  
      digitalWrite(IN4,LOW);  
      analogWrite(ENB,SubCode.toInt());  
      delay(10);  
     }        
 
   if (Code.substring(0,1)=="R") {  
      SubCode=Code.substring(1,4);  
     digitalWrite(IN3,LOW);  
     digitalWrite(IN4,HIGH);  
     analogWrite(ENB,SubCode.toInt());  
     delay(10);  
    }    
 
   digitalWrite(ENB,LOW);  
   }   
 }   

 
Voilà, c'est tout pour l'Arduino ! (désolé pour la mise en page, j'ai pas les balises 'code' xD)

 
Schéma de câblage et réprésentation des divers éléments ci-dessous.


Bon ok, c'est une pile ou c'est écrit 9v et je demande du 12v ^^, ça marchera aussi avec du 9V mais pour mes évolutions futures, je prends du 12v sous 1A ;) 
 
Oui mais comment je relie moteur au L298 ?? Ben c'est au choix ^^ sois tu coupes ton cordon pour récupérer les 2 fils (4 en fait car ils sont doublés) ou tu te refais un joli cordon avec une pince à RJ, une RJ11 4 pins et du cable RJ etc... 
Le but du jeu, c'est d'avoir le schéma ci-dessus câblé de la sorte. 
Après faut relativiser, ça revient juste à brancher un petit moteur sur une pile plus sophistiquée. 
 
En partant du principe que tout ou dessus est Ok, on va pouvoir attaquer la partie coté PC. 
2 solutions pour finaliser le projet, soit on télécharge l'application toute faite et on s'en sert ou alors on reprend le code ci-dessous qu'on va soit même pouvoir modifier pour ses propres besoins. 
 
Je vais pas faire un cours sur la programmation (ça serait trop long ^^) mais pour faire simple, ce petit code une fois compilé va générer un .exe sur votre PC. 
 
Le code est en language pascal qui peut être compilé avec Delphi. 
Bref, tout est là ->
https://delphi.developpez.com/telecharger-gratuit/delphi7-perso/ 
C'est gratuit légal et easy ! 
 
Seulement 2 difficultés pour les non habitués (trop facile sinon ^^), il y aura 2 composants à intégrer dans l'IDE (là je commence à te perdre !). 
-ComPort pour la gestion du port COM avec l'Arduino:  
 
-AnalogGauge pour avoir un joli dessin qui sert à rien:
https://sourceforge.net/projects/comport/files/comport/2.64-delphi7/ 
 
Et pour finir, les codes sources avec l'executable pour faire mumuse avec-> http://astrogpu.free.fr/Files/Other/simpleFocuser.rar
 
Chouette ton truc ! Ca fait quoi ?? Oo 
 
L'arduino est relié au Pc via l'usb, le Pc communique avec l'Arduino via le port COM qui pilote le L298 qui alimente le moteur. 
On appuie sur les touches W ou X pour faire avancer/reculer son porte objectif et les touches Q et S peuvent servir aussi pour changer la vitesse de rotation du moteur. 
 
Vu qu'on est sur un moteur DC, on peut aussi monter la vitesse à fond et donner des impulsions sur les touches pour paufiner la mise au point. 
Le système tel quel avec ces réglages de vitesse reste très précis et en comblera plus d'un de part son cout total et l'ajout d'options futures tel que l'ajout d'une sonde de température,un écran LCD....bref que des trucs qui servent à rien mais qui vont combler vos longues soirées d'hiver sous la pluie .



Article 2
Focuser PC Wifi avec un moteur pas à pas.
Là aussi, ce type de produit peut coûter cher à l'achat, mais heureusement, on trouve pleins de solutions basées sur le même concept sur le web
 (même trop d'ailleurs ^^).  
Et bien là, ça fera un projet de plus ;)  
 
Personnellement, j'ai préféré partir de 0 car aucun des projets que j'avais lu ne m'avait séduit et comme on le dit si bien: 'on est jamais mieux servi que par soit-même'.  
De plus, ça laisse la possibilité de piloter le moteur avec n'importe quoi du moment qu'on programme un peu (ASCOM, etc …) 
 
Pourquoi sans fil ? 
J'avais plus de ports USB de dispo sur mon PC et j'avais pas envie de passer par un HUB USB. 
 
Pour ce projet, il faut (je donne les réf exactes de mon projet):  
-1 moteur pas à pas type Nema14 réf: 14HS13-0804S 
-1 driver A4988 
-1 ESP8266 ESP-12 NodeMCU 
-1 alimentation 12V (5A) 
-1 sonde ds18b20  
-1 poulie 48 dents.  
-1 courroie 6mm 220 dents 
-1 Condensateur de 100ùF  
-1 résistance de 4.7K  
 
Pour la conception des supports, j'ai utilisé une imprimante 3D. 
Je pense qu'à ce jour, ça devient quasiment indispensable pour ce type de bricolage vu le prix des Fab Lab,,, 
 
 
Le principe est aussi simple pour reprendre l'article 1:  
Le moteur (PAP) est branché sur le A4988 qui lui même est relié à l'ESP8266.  
L'ESP8266 sera configuré en mode serveur via le protocole UDP et en fonction du programme client, il tournera dans un sens à tel vitesse ou autre ...  
 
Pour l'assemblage, j'ai préféré faire un anneau 'porte outils' pour différentes raisons:  
-Ne pas à avoir à modifier le porte objectif d'origine ! 
-Ajouter d'autres éléments dans le futur (passe câbles, support cam, etc ...) de part la modification d'une seule pièce. 
-Pouvoir jouer avec la tension de la courroie en tournant l'anneau avant serrage de celui-ci sur le tube.  
 
Bref, c'est modulable et ça ne modifie en rien le tube et le PO de base, 
 
Par contre, le modèle de l'anneau que j'ai modélisé s'adapte que sur un tube SW 200/1000 mais le principe resterait le même selon le type de tube ou lunette à mettre en œuvre (va juste falloir un peu bosser la modélisation en 3D ;) )  

Je suis bien entendu non tenu pour responsable en cas d'échec, incendie, coupage de doigts ou autres lors de la réalisation du projet par vos soins ^^ 
 
Ci-dessous, pour commencer, quelques images pour décrire le projet en mode généraliste ainsi que le lien des STL à imprimer : 

 
ESP8266
ESP8266
Anneau de montage
Anneau de montage
Pour la partie électronique, j'ai commencé avec une planche de prototypage et j'ai ensuite réalisé via Kicad un PCB histoire que ça soit plus propre. 
De plus, Kicad est gratuit et c'était formateur de l'utiliser, faut compter environ 2/3 heures pour une prise en main rapide.

Ci-dessous le schéma électronique ainsi que le fichier Berber du PCB réalisé:

Anneau de montage
Anneau de montage
Comme je disais plus haut, le code coté ESP écoute via le protocole UDP d'éventuelles commandes envoyées par un client sur le même réseau.
Exemple, le client envoit la commande 'T' pour demander la température et l'ESP suite à la lecture de la sonde va renvoyer au client la valeur de la température en cours.
C'est pas plus compliqué que ça, et on peut lui demander presque tout sauf un café ;)

Coté ESP (donc serveur), il faut ajouter 2 librairies:
-WifiManager: pour configurer le focuser sur le réseau ou simplement lui dire qu'on reste en local sans passer par un routeur.
-Accelstepper: pour la gestion et le pilotage du moteur.
-Une 3ième lib. peut être ? perso, j'ai mis l'OTA sur l'ESP pour ne plus avoir à le brancher sur un port USB et pouvoir téléverser le code au fur et à mesure des changements apportés (question de confort).

A noter qu'un ESP se programme comme n'importe quel Arduino, il faut juste configurer l'IDE de l'Arduino.

Coté PC (client), j'ai mis en ligne la source et son executable qui montre comment gérer le focuser de son PC.
Le tout est sous Delphi (pour mémo, on trouve gratuitement et légalement la version de Delphi7 :https://delphi.developpez.com/telecharger-gratuit/delphi7-perso/

Libre à chacun de modifier les codes sources pour personnaliser son interface pour ses propres besoins.
Coté client, on pourrait anticiper la température pour mieux gérer les darks, refaire une mise au point, créer des stats MAP/Temp, etc ...

Pour le moment, le focuser fonctionne comme décrit ci-dessous:

Si non configuré pour la première fois:
-mise sous tension -> se connecter sur le SSID 'wFocusInit' en wifi->configurer son accès sur le routeur -> 'Exit'.
-se connecter sur 'wFocusV1' en wifi ou aussi via son réseau local puisqu'on peut connaitre l'IP de son focuser via la webconfig ->'Exit' et le focuser est prêt à communiquer avec le logiciel client.

Si déjà configuré, on saute la partie 'configurer son accès sur le routeur'.

Coté client, l'appuie sur les touches 'w' ou 'x' fera avancer ou reculer le PO en fonction de la vitesse choisie.
A l'allumage du module, quelque soit la position du PO, ça sera le point 0 pour le driver.
Je pense qu'il vaut mieux rentrer le PO à fond et mettre le point 0 à la butée du PO de manière à pouvoir par exemple faire un goto à une position précise de mise au point avec un imageur.
Par exemple, si la MAP est bonne à la position 46000 pour mon APN, je sais qu'en partant de 0 je n'aurais qu'à faire un Goto à 46000 pour avoir déjà une mise au point correct (mais pas parfaite).
Idem pour une caméra qui serait à la position 44000 par exemple ...
Ca serait facile de l'intégrer dans le programme client, sauf que là, je l'ai volontairement pas fait (va falloir un peu se mettre à coder pour l'hiver ^^).
Les plus couragueux vont intégrer cette fonction dans le client, les autres pourront toujours noter les positions sur un bloc note ;)

Assez causé ;)

Les codes coté ESP (IDE Ardiuno) et client (Delphi) : wFocus ESP et wFocus Delphi

A venir, d'autres photos, une petite vidéo et peut être une APK sous androîd quand je l'aurais terminé au propre :)

Bonnes bidouilles !



Petite MAJ du 31/12/2018:
wFocus pour fonctionner avec le focuser (version beta).
Testé sur une étoile puis j'ai vérifié avec un masque de Bahtinov et même un tri Bahtinov et c'est plus que correct.
Petit bug connu, juste un petit décalage sur un PC portable lors de la selection d'une étoile (RAS sur mon PC).
Petit oubli dans l'aide, il faut choisir une étoile avec la souris puis faire 'MAJ' + clic gauche souris pour de/verrouiller la position (le contour de la fenêtre de gauche passera au rouge).
Dans la limite du raisonnable, l'étoile sera toujours replacée au milieu du viseur en cas de dérive.

12/01/2019:
Ci-dessous, mon 1er driver Ascom ! simple et il fait le job ;)
Driver ASCOM en beta (Conform Ascom validation OK)