mercredi 9 décembre 2015

Précision du senseur à effet Hall US5881LUA

J'ai testé récemment la précision du capteur à effet Hall US5881LUA (décrit http://mchobby.be/wiki/index.php?title=Senseur_%C3%A0_Effet_Hall).

Il s'agit de valider que ce dispositif est utilisable pour calibrer mon système de motorisation de roue à filtre. Il faut pour cela que la position de bascule soit précise et stable.

J'ai utilisé un aimant en terre rare intégré dans un montage rapide en LEGO, controlé par un moteur pas à pas (toujours le BYJ48). Le moteur translate une crémaillère où l'aimant est fixé. Le capteur détecte alors le passage de l'aimant.



Le moteur est programmé pour avancé la crémaillère jusqu'à ce que le senseur le détecte. Il indique alors le nombre de pas parcourus puis recule d'autant et recommence. Si le système est précis, le nombre de pas sera sensiblement identique. Si le nombre de pas varie, c'est soit que le capteur n'est pas trés précis, soit que le montage n'est pas rigide (et en LEGO, c'est tout à fait possible)

Les résultats sont très bons !

D'abord le passage de l'aimant n'est jamais loupé...

Ensuite, la valeur obtenue oscille entre deux pas de moteur. En prenant en compte les ratio des des engrenages, cela indique une précision au moins aussi bonne que 0,01mm, et certainement mieux compte tenu du dispositif "mécanique" utilisé !

Ce petit capteur trouvera certainement une utilité sur ma future roue à filtre motorisée !

samedi 12 septembre 2015

Focuser Arduino : partie logiciel

Dans un billet précédent, je vous présentais le circuit électronique de mon Focuser Arduino.Maintenant que tout est branché, reste à lui donner vie, en commençant aujourd'hui par la programmation Arduino !

La programmation du Arduino Nano se fait en C/C++; on développe un programme qui est compilé puis uploadé sur la carte électronique: un firmware. Celui-ci s'exécute alors dès la mise sous tension de l'Arduino et dialogue avec le PC via un canal série. Petite complication : le programme est réinitialisé à chaque connexion sur l'usb.

Le Firmware doit être à l'écoute du PC, pour reconnaître des messages et envoyer des réponses en fonction... Je suis reparti du protocole déjà utilisé ici ici, mais ne le complétant pour les fonctions de chauffage et surveillance de la tension.

Les déplacements du moteur sont fait avec une accélération progressive et une décélération avant d'arriver à la cible. Cela permet d'avoir un couple plus important lors de ces phases. Pour se faire - comme le moteur que j'utilise est unipolaire - il suffit d'allumer séquentiellement ses quatre PIN pour déclencher la rotation. Le firmware compte donc les transitions et contrôle précisément le délai entre chaque pour imprimer la vitesse souhaitée. La position du moteur est enregistrée de temps à autre dans la mémoire CMOS pour qu'elle ne soit pas perdue d'une session à l'autre. Ainsi, tant que le focuser n'est pas démonté physiquement, la zone de mise au point se retrouvera sensiblement au même "pas moteur" au fil du temps.

Pour le chauffage, le Firmware lit toute les 20 secondes les deux capteurs, et décide d'une intensité de chauffage à appliquer en fonction de l'écart entre la température du téléscope et le point de rosée. Il vise un écart entre 4°C et 5°C. En deça de 4°C, le chauffage est à 100% et au delà de 5°C il reste coupé. L'intensité est produite par une technique dite de "PWM" (pulse width modulation) : la résistance est démarrée/arrêtée à une fréquence de quelques centaines de hertz, en fonction de l'intensité voulue. Le chauffage produit est donc promotionnel à la durée d'allumage effective de la résistance.

Enfin, à intervalle régulier, le Firmware va envoyer un message d'état récapitulant le status du moteur, les valeurs mesurées sur les différents capteur et la tension mesurée sur la batterie.

Le firmware est dispo ici: ArdFocuserFirmware-20160501.zip

Pour l'uploader sur le contrôleur Arduino, il vous faudra d'abord installer l'environnement de dev Arduino, puis utiliser la commande avrdude (en adaptant le chemin de avrdude, et le chemin du fichier ardfocuser.hex):

C:\Program Files\arduino-1.6.5-r5\hardware\tools\avr/bin/avrdude -CC:\Program Files\arduino-1.6.5-r5\hardware\tools\avr/etc/avrdude.conf -patmega328p -carduino -PCOM29 -b57600 -D -Uflash:w:C:\tmp\ardfocuser.hex:i 


Sinon, le code source du firmware est disponible sur github. Si vous voulez l'utiliser, sachez que le développement du firmware a été fait sous Eclipse, grace au fantastique plugin Arduino disponible ici. Il vous faudra donc donc d'abord installer la version d'Eclipse Arduino puis importer le projet présent sur github.


mercredi 2 septembre 2015

Une première photo avec le focuser motorisé

Je viens de terminer les traitements de ma première photo depuis un an... C'était l'occasion de tester la motorisation de mon focuser et la régulation du chauffage anti-buée.

Voici donc M27 (dumbbell), en 3h de pause LRVB.


Je suis très satisfait du résultat, même si il n'est pas parfait.
  • Il y a un problème de forme des étoiles sur les bord. Je pense que le réducteur n'est pas parfaitement dans l'axe optique (il y a un léger jeu au niveau du porte occulaire)
  • La mise au point n'est pas top, notamment parce qu'elle a bougé en cours de nuit... mais c'est déjà mieux que ce que j'obtenais péniblement à la main ! Et le gain de temps est ÉNORME.
Voici mon soft de mise au points auto à l'oeuvre:

dimanche 14 juin 2015

Focuser Arduino : circuit et bonus

La partie mécanique du focuser motorisé étant terminée (voir le précédent billet), il faut maintenant connecter le tout à un ordinateur.

Un module Arduino Nano semble tout désigné pour ça:
  • il est relativement petit, 
  • la connectivité USB, 
  • il possède de nombreuses possibilités en sortie,
  • les exemples sont très nombreux sur le Net (comme ici ou ),
  • on le trouve à 2€50 sur ebay...
Un Arduino Nano vu de dessus



Le moteur va être piloté par un module ULN2003A (souvent vendu avec). Ce module permet de transformer les signaux issus des pin du Arduino en tension applicable au moteur pas à pas.
Un moteur 28byj48 avec son module ULN2003A




Comme le Arduino a largement la capacité à faire autre chose, j'ai décidé d'ajouter également le pilotage d'une résistance chauffante. Le but est d'économiser l'électricité, et l'autonomie de mon setup complet.  Cette tache requiert de comparer la température du tube optique avec le point de rosé (la température à laquelle la rosée se forme). Ce dernier est déduit de la température et l'humidité extérieure.

Le contrôle du chauffage requiert donc quelques composants en plus:
  • Pour servir d'interrupteur on/off sur la résistance chauffante: un Moffset (transistor de puissance), avec une résistance et une diode. J'ai utilisé un transistor IRF540N et une diode 1n4007.
  • une sonde de température qui devra être contre le tube optique : DS18B20 (trouvée à 3€ toute montée sur ebay avec la recherche "DS18B20 Dallas 1-Wire Digital Thermometer Etanche (Waterproof)")
  • une sonde d'humidité qui devra être à l'air libre : DHT22 (5€ sur ebay)

Enfin, le Arduino est capable de mesurer une tension. C'est très pratique pour connaître l'état d'une batterie ! Comme le Arduino ne peut mesurer précisément que des température relativement faible (de l'ordre de 1,2V), il faut réduire la tension pour pouvoir la mesurer. Le montage est trés simple, il s'agit d'un pont de 3 résistances entre le gnd et l'entrée +12V. Il faut des résistances suffisamment grandes pour que la consommation soit négligeable. Le pin Arduino analogique est ensuite simplement connecté entre deux résistances. La valeur n'est pas très précise parce que la référence interne du Arduino Nano n'est pas calibrée. Par contre, elle est stable, ce qui donnera quand même une bonne indication de l'évolution de la tension, y compris d'une soirée à l'autre.


Au final, voici le circuit, présenté sur une carte de prototypage (attention, c'est vu du dessous !):







dimanche 31 mai 2015

Motorisation de mise au point sur le Mak Intes M500

Je me suis lancé dans la construction d'un focuser motorisé pour mon téléscope !

J'utilise essentiellement mon téléscope pour faire des photos du ciel profond, avec un caméra CCD spécialisée connectée à un ordinateur.

Normalement, la mise au point est faite en tournant manuellement une molette. La précision requise est de l'ordre du centième de tour (quelques degrés). La difficulté est qu'en astrophoto, on n'a pas un retour direct sur les manipulations et donc il faut beaucoup d'aller-retour avec l'ordinateur et une bonne intuition pour réussir une mise au point correcte en un temps raisonnable - tout ça de nuit bien-sur. Et la qualité de la mise au point est forcement cruciale pour le résulta final !

L'idée de ce montage est de motoriser la molette de mise au point pour qu'un logiciel sur l'ordinateur puisse tout contrôler : Le logiciel va déclencher les déplacements de la molette, les prises de vue et en rechercher la meilleure position en fonction de la netteté de chaque image.



Je suis parti d'un projet existant trouvé sur un forum : http://stargazerslounge.com/topic/218975-arduino-ascom-focuser-mark2/


Les idées du projet original sont:
  • utiliser un moteur pas à pas facilement controlé par un Arduino
  • coupler ce moteur à l'axe de la molette
  • développer un driver "ASCOM" pour faire l'interface entre l'arduino et les logiciel d'astrophoto capables de piloter le tout
Mon téléscope n'étant pas particulièrement accueillant pour un tel montage (c'est une INTES M500, construit comme un tank russe).... la première difficulté à été de trouver un moyen de couplage du dispositif avec l'axe de mise au point.

Il faut d'un coté trouver comment coupler le moteur à l'axe, et de l'autre fixer le dispositif pour qu'il ne soit pas du tout mobile, pour ne pas qu'il tourne autours de l'axe, et aussi pour qu'il ne soit pas source de vibration pendant les photos !

Voici comment se présente l'arrière de mon télescope (molette retirée) :

A la main, l'axe est un peu résistant, et je ne suis pas du tout confiant sur la capacité d'un petit moteur pas à pas à l'entrainer. La courroie semble une bonne option pour avoir de la liberté sur le positionnement du moteur, et permettre une réduction avec des roues de taille différente. J'ai opté pour une combinaison de roues et courroies MXL025, avec un moteur pas à pas BYJ48 en 12V. Ce dernier a déjà une réduction interne importante (4096 pas par tour !), encore réduit par le rapport de 5 entres les roues utilisées pour atteindre 20000 pas par tour (sous réserve d'un montage rigide !)

Pour le montage de la grande roue sur l'axe du focuser (d'un coté du diamètre 13, de l'autre du 6), j'ai improvisé un coupleur maison en bois :


Enfin, l'ensemble va utiliser le support de chercheur présent sur le tube, que je n'utilise pas.

Voici un premier "prototype" en polystyrène:

Et voici la version presque finale, essentiellement en alluminium (des corniches avec écrou et boulon) et un petit tasseau. Le Arduino va loger dans une plinthe en ABS blanc.


C'est tout pour la partie mécanique ! Je détaillerais dans un autre post le circuit électronique et les aspects logiciels!