Bug avec L298N et moteur pas-à-pas NEMA17

Bonjour à tous,

Cela fait un moment que je galère à trouver d’où vient le problème.
Issu d’un projet plus complexe à la base, j’ai isolé uniquement les composants concernés pour isoler le problème, mais je ne comprends toujours pas ce qu’il se passe.

Alors voilà le montage :

Voir photo jointe.

  • Arduino UNO, alimenté en USB via PC
  • Broche 8 à 11 arduino connectées sur IN1 à 4 du L298N
  • BP en INPUT_PULLUP sur broche 2 de l’arduino
  • L298N alimenté par une alim 12V 2A
  • Moteur pas-à-pas câblé sur les sorties 1 à 4 du L298N.
  • Masses 5V USB et 12V communes

Le code :

#include <Stepper.h>

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

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(300);
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP); //Down


}

void loop() {
  // step one revolution  in one direction:
  if (!digitalRead(2)) {
    Serial.println("clockwise");
    myStepper.step(stepsPerRevolution);
  }

}

Et maintenant le problème :

Ce code est donc censé faire tourner le moteur pas-à-pas lorsqu’on appuie sur le bouton, ce qui fonctionne correctement… Jusqu’à que le bouton soit relâché. Après ça, j’ai l’impression que des impulsions sont envoyées vers le L298N environ toutes les secondes. Le L298N clignote, on sent des petits à-coups dans le moteur, ce qui n’est pas du tout normal…

Et le tout revient à la normal en faisant un reset de l’arduino.

Voici une vidéo afin de visualiser le problème : Visionner

Je ne sais plus quoi faire.
Avez-vous une idée ?

Merci d’avance.

Cyril

Il manque le brochage du shield à L298N (détail de tout ce qu'il y a dessus OU photo de cette carte OU pub où elle est achetée...). Et on ne peut pas non plus deviner quelles broches de l'Arduino vont sur quelle s broches du L298N

Soit il y a plusieurs shields qui se ressemblent, soit il y a 6 entrées et tu n'en a branché que 4.

Au passage quelle est la résistance d'une bobine du moteur?

Bonsoir Vileroi et merci pour la réponse.

La broche 8 de l'arduino est branchée sur IN1, LA 9 SUR IN2, la 10 sur IN3 et la 11 sur IN4.

Voici la carte que j'ai achetée : https://m.fr.aliexpress.com/item/4000083426267.html

Quant à la résistance d'une bobine elle est de 2,3 ohms.

Merci d'avance.
Cyril

Au début, je pensais à un problème lié à EN en l'air. Mais je suppose que la broche EN a son cavalier.

Je suis persuadé maintenant que le problème vient d'ailleurs. Le moteur que tu utilises ne supporte pas le 12V. C'est un moteur basse tension. Ce type de moteur est fait pour être alimenté en courant. Sa tension nominale doit être proche de 3V, mais bien souvent elle n'est pas indiquée. En tout cas ce n'est pas 12V.

Le L298H, comme les ULN2803 ou ULN2003 ne sont pas adaptés. Il faut des circuits genre A4988, DRV8825, TB6600, dm860h...

Le phénomène de pas supplémentaires que tu observes ne peut sans doute pas se voir quand le moteur tourne, un pas de plus ou de moins ne se voit pas.

Quant à la résistance d'une bobine elle est de 2,3 ohms

Alimenté en 12V, le courant demandé serait de 12V/2,3o = 5A. Pour peu que la bibliothèque utilise le mode 2 phases à la fois, le courant dépasse les 10A. Le moteur devrait griller si l'alimentation était capable de fournir ce courant.

Ce qui peut se passer à l'arrêt, (n'ayant pas les composants je ne peux rien affirmer): le moteur met en sur-intensité l'alim. Cette dernière ne pouvant pas fournir les 5A, coupe la tension, Plus rien n'est alimenté. Au bout de 1s l'alim (s'est refroidie par exemple) tente de se rallumer et le courant revient un court instant avant de disparaitre car il est toujours trop élevé. Au moment ou l'alim remet la tension le L298N envoie de nouveau une impulsion au moteur que tu observes. Et le cycle recommence.

Pour moi, il y a deux types de moteurs Nema17, ceux qui sont construits pour fonctionner sous des tensions de 5V, 6V ou 12V, et des basse tension qui sont pilotés avec des limiteurs de courant. Malheureusement, la plupart des sites d'amateurs n'ont pas compris ce qu'est un moteur hybride et ne connaissent pas cette différence. Les moteurs 12V sont assez répandus quand on n'a pas besoin de performances, ce qui est le cas des petites commandes numériques chinoises et des imprimantes. On choisit un moteur un peu plus gros et cela passe. Du coup, c'est plus rare de récupérer des basse tension et on ne peut qu'écrire ce que l'on peut tester. Sur la vingtaine de moteurs récupérés, je n'en ai que deux qui sont basse tension, mais je ne comprends pas d'où ils peuvent sortir.

Si tu as des moteurs du type 2,3 ohms 1,3A (donc 3V, 5W) l'alim convient (pour un moteur 5W, il faut une alim un peu plus puissante genre 8W, et tu en as 24W), et c'est le driver type A4988 qui va réguler le courant. Avec ces types de drivers, l'alim peut être de 12V/8W, 24V/8W voir même plus. On ne prend surtout pas d'alim de 3V.

Je jour où j'ai le temps de finir, je publie un tuto.

Tu peux essayer avec un moteur récupéré, si la résistance de phase fait 30 ohms ou plus, cela devrait fonctionner.

Note: c'est un plaisir de répondre quand les liens sont cliquables. Si il faut couper, coller, ouvrir une nouvelle page... je passe parfois à côté, ou je remets cela à plus tard.

Merci pour la réponse très complète.
Effectivement je n'avais pas pensé à mesurer les résistances pour calculer le courant consommé...

Et oui les pin EN ont leur cavalier.

Ce que je ne comprends pas c'est pourquoi ça tourne correctement tant que j'appuie sur le bouton, et que ça plante au relâchement...

Je vais acheter un driver A4988 voir ce que ça dit. Je vous tiens au courant !

Ce que je ne comprends pas c'est pourquoi ça tourne correctement tant que j'appuie sur le bouton, et que ça plante au relâchement...

Il faudrait pour bien le comprendre savoir comment réagit l'alim quand on fait un court-circuit (2 ohms, c'est presque un court-circuit).

Toute la suite n'est qu'hypothèse.

Il est possible que lors de l'initialisation aucun enroulement ne soit sélectionné, auquel cas il n'y a pas de courant et le moteur ne tourne pas. Quand on a fait tourner le moteur et qu'il est arrêté, le dernier enroulement sélectionné va rester alimenté et on est alors en surconsommation et le phénomène de pompage intervient.

Quand le moteur tourne, on va changer de phase alimentée. Au moment ou la phase change, le courant ne s'établit pas instantanément mais va croitre à partir de zéro. Juste à ce moment, on n'est plus en court-circuit car le courant demandé est nul. Il est donc possible qu'alors l'alim se réinitialise, délivre le courant tant qu'il est inférieur à 2A, puis se coupe ensuite. Le moteur serait alors alimenté avec des impulsions qui suffisent à le faire tourner car on est à vide et à faible vitesse.

Je vais acheter un driver A4988 voir ce que ça dit. Je vous tiens au courant !

Il ne faut pas oublier de régler le courant sur le A4988 pour qu'il corresponde au courant du moteur.