Go Down

Topic: [Résolu] Problème de micropas (Read 3297 times) previous topic - next topic

Nathanael_B

Nov 28, 2017, 04:21 pm Last Edit: Dec 19, 2017, 11:37 pm by Nathanael_B
Bonjour,

Pour motoriser un télescope (voir détails ici), je me suis équipé d'une carte MEGA 2560 REV3 et d'une carte RAMPS 1.4, de moteurs pas à pas et de pilotes DRV8825.

J'ai un problème de micropas qui n'est pas logiciel. Lorsque je lance le moteur, sur une série de 32 micropas, j'en ai 24 ok, puis un saut au 32ème avec un arrêt de la durée de 8 micropas, de sorte que la vitesse globale du moteur est respectée, mais le mouvement (la rotation) n'est pas continu.
J'ai changé le driver DRV8825, l'emplacement du moteur (pour éviter un problème de connection), vérifier que le logiciel envoie des impulsions régulières mais rien n'y fait.
Quelqu'un a-t-il déjà eu ce problème ou une idée de comment le résoudre?

Merci par avance,

Nathanaël

cbrandt

Bonjour,

Je n'ai pas encore joué avec le micropas, mais il semble qu'il faille correctement régler le petit potentiomètre de limitation de courant sur la carte DRV8825 pour ne pas sauter de pas:
https://www.pololu.com/blog/484/video-setting-the-current-limit-on-pololu-stepper-motor-driver-carriers

Nathanael_B

Oui tu as raison, je ne l'ai pas précisé mais effectivement j'ai réglé la Vref du potentiomètre à 1.05v pour limiter le courant à 2.1A par phases (Vref x 2 sur le drv8825).
Nathanaël

cbrandt

#3
Nov 28, 2017, 05:10 pm Last Edit: Nov 28, 2017, 05:11 pm by cbrandt
Tu as essayé un programme tout simple qui envoie en boucle les impulsions toutes les quelques millisecondes ? Sur un seul moteur pour voir ? Moteur relié mécaniquement à rien du tout ?

Nathanael_B

Oui, j'envoie une impulsion en boucle toutes les 0.3s donc je peux les compter en tenant le moteur dans les doigts (relié à rien). J'obtiens :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 _ _ _ _ _ _ _ 1 2 3 etc...
et au 25ème micropas, le moteur avance d'un 1/4 de pas d'un coup puis attends le 1er micropas suivant. La rotation en tr/s est correcte mais le mouvement à un à coup dans le dernier quart de pas.
A vitesse rapide, ça fait pareil bien qu'évidemment je ne puisse pas compter les micropas.

J'ai changé : le drv8825, l'emplacement sur la ramp's1.4, la cable qui relie le moteur, toujours pareil ou presque (avec l'autre drv8825, le phénomène se produit sur le micropas 23 je crois).

Je peux encore changer la carte ramps mais pas le moteur j'en ai qu'un et j'aimerais bien être sur que ça puisse fonctionner avant d'en acheter un autre...

Nathanaël

ChPr

Pour moi, je trouve que ça ressemble à un bug logiciel, comme si les codes des positions 25 à 32 étaient identiques. A voir dans la bibliothèque qui génère ces micro-pas.

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

cbrandt

Il est comment ton programme de test ?

Artouste

Oui, j'envoie une impulsion en boucle toutes les 0.3s donc je peux les compter en tenant le moteur dans les doigts (relié à rien). J'obtiens :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 _ _ _ _ _ _ _ 1 2 3 etc...
et au 25ème micropas, le moteur avance d'un 1/4 de pas d'un coup puis attends le 1er micropas suivant. La rotation en tr/s est correcte mais le mouvement à un à coup dans le dernier quart de pas.
A vitesse rapide, ça fait pareil bien qu'évidemment je ne puisse pas compter les micropas.

J'ai changé : le drv8825, l'emplacement sur la ramp's1.4, la cable qui relie le moteur, toujours pareil ou presque (avec l'autre drv8825, le phénomène se produit sur le micropas 23 je crois).

Je peux encore changer la carte ramps mais pas le moteur j'en ai qu'un et j'aimerais bien être sur que ça puisse fonctionner avant d'en acheter un autre...

Nathanaël
Bonjour
Je ne connais pas les modules à base de de drv8825 , mais je pense que la gestion des microspas est un peu comme sur les a4988 "tributaire" de l'etats des entrées dédiées aux micropas.
tu a un oscilloscope ou un analyseur logique ?
si oui je regarderais si il y a de l'activité du au logiciel sur ces entrées.
il y a une lib qui gere ces moteurs. ?
tu a tenté de faire des tests basiques avec celle celle ci  ?


Nathanael_B

Bonsoir,

Voici mon programme de test très basique et dessous l'image du drv8825. les micropas sont définis par M0, M1 et M2 à 1 (cavaliers sur la ramps1.4)
Je n'ai pas d'oscilloscope ni d'analyseur logique.

Nathanaël

Code: [Select]

#define pinStep    36 // Signal de PAS (avancement)
#define pinDir     34 // Direction
#define pinEnable  30 // Enable

void setup() {
 
  Serial.begin(115200); // ouvre le port com avec l'arduino
  pinMode( pinEnable, OUTPUT );
  pinMode( pinDir   , OUTPUT );
  pinMode( pinStep  , OUTPUT );
}

void loop() {
 
  int i = 0;
  digitalWrite( pinEnable, LOW);
  digitalWrite( pinDir, HIGH); // Direction avant
  digitalWrite( pinStep, LOW); // Initialisation de la broche step

  // Avance de 200 pas x 32 micropas = 1 tour
  for ( i = 0; i < 6400; i++) {
    Serial.println(i);
    digitalWrite( pinStep, HIGH );
    delay( 150 );
    digitalWrite( pinStep, LOW );
    delay( 150);
  }
  Serial.println ("pause");
  delay (60000);
}



Artouste

Bonsoir,

Voici mon programme de test très basique et dessous l'image du drv8825. les micropas sont définis par M0, M1 et M2 à 1 (cavaliers sur la ramps1.4)
Je n'ai pas d'oscilloscope ni d'analyseur logique.

Nathanaël

Code: [Select]

#define pinStep    36 // Signal de PAS (avancement)
#define pinDir     34 // Direction
#define pinEnable  30 // Enable

void setup() {
  
  Serial.begin(115200); // ouvre le port com avec l'arduino
  pinMode( pinEnable, OUTPUT );
  pinMode( pinDir   , OUTPUT );
  pinMode( pinStep  , OUTPUT );
}

void loop() {
  
  int i = 0;
  digitalWrite( pinEnable, LOW);
  digitalWrite( pinDir, HIGH); // Direction avant
  digitalWrite( pinStep, LOW); // Initialisation de la broche step

  // Avance de 200 pas x 32 micropas = 1 tour
  for ( i = 0; i < 6400; i++) {
    Serial.println(i);
    digitalWrite( pinStep, HIGH );
    delay( 150 );
    digitalWrite( pinStep, LOW );
    delay( 150);
  }
  Serial.println ("pause");
  delay (60000);
}



OK
si je resume à ce stade de ce que j'ai compris :
ton probleme n'intervient avec ton équipement mécanique que sur de la commande en /32
avec le petit code  que tu a exposé au dessus ?
Je me souviens avoir eu au debut de mes essais de paps avec  du a4988  des problemes de drive micropas avec la durée des fronts (geré par delay() )
delay(150) = c'est 0.15 seconde :smiley-mr-green:



 

 

Nathanael_B

#10
Nov 29, 2017, 11:35 am Last Edit: Nov 29, 2017, 11:58 am by Nathanael_B
Bonjour,

Le problème se produit en 1/16 de pas (1 2 3 4 5 6 7 8 9 10 11 12 13 _ _ _ 1 2 etc...) ou 1/32 pas. Pour 2, 4, ou 8 micropas, je n'ai pas de soucis.

Dans le petit programme de test ci-dessus j'ai volontairement allongé la période pour pouvoir compter les pas (à la main, environ 3 micropas par seconde).

Dans le programme original (ici, en bas de page) les micropas sont de 9375 microsecondes afin d'assurer un déplacement suffisamment fluide du télescope et ce programme est à mon avis inutilement complexe pour résoudre mon problème qui survient quelque soit le mode de "fabrication" des micropas.

Nathanaël

Artouste

Bonjour,

Le problème se produit en 1/16 de pas (1 2 3 4 5 6 7 8 9 10 11 12 13 _ _ _ 1 2 etc...) ou 1/32 pas. Pour 2, 4, ou 8 micropas, je n'ai pas de soucis.

Dans le petit programme de test ci-dessus j'ai volontairement allongé la période pour pouvoir compter les pas (à la main, environ 3 micropas par seconde).

Dans le programme original (ici, en bas de page) les micropas sont de 9375 microsecondes afin d'assurer un déplacement suffisamment fluide du télescope et ce programme est à mon avis inutilement complexe pour résoudre mon problème qui survient quelque soit le mode de "fabrication" des micropas.

Nathanaël
Bonsoir
attention avec la notion de micro-pas
elle est tributaire de l'equipage mecanique/magnetique primaire =  "regarder les caractéristiques exactes du moteur utilisé"
le micro pas  , n'est pas une position mecanique  stable/verifiable  (stabilisable en résolution angulaire   )  pou un moteur PAP
pour un moteur PAP basique 200 pas (1.8°) la résolution  angulaire ( 1.8/32) reviendrait à garantir en précision un angle tenu a 0,05625° , sans faire jouer la dynamique

Nathanael_B

Bonjour,

Merci pour ces précisions. En fait ça tombe bien car je n'ai pas besoin de positionner très précisément le télescope mais juste besoin qu'il "suive" les étoiles avec une grande linéarité. Dans mon montage, je peux suivre une étoile avec des pas simples. Mais cela va donner lieu à des "à-coups", c'est pour ça qu'il faut que j'utilise des micropas, pour que les "à-coups" soient en deça de la précision de suivi requise. Mais cela est dynamique, car le suivi du télescope est constant (on lui impose juste quelques faibles variations de vitesse pour rattraper l'étoile guide quand elle dévie).

Reste que mon moteur ne tourne pas rond, en tout cas pas régulièrement, dès lors que je veux le faire tourner en 1/16 ou 1/32 de pas. Pourtant, tout le matériel devrait être compatible puisque j'ai pris l'ensemble chez le même revendeur de matériel pour impression 3D (cf les références sur le 1er post).

J'ai soudé les fils directement sur la ramps et changé toutes les cartes. Seul le moteur n'a pas été changé mais il fonctionne bien en 1/4 de pas alors... je sèche.

Nathanaël

Artouste

Bonjour,

Merci pour ces précisions. En fait ça tombe bien car je n'ai pas besoin de positionner très précisément le télescope mais juste besoin qu'il "suive" les étoiles avec une grande linéarité. Dans mon montage, je peux suivre une étoile avec des pas simples. Mais cela va donner lieu à des "à-coups", c'est pour ça qu'il faut que j'utilise des micropas, pour que les "à-coups" soient en deça de la précision de suivi requise. Mais cela est dynamique, car le suivi du télescope est constant (on lui impose juste quelques faibles variations de vitesse pour rattraper l'étoile guide quand elle dévie).

Reste que mon moteur ne tourne pas rond, en tout cas pas régulièrement, dès lors que je veux le faire tourner en 1/16 ou 1/32 de pas. Pourtant, tout le matériel devrait être compatible puisque j'ai pris l'ensemble chez le même revendeur de matériel pour impression 3D (cf les références sur le 1er post).

J'ai soudé les fils directement sur la ramps et changé toutes les cartes. Seul le moteur n'a pas été changé mais il fonctionne bien en 1/4 de pas alors... je sèche.

Nathanaël
bonsoir
le decay mode de ton drv est établi comment ?

Nathanael_B

bonsoir
le decay mode de ton drv est établi comment ?
ça je ne sais pas du tout, j'ai juste mis le drv8825 sur la ramps1.4 en suivant les instructions de cette page...
Nathanaël

Go Up