Aller au contenu

Moteur de focus sur démultiplication ou pas ?


gehelem

Messages recommandés

Il y a 2 heures, Greg34 a dit :

Je suis pas chez moi là, mais avant de décoller, j'ai trouvé le moyen de fixer le moteur avec la vis qui bloque le PO et j'ai fait aussi une pièce qui s'emboite dans la molette coté démultipliée histoire de simuler une poulie et ça bouge pas d'un poil.

Demain soir, je mettrais la photo en ligne du concept.

J'ai pas terminé encore, me faut imprimer un nouveau boitier pour le moteur mais je trouve que ça en jette :)

Oui !

J'étais tombé sur ton bel anneau, j'ai pas hésité longtemps quand j'ai percuté le temps que ça me mettrais à l'imprimer...

Du coup... à la zob... sangle.

 

Dis donc, tes poulies ne reduisent pas mais augmentent, me trompé-je ?

Pourquoi fais-tu comme ça ?

 

Pressé de voir le nouveau concept !

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 7 heures, gehelem a dit :

j'ai pas hésité longtemps quand j'ai percuté le temps que ça me mettrais à l'imprimer...

Oui, j'ai pas brillé sur cette idée ^^

 

Il y a 7 heures, gehelem a dit :

Dis donc, tes poulies ne reduisent pas mais augmentent, me trompé-je ?

Dans mon cas, j'avais fait l'inverse pour gagner en vitesse/force avec le PAP mais je vais réviser ce point aussi.

 

En fait, faut penser vélo.

En gros la formule revient à FocRPM = D1 x RPM / D2 ou:

D1 = diamètre de la poulie du moteur PAP

RPM = nombre de tours/minute du moteur PAP

D2 = diamètre de la poulie sur l'arbre du focuser

FocRPM = nombre de tours/minute de l'arbre du focuser

 

Là je prend au pif:

D1= 2 cm

RPM= 200

D2= 4 cm

FocRPM  = 2 x 200 / 4 soit 100.

Pour un tour de mon moteur PAP, mon arbre du focuser aura fait un 1/2 tour.

Dans ce cas, je réduis encore mais au détriment de la force je force plus en petit pignon et un grand plateau à l'arrière sur un vélo :)

 

 

Il y a 7 heures, gehelem a dit :

 

Pressé de voir le nouveau concept !

Et moi de le finir :D 

 

 

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, gehelem a dit :

J'en donne 10

Sympa !

 

Comme promis, j'ai fait quelques photos histoire de détailler un max + le stl.

Désolé pour la qualité de l'impression, c'est du 'alazob' pour le moment.

 

Ca s'emboite juste dans le cylindre. Juste démonter les 2 molettes.

IMG_20201014_204138.jpg.a40c33cec96301b475895eb420b6ee01.jpg

 

La poulie qui entre en force dans la molette.

IMG_20201014_204156.jpg.daa33e58f583b593f5ca5ac8bfaee367.jpg

 

La poulie dentée séparée

IMG_20201014_204209.jpg.abf276251b0257cbfc4ad98dc441f561.jpg

 

Le résultat voulu (j'ai pas terminé le boitier du PAP là... c'est encore l'ancien modèle)...

Me faut encore aligner le PAP à la poulie avec un tendeur de courroie.

IMG_20201014_204255.jpg.ac394a7d9c8aadf4a862d7cbb62903c5.jpg

3d1.jpg.451d3d9725bb8839b0121dc1542fe1b2.jpg3d2.jpg.321d81e1b588789d690b5d768bedf1fb.jpg

Et le STL histoire d'avoir une meilleure vision : support.stl

Je peux virer le moteur vu qu'il est monté sur glissière.

C'est compact, ça bouge pas ! suis l'plus heureux :D !

 

P.S: en plus c'est plus rapide à imprimer !

Modifié par Greg34
Lien vers le commentaire
Partager sur d’autres sites

Salut à tous,

A mon tour de vous montrer le type de montage que j'envisage sur la molette démultipliée. L'idée principale, c'est démontable. Car l'instrument est utilisé pour du visuelle également. Donc, je tente d'utiliser le support du chercheur pour maintenir le bazar. La courroie doit pouvoir être retirée soit en dévissant la vis de la glissière du support chercheur pour détendre la courroie, soit en glissant cette courroie pour la faire sortir de la molette. Je crains, pour le moment que la tension soit trop importante et fatigue l'axe de cette molette. 

Tony

miseEnPlace.jpg

A oui, j'ai oublié de préciser : c'est sur un newton 150/750 😅

Modifié par TonyBANKS75
Lien vers le commentaire
Partager sur d’autres sites

Salut @TonyBANKS75,

 

Regardes bien mon montage, tout est démontable mais on peut laisser la fixation sur le PO (zéro vis à démonter sauf les 2 mollettes sur le côté pour faire glisser le support en 3D).

La boite contenant la partie elec & le moteur se glisse dans le rail imprimé en 3D sur le PO.

Pour gérer la tension de la courroie, je vais mettre un tendeur de courroie avec possibilité de régler la force de tension.

 

il y a 32 minutes, TonyBANKS75 a dit :

A oui, j'ai oublié de préciser : c'est sur un newton 150/750 😅

 

Je veux pas dire d'ânerie mais sur le 200/1000, on a le même PO.

A noter aussi que pour du visuel, la courroie n'empêchera pas le moteur de tourner et le PO de monter/descendre :)

Lien vers le commentaire
Partager sur d’autres sites

Alors j'ai pas la référence exacte sous la main, mais c'était un jeu de courroies sp2 6mm de ce genre 

Pour poursuivre la conversation sur le focuser monté sur la molette 1/10, voici les 2 premiers résultats avec pilotage sous Ekos. Pas mirobolants et la vérification avec un masque de bahtinov me laisse dubitatif.

Question : avec quel logiciel fais tu la mise au point ? Car avant de remettre le montage sur l'établi,  je voudrais bien vérifier avec un autre soft 🤔.

Tony

 

Capture_decran_du_2020-10-21_21-46-35.png

Capture_decran_du_2020-10-21_21-37-31.png

Lien vers le commentaire
Partager sur d’autres sites

il y a 25 minutes, TonyBANKS75 a dit :

avec quel logiciel fais tu la mise au point ?

Ekos uniquement...

J'ai remarqué que l'algo "linear machin" me donnait des résultats moins mauvais 

De même, en farfouillant le paramètre "star détection" (de mémoire) on peut améliorer le zinzin (le truc avec les options centroid et autres)

Mais la misère c'est de piger le processus, à quoi correspondent max travel, initial step size et autres, ça me laisse perplexe... surtout que leur usage semble dependre de l'algorithme utilisé 

NB

J'ai trouvé un truc sous linux qui permet de faire le job, jamais essayé 

Si ça t'intéresse je te retrouve le truc

 

Edit - c'est en alphabeta...

https://www.lost-infinity.com/fofi-a-free-automatic-telescope-focus-finder-software

Lien vers le commentaire
Partager sur d’autres sites

@gehelem, pour les couroies, idem que @TonyBANKS75 mais en mode radin :D ->https://fr.aliexpress.com/item/4000236292479.html?spm=a2g0o.cart.0.0.651f3c00OsFdpk&mp=1

 

Il y a 3 heures, gehelem a dit :

L'approche du type est super intéressante, et pleine de réponses de base...

 

Merci pour le lien, ça a l'air pas mal.

J'avais commencé (comme beaucoup de choses que je termine jamais ...) un soft dans le genre, j'avais mis une vidéo du soft en l'état.

Ca marchait un peu comme le Bahtinov grabber ce soft, on capture une zone d'écran et j'affichais le diamètre de l'étoile sur 2 axes avec un graphique FWHM/position pas moteur.

Le but du jeu est de relire la valeur la plus basse et de positionner le moteur sur cette valeur.

 

 

Pour ce qui est de la création de poulies en 3D, je viens de tomber sur cette vidéo ci-dessous qui devrait nous permettre de gagner plus en précision  (je viens de télécharger le soft, c'est top !)

 

Modifié par Greg34
  • Merci / Quelle qualité! 1
Lien vers le commentaire
Partager sur d’autres sites

Courroie trop courte ? j'imprime une poulie plus grosse :be:

 

Et dans mon bricolage, j'ai fait un truc sans faire exprès ...

IMG_20201023_202735.jpg.16cba752a768ae387ccf748f1d2a48d8.jpg

 

Vu que c'est fixé que sur la glissière...en jouant avec la vis, ça me tend un poil la courroie juste ce qu’il faut ! :bras:

Lien vers le commentaire
Partager sur d’autres sites

Au fait, sur les crayford et crémaillères démultipliés, quand on tourne la molette "grossière", on a bien la "fine" qui tourne, dix fois plus vite, non ? Donc peu importe laquelle est entraînée par le moteur, la molette "fine" sera autant sollicitée.

 

Je conseillerais de faire en sorte qu'un pas entier corresponde à un déplacement plus petit que la résolution souhaitée, parce que, rappelons-le, en mode micro-pas, la position précise du moteur est maintenue uniquement s'il est alimenté, et "saute" au pas entier le plus proche en l'absence d'alimentation. C'est évidemment plus facile en profitant de la démultiplication de la molette "fine", car avec un moteur de 400 pas par tour, on arrive à 4000 pas pour un tour de la molette, ce qui est largement assez précis (les trucs qui se disent à 0,1 µm voire moins et qui coûtent la peau des fesses, désolé de le dire, c'est complètement superflu). On peut évidemment ne pas se soucier de consommer du courant alors que rien ne bouge, tout dépend de la consommation du moteur et de la capacité de la batterie.

Quant au jeu, en principe, avec un réducteur à billes et un vrai crayford, les deux fonctionnant par friction (par roulage, en fait), il est nul. Le seul qui intervient est celui de la réduction entre le moteur et le crayford.

 

Il y a quelque temps, j'ai fait l'acquisition, via les PA, du système de focalisation électrique pour les Feather Touch (moteur + unité centrale + raquette, avec de superbes boîtiers en métal), l'ancienne version de Starlight Instruments. Je passe sur le fait que j'ai dû tourner une douille d'adaptation du pignon (3.2 mm de diamètre extérieur et 2,4 mm de diamètre intérieur :s ), mais surtout, le pignon se met à la place de la molette "fine" et c'est donc l'axe de cette dernière que le moteur fait tourner. Je ne connais pas les systèmes plus récents (Micro Touch de Starizona), mais je doute que ce soit différent.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Moot a dit :

Je conseillerais de faire en sorte qu'un pas entier corresponde à un déplacement plus petit que la résolution souhaitée, parce que, rappelons-le, en mode micro-pas, la position précise du moteur est maintenue uniquement s'il est alimenté, et "saute" au pas entier le plus proche en l'absence d'alimentation.

 

Tout à fait ! Par défaut, j'ai configuré en hard le driver en 1/16 sur la première version.

Pour refaire un vrai pas mécanique, je vais appliquer x16 (j'ai la rame de dessouder les pins xD) et ça me permettra aussi de 'couper' le moteur quand il n'est pas sollicité afin de ne pas perdre le vrai pas.

 

Il y a 2 heures, Moot a dit :

C'est évidemment plus facile en profitant de la démultiplication de la molette "fine", car avec un moteur de 400 pas par tour, on arrive à 4000 pas pour un tour de la molette

 

Dans ce cas, on est sur un rapport de 1:1 directement sur l'arbre.

Le mien est un 200 pas (1,8° d'angle de pas) soit 2000 pas pour un tour de la molette démultipliée.

Avec la poulie, j'augmente encore la résolution : poulie de 12mm sur le PAP et poulie de 43,4mm sur l'arbre démultiplié (mon arbre démultiplié fait un tour complet quand mon moteur PAP en aura fait 3,6).

Je viens de tester à l'instant c'est à peine perceptible ...(c'est trop d'la balle ! :be:)

 

Il y a 2 heures, Moot a dit :

les trucs qui se disent à 0,1 µm voire moins et qui coûtent la peau des fesses, désolé de le dire, c'est complètement superflu

 

Par contre, avec un tel degré de précision, je me suis toujours demandé comment on arrivait à gérer la MAP avec la turbulence ... :?:

Quand j'avais commencé mon soft pour gérer la MAP, j'avais moyenné les différentes FWHM dans un tableau de données afin de limiter l'impact de la turbu ...genre si beaucoup de turbu, j'augmente la taille du tableau pour en moyenner davantage et inversement si le ciel le seeing est correct.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos développements @Greg34 @Moot on est bien en phase 😃

 

D'ailleurs @Greg34 ton montage m'intéresse, tu peux mettre les fichiers qq part ?

Pareil pour ton firmware d'ailleurs, car je suis aussi en train d'en écrire un pour pouvoir utiliser un encodeur optique branché sur les pins interrupt de l'arduino (pour bouger le truc à la main c'est 1000x mieux que les boutons)

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, gehelem a dit :

on est bien en phase 😃

 

:be:

 

Dans le zip, je t'ai tout mis (les STL, le firmware et les sources pour piloter le tout) -> focus prj.zip

Le tout en licence RAS (Rien A S'couer) !

Par contre, je précise que :

- c'est prévu pour un nema14 (le 17 est trop volumineux)

- le firmware est pour un NodeMcu -> à migrer en 100% arduino

- les sources sont pour delphi à la base -> on doit pouvoir migrer le soft sous Lazarus en virant la class Twsocket.

 

Je me tâte encore à faire une version sans fils mais en tcp cette fois-ci (l'udp ça pue, ou alors me faudrait faire un ack à chaque envoi de paquets avec un ordre de réception etc ...).

Juste une sonde de température et d'humidité (bmp280?) histoire de faire les darks aussi à la même temp & l'humidité pour déclencher une future résistance ou plier le matos :D

Lien vers le commentaire
Partager sur d’autres sites

En parlant de Moonlite, je viens de téléverser cette version :

#include <AccelStepper.h>

int STBY = D3; //standby power driver (enable)
int Probe = D4;
int STEP = D5;
int DIR  = D6;

static const int STEPS_PER_REVOLUTION = 200;  // change this to fit the number of steps per revolution for your motor

AccelStepper stepper(1, STEP, DIR);

#define MAXSPEED 10000

#define MAXCOMMAND 8

char inChar;
char cmd[MAXCOMMAND];
char param[MAXCOMMAND];
char line[MAXCOMMAND];
long pos;
int isRunning = 0;
int _speed = 32;
int eoc = 0;
int idx = 0;
long millisLastMove = 0;

void setup()
{  
  Serial.begin(9600);

  pinMode(STBY, OUTPUT); //met la broche en sortie
  digitalWrite(STBY, HIGH);
  
  stepper.setSpeed(MAXSPEED);
  stepper.setMaxSpeed(MAXSPEED);
  stepper.setAcceleration(5000);

  memset(line, 0, MAXCOMMAND);
  millisLastMove = millis();

}


void loop(){
  if (!Serial.available())
  {
    if (isRunning) {
      stepper.run();
      millisLastMove = millis();
    } 
    else {
      if ((millis() - millisLastMove) > 1000) {
        digitalWrite(STBY, HIGH);
      }
    }

    if (stepper.distanceToGo() == 0) {
      stepper.run();
      isRunning = 0;
    }
  } 
  else {

    // read the command until the terminating # character
    while (Serial.available() && !eoc) {
      inChar = Serial.read();
      if (inChar != '#' && inChar != ':') {
        line[idx++] = inChar;
        if (idx >= MAXCOMMAND) {
          idx = MAXCOMMAND - 1;
        }
      } 
      else {
        if (inChar == '#') {
          eoc = 1;
        }
      }
    }
  } // end if (!Serial.available())

  // process the command we got
  if (eoc) {
    memset(cmd, 0, MAXCOMMAND);
    memset(param, 0, MAXCOMMAND);

    int len = strlen(line);
    if (len >= 2) {
      strncpy(cmd, line, 2);
    }

    if (len > 2) {
      strncpy(param, line + 2, len - 2);
    }

    memset(line, 0, MAXCOMMAND);
    eoc = 0;
    idx = 0;

    // the stand-alone program sends :C# :GB# on startup
    // :C# is a temperature conversion, doesn't require any response

    // LED backlight value, always return "00"
    if (!strcasecmp(cmd, "GB")) {
      Serial.print("00#");
    }

    // home the motor, hard-coded, ignore parameters since we only have one motor
    if (!strcasecmp(cmd, "PH")) { 
      stepper.setCurrentPosition(8000);
      stepper.moveTo(0);
      isRunning = 1;
    }

    // firmware value, always return "10"
    if (!strcasecmp(cmd, "GV")) {
      Serial.print("10#");
    }

    // get the current motor position
    if (!strcasecmp(cmd, "GP")) {
      pos = stepper.currentPosition();
      char tempString[6];
      sprintf(tempString, "%04X", pos);
      Serial.print(tempString);
      Serial.print("#");
    }

    // get the new motor position (target)
    if (!strcasecmp(cmd, "GN")) {
      pos = stepper.targetPosition();
      char tempString[6];
      sprintf(tempString, "%04X", pos);
      Serial.print(tempString);
      Serial.print("#");
    }

    // get the current temperature, hard-coded
    if (!strcasecmp(cmd, "GT")) {
      Serial.print("20#");
    }

    // get the temperature coefficient, hard-coded
    if (!strcasecmp(cmd, "GC")) {
      Serial.print("02#");
    }

    // get the current motor speed, only values of 02, 04, 08, 10, 20
    if (!strcasecmp(cmd, "GD")) {
      char tempString[6];
      sprintf(tempString, "%02X", _speed);
      Serial.print(tempString);
      Serial.print("#");
    }

    // set speed, only acceptable values are 02, 04, 08, 10, 20
    if (!strcasecmp(cmd, "SD")) {
      _speed = hexstr2long(param);
      stepper.setMaxSpeed(MAXSPEED);
    }

    // whether half-step is enabled or not, always return "00"
    if (!strcasecmp(cmd, "GH")) {
      Serial.print("00#");
    }

    // motor is moving - 01 if moving, 00 otherwise
    if (!strcasecmp(cmd, "GI")) {
      if (abs(stepper.distanceToGo()) > 0) {
        Serial.print("01#");
      } 
      else {
        Serial.print("00#");
      }
    }

    // set current motor position
    if (!strcasecmp(cmd, "SP")) {
      pos = hexstr2long(param);
      stepper.setCurrentPosition(pos);
    }

    // set new motor position
    if (!strcasecmp(cmd, "SN")) {
      pos = hexstr2long(param);
      stepper.moveTo(pos);
    }


    // initiate a move
    if (!strcasecmp(cmd, "FG")) {
      isRunning = 1;
      digitalWrite(STBY, LOW);
    }

    // stop a move
    if (!strcasecmp(cmd, "FQ")) {
      isRunning = 0;
      stepper.moveTo(stepper.currentPosition());
      stepper.run();
    }
  }
} // end loop

long hexstr2long(char *line) {
  long ret = 0;

  ret = strtol(line, NULL, 16);
  return (ret);
}

Arrêt du moteur en fin d'action et accélération avec la lib 'AccelStepper'.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, gehelem a dit :

Mort de rire

On est **vraiment** en phase 😃

 

Excellent ! :D

 

C'est vrai qu'à force de tester tout et n'importe quoi, on finit toujours par revenir à des choses simples et efficaces.

Tellement je joue la simplicité, je suis passé à une version filaire et je mettrais pas la sonde de température sur le focuser car lors des relevés de temp, elle est bloquante dans la boucle principale.

Son seul rôle sera de faire tourner le bitoniau !

Par contre, j'ai bien envie d'utiliser une sonde de température/humidité mais dans un autre module histoire d'asservir les darks, résistances chauffantes etc... (mais ça fera partie d'un autre bricolage de geek plus tard ^^)

 

J'ai terminé mon bricolage !

C'est nickel, je pense pas pouvoir faire mieux pour le coté méca ? c'est fluide, rapide et précis.

Reste à pouvoir sortir le matos un jour ...

 

1.jpg.b461c2a26df6c3b25ca68fa48ea4ca7e.jpg

 

2.jpg.599ebf4d8cef6fedd99d53d560f3e790.jpg

 

  • Merci / Quelle qualité! 5
Lien vers le commentaire
Partager sur d’autres sites

@Greg34 j'aimerais bien qu'on approfondisse cette histoire d'accélération (et de micros pas)

j'utilise un TMC2130 que je configure en SPI avec la librairie TMC2130Stepper en mode super smooth et tout ça en 16 micropas avec interpolation machin chouette pour que ça tourne tout doux.

alors ça tourne bien tout doux (bien que j'aie un doute sur la config à la volée en SPI)

et je l'enfume pour les histoires de pas entiers en lui donnant toujours un multiple de 16 pas à faire (et je divise par 16 la position renvoyée 🙂 )

Mais 

lors d'une demande de nouvelle position dans un sens, mon moteur fait (assez souvent, pas toujours), une pichnette en sens inverse

ça se passe moins encore souvent à priori lorsque je garde tout le temps le moteur actif ("enabled")

je vais continuer à creuser (en essayant ton firmware déjà)

mais si ça t'inspire je suis preneur...

 

Lien vers le commentaire
Partager sur d’autres sites

@gehelem, tu m'as convaincu avec ton TMC2130, je vais en commander quelques uns :) 

Par contre, j'ai aucune idée de la config si ce n'est que c'est exactement le même brochage que le A4988.

Par rapport à ton problème de retour arrière lors d'une demande de position, le petit retour en arrière me fait penser que l'arbre du moteur n'est pas dans son pas mécanique et que la broche 'enable' passerait à 0 avant l'envoi d'une nouvelle position ? (faudrait que tu mettes ton firmware en ligne histoire de checker ?)

A la limite, pour le tester, il faudrait modifier le firmware de manière à couper manuellement via une commande la broche 'enable' et là, on verrait de suite si l'arbre du moteur bouge.

Il faut toujours penser qu'en micropas, la position de l'arbre du moteur est maintenue par le driver. Ce qui est terrible, c'est que certains TMCXXXX gèrent jusqu'à 256 micropas !

Comme le disait aussi @Moot, on a aucun intérêt à gérer le microstepping vu la précision obtenue avec les poulies et la molette coté démultiplié , autant ne plus alimenter MS1/MS2/MS3 et dans ce cas, on est vraiment sur un pas mécanique complet.

 

Concernant le modèle en 3D que j'ai fait précédemment, je vais réajuster l'angle du support de l'anneau pour qu'il épouse plus le tube... là j'ai couillé, j'ai modélisé avec mon PO sur la table sauf que le tube n'est pas plat xD

 

 

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.