Mala

Projet EM10 USD Arduino

Messages recommandés

Salut Sébastien,

 

Merci pour ta réponse et ces précisions ! Je suis encore dans la lecture de ta librairie, c'est très impressionnant pour quelqu'un comme moi qui n'est pas fondamentalement codeur dans l'âme....

Je travaille depuis un an environ avec des Arduino Méga et leur shield ramp1.4 sur un proto un peu tordu (au sens ou il n'a que peu a voir avec un Dobson), mais qui nécessite 5 moteurs dont 3 doivent assurer le goto en alt/az, mais aussi le suivi..... D’où mon intérêt pour ton système. 

Si par cas tu change d'avis sur l'implémentation des routines de suivi en alt/az avec une très bonne précision, je serais très très intéressé !! Tes optimisations de codes semblent titiller les perfs que l'on peut obtenir en micro-pas avec des drivers pololu standard voir des versions de driver un peu plus costaud.

Bref, comme je suis plus opto-électronicien que codeur, ton approche me semble vachement intéressante. On peut peut être en discuter en off ?

 

Bernard

 

Modifié par brizhell
orthographe......

Partager ce message


Lien à poster
Partager sur d’autres sites

Ephemeris m'avait demandé un bon mois de codage assidu à l'époque en me basant sur l'ouvrage de Jean Meus. A ma connaissance c'est l'une des seules si ce n'est la seule librairie C++ compatible avec les architectures 8bits qu'on trouve sur Arduino. J'avais été contraint d'optimiser certains thermes de la théorie VSOP87 pour que ça rentre en 32bits (la dynamique max pour l'encodage d'un nombre décimal sur Arduino).

 

Les méthodes vraiment intéressantes dans l'immédiat pour toi c'est:

/*! Set location on earth (used for horizontal coordinates conversion). */
static void setLocationOnEarth(FLOAT floatingLatitude, FLOAT floatingLongitude);

/*! Convert equatorial coordinates to horizontal coordinates. Location on Earth must be initialized first. */
static HorizontalCoordinates equatorialToHorizontalCoordinatesAtDateAndTime(EquatorialCoordinates eqCoordinates, unsigned int day, unsigned int month, unsigned int year, unsigned int hours, unsigned int minutes, unsigned int seconds);

/*! Convert horizontal coordinates to equatorial coordinates. Location on Earth must be initialized first. */
static EquatorialCoordinates horizontalToEquatorialCoordinatesAtDateAndTime(HorizontalCoordinates hCoordinates, unsigned int day, unsigned int month, unsigned int year, unsigned int hours, unsigned int minutes, unsigned int seconds);

Je t'envoie mon mail en message privé. J'essaierai de te donner des pistes. C'est clair qu'en Alt/Az tu dois  à la fois assurer le suivi sur deux axes et à cela s'ajoute la rotation de champ. Donc tu as déjà 3 timers hardware de monopolisés et dont les modulations de vitesse doivent être synchronisées en fonction des coordonnées AD/Dec.

 

Jette un oeil aussi sur ma librairie RunLoop:  >>>> voir ici <<<<

Elle permet notament de jongler facilement avec les timers sans devoir installer 36 librairies.

 

Et si ce n'est déjà fait. Equipe toi d'une analyseur logique comme celui-ci. Coder le pilotage de drivers sans voir ce qu'il se passe réellement en sortie c'est comme faire de la cuisine sans jamais mettre les doigts pour goûter... Lol

Modifié par mala05

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Sébastien

 

7 hours ago, mala05 said:

A ma connaissance c'est l'une des seules si ce n'est la seule librairie C++ compatible avec les architectures 8bits qu'on trouve sur Arduino

 

Je confirme, c'est bien pour cela qu'elle m'intéresse.

 

7 hours ago, mala05 said:

C'est clair qu'en Alt/Az tu dois  à la fois assurer le suivi sur deux axes et à cela s'ajoute la rotation de champ

 

Non le projet en soi ne souffre que très peu de la rotation de champs. Je te détaillerai ça en privé car je n'aime pas annoncer des résultats préliminaires sans avoir bouclé la manip.

 

7 hours ago, mala05 said:

Et si ce n'est déjà fait. Equipe toi d'une analyseur logique comme celui-ci. Coder le pilotage de drivers sans voir ce qu'il se passe réellement en sortie c'est comme faire de la cuisine sans jamais mettre les doigts pour goûter... Lol

 

J'ai ce tout ce qu'il faut, question électronique :) merci pour la ref de l'analyseur logique :)

 

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Activité du moment, mettre au point un algo de prédiction pour le goto... :ph34r:

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici un billet issu de mon blog qui pourra intéresser les arduineurs qui bidouillent avec les timers...

 

Lors de l’écriture de la librairie RunLoop pour Arduino, j’avais constaté à l’époque un décalage sur les timers hardware entre la période demandée par le programme et la périodicité réellement constatée en sortie avec l’analyseur logique. 

runloop.jpg

Le problème c’est que toutes les librairies testées avaient le même décalage que moi: un peu plus de 3us!!! Cela peut paraitre ridicule vu de loin mais pour des fréquences dépassant le KHz, l’erreur est de plus en plus problématique si l’on a besoin de précision. Hors en astronomie, pour le pilotage des moteurs pas à pas, la précision est de rigueur. A l’époque, j’avais donc intégré ce décalage dans RunLoop en l’estimant de manière empirique autour des 3,3us.

Et voilà qu’aujourd’hui, je viens de tomber sur l’excellentissime blog de Bill Grundmann! Si vous lisez l’anglais, c’est par ici que cela se passe: The overhead of Arduino Interrupts

Pour résumer: il a étudié le phénomène à l’oscilloscope et décortiqué le code assembleur de la librairie Arduino. Et effectivement, la levée d’interruption entraine un surcout de 55 cycles! Soit 55*0,0625 = 3,4375us précisément!!! Hors faute de le savoir, les librairies qu’on trouve sur le net n’en tiennent pas compte. Et bim!

J’ai donc le plaisir de vous annoncer que je viens d’en profiter pour affiner encore un peu plus le code de RunLoop et de le publier sur mon github. Un test à 20Khz, montre maintenant une périodicité quasi parfaite à +-40ns près d’après l’analyseur logique (hors avec ses 12MS/s max on est dans la limite de précision d’échantillonnage donc même pas sûr que la variation résiduelle soit réelle).

50us-20khz.jpg

Note: en toute logique, le phénomène constaté n’est présent que pour des timers hardware levant une interruption au niveau logiciel. Je ne pense pas qu’un usage en PWM soit concerné.

Veni, vidi, vici et big up à Bill! :)

Modifié par mala05
  • Merci 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Balade Lunaire de ce weekend. Un plaisir avec la nouvelle électronique... :)

 

Et la mosaïque issue de la séance... :)

lune-30-09-18-cn212-red10-ml3x-w1024.jpg

Mosaïque de 8 clichés.
5D Mk III - CN 212 Takahashi à F/12,4 - Réducteur F/9.9 - EM-10 MKS
400 Iso - 8 x 900 images - 1/200s en vidéo Raw.
Zoom vidéo Magic Lantern 3x.

Lien vers la full: >>>> ici <<<<

 

J'ai commencé à coder le support du protocole LX200GPS. Il me tarde de pouvoir automatiser la prise de vue des mosaïques en pilotant de concert la monture et l'APN.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Quelques news du projet. Je démarre la nouvelle raquette de commande. Après différents essais d'écrans, je pense avoir trouvé mon bonheur avec un TFT 4,3’’ de 480x272 pixels. Couplé à un Arduino Due (le plus puissant Arduino actuel équipé d'une puce ARM 32bits à 84Mhz)  j'ai là une bonne marge de manoeuvre pour développer le "cerveau" de la monture. Mon idée est de réaliser une raquette de commande qui ressemble un peu à une console de jeux portable en format paysage.

 

Après la Nintendo Switch voici donc la naissance de l’Astro Switch... ;)

45133532_1920219131424506_24194444432213

 

45208529_1920220201424399_38657770123165

 

45097334_1920220318091054_56666348007068

 

La puce GPS de l’ancien prototype va être réimplantée dans la raquette...

46091030_1937438619702557_88681778935832

 

Un aperçu de l’adaptation de l’abaque numérique de l’EM-10 calé sur les données de la puce GPS (lumière bleue à l’intérieur du boitier)...

45901935_1937438953035857_13428450915799

 

Je pense y ajouter à terme un mini pad pour faciliter la navigation en complément du tactile. La raquette communiquera par liaison série avec la carte MKS de la monture sur la base du protocole LX200GPS (avec sans doute quelques addendum spécifiques à mes besoins).

 

A suivre...

  • J'aime 4
  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour ceux que cet écran RA8875 intéresse, j'ai publié sur mon github une version améliorée du code d'adafruit... https://github.com/MarScaper/Adafruit_RA8875

 

Le tactile a été revu avec une fifo circulaire afin de réaliser une moyenne glissante pour limiter le bruit.

 

Modifié par mala05
  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Le développement de la raquette de commande avance... :)

Le format paysage me contraint à revoir complètement l'interface de navigation que j'avais imaginé pour l'écran de l'ancien prototype mais cela devrait être d'autant plus confortable à l'usage.

  • J'aime 2
  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Dernière avancée en date qui est en fait un projet à lui tout seul: je réfléchis depuis un moment au remplacement du viseur polaire optique d'origine, dont la gravure a expiré en 2015, par un viseur polaire numérique sur mesure.

 

Mon idée est d'intégrer un Raspberry Zero avec caméra et objectif dans le corps de la monture pour disposer d'un viseur polaire numérique. Je vous présente donc le premier proto (externe pour l'instant) destiné à valider la faisabilité... :)

D28B6664.jpg.e5b6a663410dd322202417f98ce6287a.jpg

 

D28B6661.jpg.ae625ffdd9a1f14ad432c86cec2301f9.jpg

 

L'intérêt est multiple:

- remplacer donc l'ancien viseur polaire "périmé" de l'EM-10 (même si il est exploitable encore quelques années en débordant un peu du repère).

- libérer l'axe optique interne va me permettre de remplacer les moteurs d'origine par des plus récents et plus puissants (donc plus gros).

- ne plus devoir se mettre à quatre pattes pour la MES.

- améliorer encore la précision de mise en station.

- le raspberry pourrait devenir un accès wifi dialoguant avec la carte Arduino.

 

J'ai bien avancé pendant les vacances sur le codage. Je pilote la caméra PI avec une version revisitée par mes soins de Raspistill...

raspistill-on-mac-with-xcode.jpg

 

Je détecte les étoiles du champ photographique (magnitude>7 en 2s de pose) ...

detection.gif

 

et j'ai dernièrement développé une mini base de données des étoiles autour du pôle jusqu'à magnitude 7...

Pour un précision optimale, j’ai pris en compte au niveau des étoiles: leur dérive annuelle, la précession des équinoxes, la nutation et l'aberration annuelle.

 

Question budget, je pense que je vais susciter des vocations pour des clones si j'aboutis. J'en suis à 40€ à peine d'électronique... B|

 

Il faut encore que je travaille sur la corrélation de champ entre images et base de donnée et je pense que j'aurais toutes les pièces du puzzle pour la conception d'un viseur polaire en réalité augmentée. :)

 

 

  • J'aime 6
  • J'adore 2
  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Vincent. 

 

Et dans la série "encore une idée à la con", voici ma dernière réalisation en impression 3D: support d'encodeur sur mesure pour l'axe R.A de mon EM-10 Taka... :)

5c7c399e8852f_Capturedcran2019-02-2714_16_30.jpg.996754138632bebc15d3a1da6f066c24.jpg

 

Le sushi c'est que rien n'est droit sur cette monture! Qu'à cela ne tienne: passage ne mode "haute couture"... Lol

D28B6691.jpg.7ad40dc38dab302df51389b1ecbef7ea.jpg

 

D28B6692.jpg.266a366b9bbf61d88d9b0b1ee6bf3f50.jpg

 

D28B6694.jpg.15cb482df175eef3a90f32a49a8532ac.jpg

 

D28B6699.jpg.0870ea3e038006e8bd848337f0deb331.jpg

 

Là où cela devient intéressant c'est que mon idée est d'essayer d'utiliser l'encodeur pour asservir la vitesse (et non la position) et, si cela marche, compenser les erreurs périodiques en amont de la vis sans fin (démultiplication du moteur et les deux engrenages de transmission). Cela permettrait de mettre au point un PEC  double étage mêlant l'asservissement de vitesse en cascade avec une mémorisation PEC classique pour la vis sans fin. Vous me suivez?

 

J'ai commencé à travailler sur l'asservissement. C'est un premier jet mais j'ai déjà une réduction de l'ordre de 40 à 50% de l'amplitude de la vitesse. Cela devrait être suffisant pour un test sur le ciel afin de mesurer l'impact sur l'EP...

5c7c3aed0001b_Asservissementencodeur.png.cd7016603729007c23062757deb31dcd.png

Modifié par mala05

Partager ce message


Lien à poster
Partager sur d’autres sites

Comment mesures-tu les variations de vitesses en dehors de visées sur le ciel ?

 

Sinon une mémorisation pec intègre toute la chaine cinématique... Tu veux asservir l'amont de la VSF pour ne laisser au pec classique que l'effet de la VSF sur la roue... Pourquoi pas, tu dois gagner un µpouillème peut-être...

Partager ce message


Lien à poster
Partager sur d’autres sites

 

il y a une heure, Pascal C03 a dit :

Comment mesures-tu les variations de vitesses en dehors de visées sur le ciel ?

Je mesure non pas les ticks de l'encodeur mais le temps écoulé entre deux ticks lors de la levée d'interruption. Connaissant le temps écoulé et la résolution de l'encodeur, je peux en déduire la vitesse réelle et calculer le ratio par rapport à la vitesse théorique ciblée.

 

il y a une heure, Pascal C03 a dit :

Sinon une mémorisation pec intègre toute la chaine cinématique... Tu veux asservir l'amont de la VSF pour ne laisser au pec classique que l'effet de la VSF sur la roue... Pourquoi pas, tu dois gagner un µpouillème peut-être...

A ceci près qu'une mémorisation PEC classique ne permet pas d'intégrer correctement les sous périodes non multiples de la vis sans fin. Hors c'est typiquement ce que je rencontre avec l'EM-10 entre la démultiplication du moteur 1/500 sur six étages...

engrenages-demultiplication-em10-takahas

 

Et les deux engrenages de transmission qui apportent encore un ratio de 45/36 soir 1,25...

schema-engrange-ad-em10-takahashi.jpg

 

calculs_periodes.jpg

 

Au final, le pouième en question représente près de 30% de lEP dans mon cas donc ça vaut le coup de tester.

Modifié par mala05
  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pensais qu'il n'y avait que 2 pignons entre le moteur et la VSF... Effectivement, il y a plus de monde...

Pourquoi n'essaie-tu pas d'attaquer directement la VSF avec un moteur... (le couple VSF roue de la G11 démultiplie 2.5 fois plus et je pense que ça va dans le bon sens...)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'y ai songé d'autant que son axe d'A.D. dispose d'un met plat accessible, prévu je pense initialement pour un encodeur déjà à l'époque, mais cela défigurerait ma petite Taka.

Partager ce message


Lien à poster
Partager sur d’autres sites

Les premiers tests d'asservissement d'EP  laissent augurer de très bonnes choses. Du fait du bruit que cause le moteur PAP, j'ai été contraint d'augmenter le lissage sur 27 lignes codeur (4s). Echantillonnage et correction restent néanmoins à 6,6666Hz grace à une moyenne par fifo glissante (même principe  que pour l'amélioration du signal tactile de l'écran 4,3")...

5c84d74015bba_Capturedcran2019-03-1000_19_21.jpg.png.fe4135ba95fbbc9899c785f8277a1efd.png

Sauf erreur d'interprétation, les micros erreurs résiduelles non corrigées viennent de la rotation de l'axe moteur (un tour par seconde environ) en tout début de chaîne avant même la démultiplication 1/500 intégrée.

 

L'asservissement étant réalisé sur la variation de vitesse, il est intéressant de voir ce que cela donne en terme d'erreur de position à l'arrivée...

5c84d8b34c968_Capturedcran2019-03-1008_10_24.jpg.db8efa6ffdb030343fd015f7f62c2984.jpg

La courbe violette en bas à gauche montre l'erreur de position avant correction. La sinusoïde principale vient en faite d'un décentrement de l'axe de l'encodeur. Faute de mieux pour démarrer mes essais j'ai réalisé une allonge en impression 3D pour fixer l'encodeur à la vis sans fin. C'est un mal pour un bien car cela permet de bien voir l'impact de l'asservissement en générant une EP factice de +-16 pas codeur soit +-36" d'arc. Chose plus "réelle", on retrouve la petite sous sinusoïde que j'avais déjà identifié avec mon analyseur d'EP vidéo fait maison...

sous-periode-moteur-em-10-taka.jpg.794ebd8d8ac112bddd789c54875beaa4.jpg

Avec sa période d'une minute et vingt huit secondes, c'est typiquement le genre d'EP qui se déphase progressivement au fil du temps par rapport à la période de l'EP principale de la vis sans fin...

simulation-erreur-periodique-em10-takahashi.jpg.13ca0f2c00f449f4fb77b6be90ed595f.jpg

Et c'est là qu'un correcteur d'EP à double étage devrait faire toute la différence. :)

 

Venons en maintenant à la courbe rouge de droite. On constate que l'EP principale a été réduite à +-1,64 pas codeur soir +-3,7" d'arc. La petite sous sinusoïde a complètement disparue. C'est quasiment une amélioration d'un facteur 10. Pas mal pour un encodeur 1000 lignes à 20€ et un peu de jus de cerveau... :)

 

Je vais voir pour faire usiner une pièce allonge de qualité et j'ai commandé le même modèle d'encodeur mais avec signal d'index en plus (position zéro) . Comme ça je disposerais d'une origine fixe pour la mémorisation de l'EP principale du second étage de correction.

Modifié par mala05
  • J'aime 2
  • J'adore 2
  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Dernier progrès en date, j'atteins maintenant les +- un pas codeur soit +-2,25" d'arc...

5c8d032dcb480_Capturedcran2019-03-1321_43_25.jpg.2275cded6ba673643b61e8ac9cd1276a.jpg

J'espérais réussir à descendre sous la barre du pas codeur mais pour une raison que j'ignore encore je rentre en raisonnance. Je verrais plus tard, c'est déjà excellent en l'état.

 

A noter que l'asservissement entraine une légère dérive plus ou moins importante en fonction des réglages. Mon interprétation c'est que l'EP, du fait des imperfections mécaniques, n'est pas parfaitement symétrique. Ce n'est pas bien méchant à l'usage car la dérive est linéaire. Il suffira de compenser en jouant très légèrement sur la vitesse théorique. Voici ce que cela donne en l'état sur une heure de suivi (6 tours de vis sans fin)...

5c8d071cd9a01_Capturedcran2019-03-1507_15_34.jpg.dbce129a5b28a53c15f025ebddc8097d.jpg

-L'augmentation progressive d'un pas codeur en fin de mesure vient en fait juste du chevauchement lié à la dérive.-

 

Avec une dérive de moins d'un pas codeur (<2" d'arc à vue d'oeil) sur une heure, là aussi c'est excellent. Il me tarde de recevoir le nouvel encodeur avec signal d'index.

  • J'aime 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici l’EM-10 en l’état de son avancement. Le projet a fait un sacré chemin depuis ses débuts! Cela commence à avoir vraiment de la gueule...

img_4081.jpg

 

img_4085.jpg

 

Le boitier abritant la carte MKS a été repensé en positionnant les composants face à l’intérieur de la monture. Cela m’a permit de placer tous les connecteurs en bas mais aussi de dégager de l’espace pour le passage de l’encodeur de l’axe R.A...

new-mks-box.jpg

 

d28b6685.jpg

 

C’est moi ou bien il a un petit côté Star Trek Enterprise ce cache? :D

img_4091.jpg

 

La tension d’alimentation est maintenant régulée par un Pololu S18V20F12 12V Step-Up/Step-Down (récupération de mon tout premier proto) mis en boiter avec interrupteur...

power-box.jpg

 

img_4089.jpg

 

Et pour finir j’ai revu le boitier du PI Zero du proto de viseur polaire en l’inclinant de 90° pour un accès plus pratique aux ports par le dessous...

img_4093.jpg

 

Restera à voir le connecteur du câble du moteur de mise au point du CN-212 qui dans l’immédiat est encore câblé directement en interne sur la carte. Je pense partir sur du RJ-9 histoire d’avoir quelque chose de compact.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

One more thing... ;)

 

J'ai adopté une nouvelle petite Japonaise de 28 ans...

em-10-vs-em-200.jpg

 

Et le nouveau boitier pour la carte MKS de l'EM-10, je l'ai pensé aussi pour elle forcément... :x

em-200-mks-jarvis-takahashi.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce type est trop génial, il m’énerve mais il m’énerve ! 9_9

Que dire, monte ta société et associe toi avec Skymeca pour la partie mécanique et vous allez nous sortir du grandiose en matière de montures...

 

sinon, je suis curieux de savoir combien tu vois de modes de vibrations pour disons, juste 2 pignons de dents Z1 et Z2...

Modifié par Pascal C03
  • J'adore 2
  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 12 heures, Pascal C03 a dit :

sinon, je suis curieux de savoir combien tu vois de modes de vibrations pour disons, juste 2 pignons de dents Z1 et Z2...

Tu entends quoi par "modes de vibrations"? Je ne comprends pas.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour moi,  un faux rond  pour chacun des pignons par exemple.

Iici, je vois un certain nombre de signaux qui demandent une FFT pour bien comprendre ce qui est en jeu

J'espère être plus clair...

image.png.cc43c6644d1b4190e186dfac57211cb0.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok. Entre deux 2 pignons de dents Z1 et Z2, je vois à minima le décentrement de l'axe (période proportionnelle à la vitesse de rotation d'un pignon)  et potentiellement le voilage/inclinaison de chaque pignon (période proportionnelle à la vitesse de rotation du pignon/2 si mon intuition est bonne). Et à cela j'ajoute le changement de dent bien sûr. Donc pour deux engrenages, cela me donnerait potentiellement 5 modes de vibrations pour reprendre ton terme.

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, mala05 a dit :

Et à cela j'ajoute le changement de dent bien sûr.

 

J'en parle à un collègue qui enseigne les engrenages... Lui ne voit pas pourquoi le changement de dent entraine une variation de vitesse puisque c'est bien une courbe de vitesse de rotation instantanée que l'on observe...

J'ai un peu de mal à me représenter physiquement ce qui se passe. Je ne sais pas s'il y a eu des études théoriques là dessus...

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant