Driver moteur pas à pas

Bonjour,

Je dois piloter des pompes peristaltiques avec des moteurs pas à pas.
J’ai utilisé deux drivers différents :

  1. L198N
    J’arrive à faire fonctionner le moteur avec le L198N sans problème même si j’ai beaucoup de vibration.
    Extrait du code :
const int stepsPerRevolution = 200;
Stepper PompeStepA(stepsPerRevolution, 22, 23, 24, 25);
PompeStepA.setSpeed(200);
PompeStepA.step(1000);

Le problème, vibration et le L198N est trop gros : j’ai au total 4 pompes à faire tourner…

  1. EasyDriver (générique schamlzhaus ?)
    Alimentation externe
    Je règle le potentiometre sur le driver
    Extrait de code simple :
#include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper(AccelStepper::DRIVER, 3, 2);

int pos = 10000;
void setup()
{ 
  stepper.setMaxSpeed(1000);
  stepper.setAcceleration(500);  
}

void loop()
{
  if (stepper.distanceToGo() == 0)
  {
    delay(500);
    pos = -pos;
    stepper.moveTo(pos);

  }
  stepper.run();

}

Résultat, le moteur vibre beaucoup. Il arrive à tourner lentement.
Je suppose un problème de raccordement mais je ne vois pas ou est l’erreur !
Sur le descriptif du moteur :
A (Noir) : branché sur la première borne A du easydriver
A’ (Vert) : branché sur la seconde borne A du easydriver
B (Rouge) : branché sur la première borne B du easydriver
B’ (Bleu) : branché sur la seconde borne B du easydriver

Par ailleurs le driver chauffe beaucoup !

Cela fonctionne un peu mieux avec ce code même si ça vibre :

#define STEP_PIN 3
#define DIR_PIN 2

void setup() {
    pinMode(STEP_PIN, OUTPUT);
    pinMode(DIR_PIN, OUTPUT);
    digitalWrite(DIR_PIN, HIGH);
      pinMode(LED_BUILTIN, OUTPUT);
}

void step(long stepDelay) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(stepDelay);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(stepDelay);
}

void loop() {
    // rotate by 100 steps.
    for (int i = 0; i < 200; i++) {
        step(50);
    }
}

Mes questions ?

  • Est-ce que le driver easydriver est une bonne solution ? Il me faut un driver non bloquant et qui ne prenne pas trop de place et que je puisse monter sur une carte PCB.
  • Comment expliquer ces vibrations, ou serait le problème de raccordement ou de montage ?

Merci par avance !

C'est une pompe péristaltique. Avec un pas à pas c'est plus précis (théoriquement !).
Le moteur vibre et fait beaucoup de bruit. je ne sais pas quoi dire d'autre.... il bouge dans tous les sens.
J'ai plusieurs pompes du même modèle et le constat est le même pour chaque.

Kiristo:
Bonjour,

Je dois piloter des pompes peristaltiques avec des moteurs pas à pas.
J'ai utilisé deux drivers différents :

  • L198N
  • EasyDriver

bonjour
marquage (photos) indiqué sur TON moteur ?
La page ali expose simplement un pap avec pour seule infos 24V 10W
tu alimente ton PAP sous quelle tension ?

resistance mesurée des enroulements du PAP ?
remarque un easy driver est limité à 750 mA max/phase

Ci-joint le marquage sur le moteur : 12v 10w
J'alimente en 12V sur alim stabilisée. Elle m'indique 0.33A

Résistance mesurée (entre A et A' si c'est bien ça) = 11.2ohms

Je viens de réussir faire fonctionner le driver avec mon moteur pas à pas :
Après plusieurs essais j’ai changé le temps entre deux instructions
step(120);
(cela fait plusieurs fois que je change les valeurs entre 50 et 300).
Pourquoi cette fois le moteur a tourné sans vibration nickel.
J’ai changé le step en diminuant en en augmentant et cela fonctionne.
Cependant mon driver chauffe beaucoup et il recommence après quelques minutes à faire n’importe quoi ! Quand je le touche, cela augmente les vibrations dans le moteur…

Je ne comprends pas pourquoi il chauffe ?
Avez-vous une idée ?

Je vais racheter des drivers d’une autre marque, mais j’aimerais savoir pour il chauffe avant d’en abimer de trop.

#define STEP_PIN 3
#define DIR_PIN 2

void setup() {
    pinMode(STEP_PIN, OUTPUT);
    pinMode(DIR_PIN, OUTPUT);
    digitalWrite(DIR_PIN, HIGH);
      pinMode(LED_BUILTIN, OUTPUT);
}

void step(long stepDelay) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(stepDelay);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(stepDelay);
}

void loop() {
    // rotate by 100 steps.
    for (int i = 0; i < 200; i++) {
        [b]step(120);[/b]
    }
}

Kiristo:
Ci-joint le marquage sur le moteur : 12v 10w
J'alimente en 12V sur alim stabilisée. Elle m'indique 0.33A

Résistance mesurée (entre A et A' si c'est bien ça) = 11.2ohms

rapide calcul au louchometre de précision :grin:

Tu es à quasi 1A/phase
ton easy driver (A3967) , c'est max 750 mA ,il doit se mettre en thermal shutdown rapidement , tu a mis un radiateur ?

Pour rester dans de l'encombrement "réduit" , je te conseillerais d'essayer des DRV8825 avec petit radiateur.
microstep jusqu"au 1/32 , courant max 2.2A

oui ça ferait 1.1 A. c'est pas concordant avec 12V 10 W
Sur la photo, y'a pas de radiateur. Bonne remarque. Il en faut un. C'est sur.
cela dit 11.2 ohms ...mais n’oublions pas la notion d'inductance. il devrait passer 0.83 A

De toutes façons, le driver est trop faible
Si le travail demandé dépasse le couple il va se passer des choses bizarre.
Par curiosité, à quoi serre elle ? visiblement, j'ai très mal compris ce que tu entendais pas vibrer.

OK je teste demain avec le driver DRV8825 proposé par Artouste.
(J'avais commandé ce driver mais je ne l'ai pas testé).

Pour Pomme-Poire : le moteur rentré en 'raisonnance', il vibrait constamment.

Merci encore !

Bonjour,
Je reviens avec mon problème de Driver.
J'ai testé le DRV8825 proposé par Artouste et vraiment il est nickel.
Encombrement mini, facile à configurer et fonctionne très bien avec la librairie Accelstepper.
Merci à tous !

Kiristo:
Bonjour,
Je reviens avec mon problème de Driver.
J'ai testé le DRV8825 proposé par Artouste et vraiment il est nickel.
Encombrement mini, facile à configurer et fonctionne très bien avec la librairie Accelstepper.
Merci à tous !

Bonsoir
Oui c'est un driver de pap assez versatile et simple à utiliser

Ce n'est peut être pas ton cas/besoin là pour ton appli :grin:
Mais si tu veux jouer "finement" en micropas , une discussion intéressante