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: