Branchement Arduino-R3 sur driver DM860E, programme associé

Bonjour à tous,
je cherche à faire fonctionner un moteur pas-à-pas bipolaire avec une carte Arduino-R3.
Pour cela j'utilise :

Le montage est le suivant : photos ci-dessous.
J'ai connecté l'Arduino et le driver comme indiqué sur la figure 9 du User Manuel du DM860E, c'est à dire :

  • PUL+ et DIR+ au 5 volts de l'Arduino (fils rouges)
  • PUL- à la broche 9 de l'Arduino (fil jaune)
  • DIR- à la broche 10 de l'Arduino (fil vert)

Suivant le conseil de jpbbricole Masse commune arduino, driver, alim, connexion alim sur driver - #9 by jpbbricole je n'ai pas connecté la masse de l'Arduino à celle du driver.
Et j'ai écrit le programme suivant à partir d'exemples :

#include <Stepper.h>
const int stepsPerRevolution=200;
Stepper myStepper(stepsPerRevolution,9,10);
void setup()
{
   //pinMode(9,OUTPUT); nécessaire ?
   //pinMode(10,OUTPUT); nécessaire ?
   myStepper.setSpeed(60);
}
void loop()
{
   myStepper.step(stepsPerRevolution);
   delay(500);
   myStepper.step(-stepsPerRevolution);
   delay(1000);
}

Mais il me semble qu'il y a quelque chose qui cloche : Stepper ne sait pas si c'est la broche 9 ou la 10 qui est reliée à PUL- et inversement pour DIR-.
Par ailleurs les instructions pinMode(9,OUTPUT); et pinMode(10,OUTPUT); sont inutiles je suppose ?


Bonjour oeilnoir

En général, c'est la bibliothèque qui "s'occupe" des pin utilisées.

Sauf erreur, Stepper.h ne sait pas gérer les drivers comme le A4988 et les genre DM860 avec DIR, STEP et ENA, utilises plultôt StepperDriver

A+
Cordialement
jpbbricole

Bonjour jpbbricole : je vais essayer StepperDriver, merci !

Mon moteur marche avec StepperDriver.
Il vibre comme un marteau-piqueur, il me reste à trouver les bons réglages.
Je ferai un compte-rendu du résultat final.
Merci jpbbricole !

Bonjour oeilnoir

Règle le courant en "jouant" avec le potentiomètre.

A+
Cordialement
jpbbricole

Bonjour, peux-tu m'envoyer ton code avec StepperDriver car j'ai le même problème que toi ?

Bonjour mathys17.

Finalement j'ai fait un code avec Stepper et un avec BasicStepperDriver.

Avec Stepper

``
/*Arduino -> DM860E

  • 8 -> DIR-
  • 9 PUL-
  • 5 volts -> DIR+ et PUL+
  • MICROSTEPS doit avoir la valeur réglée avec les interrupteurs du DM860E
    */

#include <Stepper.h>
const int stepsPerRevolution=200;
Stepper myStepper(stepsPerRevolution,8,9);
void setup()
{
myStepper.setSpeed(60);
}
void loop()
{
myStepper.step(stepsPerRevolution);
delay(500);
myStepper.step(-stepsPerRevolution);
delay(1000);
}
``

Avec BasicStepperDriver

``
/*Arduino -> DM860E

  • 8 -> DIR-
  • 9 PUL-
  • 5 volts -> DIR+ et PUL+
  • MICROSTEPS doit avoir la valeur réglée avec les interrupteurs du DM860E
    */

#include <Arduino.h>
#include "BasicStepperDriver.h"
#define MOTOR_STEPS 200
#define RPM 1
#define MICROSTEPS 16
#define DIR 8
#define STEP 9
BasicStepperDriver stepper(MOTOR_STEPS,DIR,STEP);
void setup()
{
stepper.begin(RPM,MICROSTEPS);
}
void loop()
{
stepper.begin(RPM,MICROSTEPS);
stepper.rotate(30);
stepper.begin(8*RPM,MICROSTEPS);
stepper.rotate(-360);
}
``
Avec ces deux programmes le moteur tourne comme attendu mais ils sont très rudimentaires et certainement pas optimisés.

D'accord merci,
je vais tester ce code, j'utilise en DM860T, mais si je ne connecte rien au PIN Ena+ et Ena- les freins du moteurs s'activent automatiquement je ne sais pas si c'est normal.
Je débute en Arduino et en moteur pas :slight_smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.