Jump to content
mala05

EM10 USD Arduino: ma Takahashi revisitée.

Recommended Posts

Après quelques mois de devs, ma vieille EM10 reprend du service avec un premier prototype opérationnel d'électronique revisitée avec un Arduino Mega…

img_1940.jpg

 

L'idée est de mettre au gout du jour l'électronique d'origine vieillissante qui a près de 20 ans.

stacks_image_1105.jpg

Le cahier des charges a bien évolué en 8 mois à faire mumuse. Dans les grandes lignes cela donne ceci:

- Pilotage par écran tactile et/ou manette de jeux vidéo.

- Calibration plus précise de la vitesse sidérale.

- Rattrapage automatique du backslash sur les deux axes.

- Correction d'erreur périodique par modulation de fréquence avec assimilation de tous les engrenages.

- Interface d'autoguidage modernisée (genre protocole LX200).

- Goto relatif avec base de données d'objets stellaires et planétaires.

- Abaque numérique pour le viseur polaire (réglé automatiquement via puce GPS).

- Connexion sans fils Bluetooth.

- Budget visé inférieur à 150€ en conservant les moteurs d'origine.

 

L'électronique de puissance, disposée derrière le Arduino sur le proto, est basée sur des composants standards du marché (2 driver StepStick, un régulateur 5v et un régulateur 12v)…

d28b3115.jpg

 

d28b3113.jpg

 

Et voici un aperçu en vidéo, tout frais de cette nuit, du proto opérationnel sous les étoiles… :banana:

 

A terme cela devrait ressembler à quelque chose comme ça pour l'interface…

screens.png

 

Une partie du code est déjà dispo sous forme de bibliothèques pour Arduino afin d'en faire profiter la communauté pour d'autres projets de montures:

Run Loop: Parallélisation des traitements.

Ephemeris: Calcul des éphémérides planétaires et conversions astronomiques.

Sky Catalog: Base de données d'objets célestes.

Genesis Gamepad: Contrôler une manette Genesis/Mega Drive.

Plus de détails et de doc ici: http://em10-usd-arduino-takahashi.eliotis.com/librairies-arduino/index.html

 

Petit à petit cela prend forme. Le gros du travail concerne la partie logicielle dans l'immédiat. Voilà dans les grandes ligne mon joujou du moment. :wub:

 

Plus de détails sur mon blog mis à jour régulièrement pour les curieux… :be:

http://em10-usd-arduino-takahashi.eliotis.com/blog/index.html

 

Astronomiquement,

Seb.

Share this post


Link to post
Share on other sites

Super projet. Moi qui n'ai aucunes connaissances en électronique je suis toujours très admiratif.

Share this post


Link to post
Share on other sites

ca calme c'est sur....

 

Pour bien comprendre, ton projet controle complètement la monture, n'utilisant que les moteur/transmission originel de la Takahashi?

 

Donc, si on rajoute les moteurs, cela ferait un systeme GoTo complet?

Share this post


Link to post
Share on other sites

Merci! :)

 

Pour bien comprendre, ton projet controle complètement la monture, n'utilisant que les moteur/transmission originel de la Takahashi?

Oui.

 

Donc, si on rajoute les moteurs, cela ferait un systeme GoTo complet?

Sur le principe, pour être parfait, il manque des encodeurs permettant de connaitre la position de la monture si l'on débloque les axes pour manipuler le télescope en manuel. Après, des moteurs permettant de faire du goto à une vitesse correcte nécessitent un ampérage assez conséquent. Ma partie puissance est je pense un peu trop limitée car dimensionnée pour mes moteurs actuels. Le régulateur 12v délivre 2 ampères max. Cela me semble beaucoup trop juste.

Share this post


Link to post
Share on other sites

Quelques photos complémentaire du proto lors du remontage…

img_1953.jpg

 

img_1954.jpg

 

img_1956.jpg

 

A terme tout cela devrait être beaucoup plus compact. Je pense aussi déporter l'écran pour ne pas être gêné en fonction de la direction pointée par le télescope.

Share this post


Link to post
Share on other sites

Démo d'avancement de ma nouvelle bibliothèque C++ ScreenView...

Elle a pour but de faciliter la conception et la gestion d'interfaces graphiques avec un écran tactile sur Arduino. Elle sera compatible avec les écrans exploitant la librairie Adafruit.

 

Dans les grandes lignes la bibliothèque permettra:

- Mise à dispo de composants graphiques de base (label, boutton, slider, image BMP 16 bits et 24 bits, conteneurs, etc).

- Agencement hiérarchique des composants graphiques.

- Rafraichissement optimisé pour ne mettre à jour que les zones modifiées.

- Le tactile de la bibliothèque d'Adafruit a été amélioré pour gérer le touch down, touch move et touch up.

- Possibilité de réaliser des captures d'écran en bmp vers carte micro SD (pratique pour faire de la doc).

- Un mode "vision de nuit" est intégré d'origine pour les projets astro. :wub:

 

Compter un peu plus de 7€ pour l'écran 400x240 sur volumerate.com. De quoi relayer dans un tiroir les écrans LCD 16x2. :be:

Share this post


Link to post
Share on other sites

Hello Mala05,

Fantastique, ca fait très pro !!

Je cours sur son ton blog

Share this post


Link to post
Share on other sites

Une question pour toi Mala05,

Ton système est "autonome",mais pourrait-il intégrer des driver EQMod/ASCOM pour être commandé par un PC (Kstar/Ekos par example) facilement?

Share this post


Link to post
Share on other sites
Une question pour toi Mala05,

Ton système est "autonome",mais pourrait-il intégrer des driver EQMod/ASCOM pour être commandé par un PC (Kstar/Ekos par example) facilement?

+1 :)

Share this post


Link to post
Share on other sites

Attends attends attends :

Je ne peux pas me contenter d'un pauvre "+1" avec un smiley derrière.

Je suis allé voir ton blog, que dire... euh... respect Monsieur.

Tu fais partie des démons qui vont encore me pousser à essayer de suivre péniblement cette lumière, comme un moucheron que je suis sur feu ardent que tu es.

Ouf, c'est mieux là. (je mets pas de smiley, ça fait plouc là)

Share this post


Link to post
Share on other sites

Sega c'est plus fort que toi!

Sinon super la modif.

Edited by Astrobug

Share this post


Link to post
Share on other sites

Merci les gars! :)

 

MDR gehelem. Effectivement, le smiley serait de trop. :D

 

Plus sérieusement, pour le pilotage via PC oui c'est prévu. Je pense passer par le protocole LX200GPS qui est assez léger et facile à implémenter. La connexion se fera alors via l'usb ou sans fil avec le bluetooth.

Share this post


Link to post
Share on other sites
Merci les gars! :)

 

MDR gehelem. Effectivement, le smiley serait de trop. :D

 

Plus sérieusement, pour le pilotage via PC oui c'est prévu. Je pense passer par le protocole LX200GPS qui est assez léger et facile à implémenter. La connexion se fera alors via l'usb ou sans fil avec le bluetooth.

 

:eek::eek::eek::eek::eek::eek::eek:

J'ai bien lu???

 

:waaarg:

 

:god2::god2:

 

ca ve en interesser plus d'un...

Share this post


Link to post
Share on other sites

Ce n'est pas très complexe. Le protocole LX200 est bien documenté et relativement basique…

http://www.meade.com/support/LX200CommandSet.pdf

 

Après la connexion USB sur le Arduino n'est rien de plus qu'une liaison série type RS-232. Il en va de même pour le bluetooth. Une puce HC-06, on connecte 4 fils (Tx/Rx/5v/Gnd) et on a notre liaison série sans fil.

Share this post


Link to post
Share on other sites
Ce n'est pas très complexe. Le protocole LX200 est bien documenté et relativement basique…

http://www.meade.com/support/LX200CommandSet.pdf

 

Après la connexion USB sur le Arduino n'est rien de plus qu'une liaison série type RS-232. Il en va de même pour le bluetooth. Une puce HC-06, on connecte 4 fils (Tx/Rx/5v/Gnd) et on a notre liaison série sans fil.

 

C'est une très très bonne nouvelle, merci pour le partage.

Tu mettras ton code sur GitHub ? Je suis curieux de voir la complexité du truc...

Share this post


Link to post
Share on other sites
C'est une très très bonne nouvelle, merci pour le partage.

Tu mettras ton code sur GitHub ? Je suis curieux de voir la complexité du truc...

Oui tout sera dispo. :amigos:

 

Mon approche est un peu différente des projets que j'ai vu jusqu'à présent. Je développe sous forme de briques logicielles en mettant à dispo les nouvelles bibliothèques à mesure que j'avance. L'idée est de répondre au besoin de ma monture mais avec du code "facilement" exploitable (faut pas pousser mémé non plus. Il y a un minimum de connaissances à avoir en programmation C/C++) pour d'autres projets de monture à base de Arduino.

 

Là je travaille donc pour l'instant sur la partie interface graphique avec la bibliothèque ScreenView. Je vais ensuite repartir sur le pilotage des moteurs qui est un morceau plus conséquent qu'il n'y parait. La partie bas niveau (Timer, etc) est déjà opérationnelle avec la bibliothèque RunLoop. La bibliothèque dédiée aux moteurs se basera sur le A4988 qui s'avère à l'usage plus précis en positionnement que le DRV8825 (Le nombre de micro pas ne fait pas tout). Un article intéressant sur le sujet pour ceux qui lisent l'anglais…

http://hackaday.com/2016/08/29/how-accurate-is-microstepping-really/

 

Je compte aussi mettre au point un correcteur PEC plus précis que ce que l'on trouve à l'heure actuelle. L'idée de base est de concevoir un simulateur logiciel d'engrenages. Mais ça c'est presque un autre projet à part entière nécessitant le développement d'un analyseur dédié pour le contrôle. Je vous présenterais ça dans un autre sujet.

Edited by mala05

Share this post


Link to post
Share on other sites
Oui tout sera dispo. :amigos:

(...)

Merci beaucoup, c'est exactement ce que je disais plus haut, je vais encore ramer à suivre.

M'en fous ça m'intéresse, et ça occupera les soirées d'hivers nuageuse/pluvieuses/etc...

merci encore

Share this post


Link to post
Share on other sites

Aller, je déterre ce sujet pour vous donner des nouvelles de mon projet que des contraintes professionnelles et personnelles m'avaient contraint à mettre de côté depuis l'été dernier. Mais c'est l'été, je suis en vacances alors au boulot!!!

 

Ceci dit, je n’ai pas chaumé en parallèle depuis septembre dernier. Je me suis monté une imprimante 3D DIY pour me faire la main en impression 3D et arrêter de solliciter les copains. Pour moins de 300€ (améliorations comprises) on peut obtenir quelque chose de vraiment pas mal niveau qualité…

 

setup-tarantula-tevo.jpg

 

baby-groot-006.jpg

 

J’en ai profité pour travailler sur d’autres projets à but éducatif comme ce traqueur solaire… 

sunny-solar-tracker-completed.jpg

 

 

Avec simulateur en image de synthèse sous Unity pour les TPs avec mes élèves…

sunnyrobotsimulator.jpg

Depuis le début de l’été, je profite de mes vacances  pour me relancer sur le projet de mon EM-10. Un nouveau prototype est en cours. J’ai laissé de côté l’électronique maison pour une carte d’imprimante 3D. C’est moins cher, quasi plus besoin de soudures et c’est une base de Arduino MEGA donc parfaitement compatible avec le travail de codage déjà réalisé. L’imprimante 3D est mise à contribution pour la réalisation des pièces mécaniques comme le boitier. Voici ce que cela donne en l’état…

 

proto-em10-mk-mini-1.jpg

 

proto-em10-mk-mini-2.jpg

 

proto-em10-mk-mini-3.jpg

 

La manette SEGA a été conservée et j’ai prévu un second port DB9 pour la raquette de contrôle qui exploitera l’ancienne carte Arduino équipée de l’écran tactile (rien ne se perd, tout se transforme). Ce dernier s’occupera de l’intelligence (base de donnée, GPS, GOTO, abaque polaire) et la carte Mks s’occupera des moteurs et du PEC.

 

Cerise sur le gâteau, la carte d’imprimante 3D est équipée de 4 drivers de moteur pas à pas, je vais donc pouvoir compléter avec le contrôle de la mise au point (et pourquoi pas à terme une roue à filtre également). J'ai réalisé la partie mécanique sur mesure pour mon CN-212…

 

map-cn-212-takahashi-openscad.png

 

map-cn-212-takahashi-2.jpg

 

map-cn-212-takahashi-1.jpg

 

La mise au point est opérationnelle. Voici un aperçu lors du premier test...

 

Et voici une démo de l'ensemble du nouveau prototype côté monture...

 

Le prototype 2018 me plait bien niveau simplicité... :)

detail-motorisation-mks-mini.jpg

 

Premier test concret sous les étoiles...

proto-em10-mk-mini-4.jpg

 

proto-em10-mk-mini-5.jpg

 

Il reste pas mal de chemin à faire côté logiciel mais déjà le gain est indéniable par rapport à l’électronique d’origine: 4 vitesses au lieu de deux, gestion des moteurs en micro stepping 1/16, mise au point motorisée, courbe d’accélération/décélération sinusoïdale donnant des mouvements très doux sans aucun accoup de freinage. A l’usage c’est vraiment un plaisir.

 

J'ai pour le moment mis de côté le développement de la librairie ScreenView que je vous avais présenté et je me concentre sur la conception du pilote de moteur pas à pas côté monture pour faire quelque chose de très optimisé niveau soft Arduino.

 

 

Voili, voilou, :)

Seb.

 

  • Merci / Quelle qualité! 1

Share this post


Link to post
Share on other sites

Après avoir bien poussé les optimisations de code, voici un benchmark montrant les impulsions d’un des moteurs pas à pas poussées au maximum des capacités de la carte Arduino (le mode PWM permettrait d’aller encore plus loin mais sans aucun retour pour le comptage de pas donc incompatible avec les besoins du projet)...

arduino-moteur-pas-a-pas-frequence-max.j

 

Interprétation de la mesure à l’analyseur logique:
Le code exécuté dans l’interruption en elle même prend 3,375us (remise à zéro du compteur du timer comprise) avec une périodicité d’à peine 8us soit plus de 123 000 impulsions par seconde!!! On arrive ici à la limite extrême en se limitant à un seul moteur. En prenant un peu de marge cela signifie qu’en déplacement bi moteurs (A.D. et déclinaison en simultané) pour du goto on peut sans complexe espérer atteindre les 50Khz avec encore un peu de temps CPU pour le reste du programme.

 

Pour atteindre de telles performances, le code des interruptions moteur a été réduit à sa plus simple expression (comptage de pas + envoi impulsion moteur). Toutes les fonctions d’écriture -digitalWrite()- ont été optimisées avec l’excellente librairie Arduino-GPIO. Enfin, la gestion des accélérations/décélérations, changement de direction, activation/désactivation moteur, ont été dévolues à un timer dédié servant de « modulateur de fréquence » comme le montre cette capture...

accel-timer.jpg

Les avantages:
- Le fonctionnement des moteurs à vitesse constante est très peu gourmand en temps processeur.
- Cela ouvre la porte pour faire sans souci du goto en microstepping 1/16 là où d’autres projets sont contraints de basculer à la volée en 1/2 pas voire même en fullstep pour tenir la cadence.
- L’intégration du rattrapage de jeu et la correction d’erreur périodique pourront se faire au niveau du timer d’accélération sans impacter les performances des interruptions moteur.

Edited by Mala

Share this post


Link to post
Share on other sites
Il y a 13 heures, gehelem a dit :

Chapeau !!

Merci gehelem! :) J'espère pouvoir continuer à avancer aussi bien après la rentrée scolaire. C'est frustrant de devoir tout laisser en plan faute de temps.

Share this post


Link to post
Share on other sites

Franchement, bravo !

Comme j'aimerais pouvoir en faire autant mais c'est trop loin de mes champs de compétences.

  • J'aime 1

Share this post


Link to post
Share on other sites

Et voila, encore qui a un don :), superbe boulot BRAVO.

Ca fait 3 semaines que je me prend la tête avec un bout code pour faire tourner un moteur et un servo alors que d'autre font des trucs de malade :cry:

  • J'aime 1

Share this post


Link to post
Share on other sites

Merci les gars! :)

 

pagpatrice si cela peut t'aider, jette un oeil à ma librairie RunLoop...

http://www.em10-usd-arduino-takahashi.eliotis.com/librairies-arduino/runloop/index.html

Cela peut paraitre un peu touffu de prime abord mais elle est redoutable pour paralléliser des tâches avec un Arduino. Une fois installée, il y a 8 projets d'exemple accessibles via le menu File->Examples->RunLoop.

 

La plateforme Arduino est généralement présentée comme une architecture de découverte pour bidouilleurs de tous poils mais effectivement on peut vraiment faire des choses sympa et assez poussées. Je suis programmeur industriel de métier à la base du coup ça aide pour faire de l'embarqué temps réel. Autant dire que je m'éclate à faire de l'optimisation de code avec l'analyseur logique et l'environnement Arduino.

 

J'en suis maintenant à essayer de concevoir une méthode de goto prédictive sans besoin du comptage de pas. Les systèmes courant vérifient en permanence la position (le nombre de pas parcourus) et ralentissent par anticipation avant la fin pour compter plus doucement et pouvoir s'arrêter sur le bon pas. Mon idée grosso modo serait d'être capable de déterminer à l'avance de combien de pas le moteur va se déplacer exactement si on le met en route pendant x millisecondes à vitesse y. Du coup, il pourrait foncer sur sa cible en accélérant et décélérant de manière optimale. Sur le papier le cahier des charges est simple. Dans les faits c'est beaucoup plus complexe car on doit non seulement anticiper les accélérations/décélérations mais surtout tenir compte de la résolution du processeur et donc des approximations qu'il effectue.

 

 

Share this post


Link to post
Share on other sites
Il y a 3 heures, Mala a dit :

pagpatrice si cela peut t'aider, jette un oeil à ma librairie RunLoop...

http://www.em10-usd-arduino-takahashi.eliotis.com/librairies-arduino/runloop/index.html

Cela peut paraitre un peu touffu de prime abord mais elle est redoutable pour paralléliser des tâches avec un Arduino. Une fois installée, il y a 8 projets d'exemple accessibles via le menu File->Examples->RunLoop.

 

Merci pour le liens, TOUFFU étant donné que je débute (hormis les réglages de mon imprimante 3D) tout est Touffu :blase2: mais quand je vois ce que certains son capable de faire je suis admiratif, comme toi avec ta monture.

Je lirais ça à tête reposé :), encore bravo.

  • J'aime 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.