[Résolu] Problème de micropas

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

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:

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

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 ?

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

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

Il est comment ton programme de test ?

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

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 ?

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

#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);
}

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

#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);
}




![|500x230](https://a.pololu-files.com/picture/0J4232.600.png?f2f6269e0a80c41f0a5147915106aa55)

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 :grin:

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

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

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

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

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

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

Artouste:
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

Nathanael_B:
ç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

Bonsoir
le decay mode basé sur le composant DRV8825 est fonction de l'etat du pin 19
voir datasheet
(NB ne pas confondre "composant et module" 8)

N'ayant pas de drv8825 (en compo unitaire ou sur module "sous le coude" )

Je ne peux pas répondre à ta place

Artouste:
Bonsoir
le decay mode basé sur le composant DRV8825 est fonction de l'etat du pin 19
voir datasheet
(NB ne pas confondre "composant et module" 8)

N'ayant pas de drv8825 (en compo unitaire ou sur module "sous le coude" )

Je ne peux pas répondre à ta place

bonjour
complément à ma réponse
sur les modules le pin19 u drv8825 est en l'air
ici un lien d qq'un ayant eu des problemes peut etre similare aux tiens

avec sa "conclusion" : Movement as smooth as butter! :grin:

Merci à tous les deux.
La pin 19 en effet c'est une piste, j'ai vu sur ton précédent lien que je pourrais mettre la pin 19 à 1 pour 1/32. Pour l'instant le radiateur est collé dessus et je n'ai pas bien les outils pour souder une pin d'un composant aussi petit... une combine en plus de l'info? J'ai juste un fer à souder classique. Je peux peut-être me faire une panne ultra fine en cuivre pour l'occasion. Et puis j'ai deux composants, je peux toujours essayer.
Nathanaël

Nathanael_B:
Merci à tous les deux.
La pin 19 en effet c'est une piste, j'ai vu sur ton précédent lien que je pourrais mettre la pin 19 à 1 pour 1/32. Pour l'instant le radiateur est collé dessus et je n'ai pas bien les outils pour souder une pin d'un composant aussi petit... une combine en plus de l'info? J'ai juste un fer à souder classique. Je peux peut-être me faire une panne ultra fine en cuivre pour l'occasion. Et puis j'ai deux composants, je peux toujours essayer.
Nathanaël

Bonjour
un petit truc qui rend bien bien des services dans des cas ponctuels comme çà.
J'etais un peu dubitatif au début, mais j'aurais du mal aujourd'hui à m'en passer.
un petit article dessus

Artouste:
Bonjour
un petit truc qui rend bien bien des services dans des cas ponctuels comme çà.
J'etais un peu dubitatif au début, mais j'aurais du mal aujourd'hui à m'en passer.
un petit article dessus

bonsoir
et anecdotiquement concernant ma dernière reponse
voir ce post recent sur hackaday