codice micropassi stepper motor

salve a tutti, vorrei pilotare un motore passo passo e portarlo a velocità costante,
il motore che ho selezionato è questo:

pensavo di pilotarlo con arduino usando il drv8825, secondo voi posso usare questo driver? il driver ha una tensione operativa che va da 8.2 V a 45 V e il motore funziona a 4,6 volt basta limitare la corrente che va al motore con il potenziometro sul driver ??

grazie e buona giornata

Il dvr8825 dovrebbe essere adatto per quel motore.
Devi impostare la corrente di 0,65A e se guardi la curva della coppia alimentato a 24V. Non so peché quel grafico é specificato per 0,8A e non per 0,65A come da datasheet.
Ciao Uwe

grazie :slight_smile:

salve a tutti, sto pilotando questo motore :
(https://www.omc-stepperonline.com/nema-14-stepper-motor/round-nema-14-bipolar-0-9deg-12ncm-17oz-in-0-65a-4-6v-f36x20mm-4-wires.html )

sto utilizzando il driver drv8825 e devo controllarlo in modo che la velocità sia costante, sto utilizzando questo codice :

#include <AccelStepper.h>
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1
// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  // Set the maximum speed in steps per second:
  stepper.setMaxSpeed(2000);
}
void loop() {
  // Set the speed in steps per second:
  stepper.setSpeed(2000);
  // Step the motor with a constant speed as set by setSpeed():
  stepper.runSpeed();
}

sei io volessi pilotarlo con i micropassi dovrei usare pin M0 M1 M2 e a seconda di come li definisco arrivo alle combinazioni dei microstep, qualcuno potrebbe aiutarmi con il codice ?

>iungooo: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag:

[code] _il _tuo_ codice_ [/code]

così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:
P.P.S.: Ho riunito i due thread riguardanti lo stesso argomemto in uno solo. Cortesemente, per lo stesso argomento NON aprire più thread. Grazie.

questo è il codice che sto provando a modificare, vorrei avere una risoluzione di microstep di 1/16 e avere appunto una velocità costante

#include <AccelStepper.h>
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1
#define M0 10
#define M1 11
#define M2 12
// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  // Set the maximum speed in steps per second:
  stepper.setMaxSpeed(2000);
  
  pinMode ( M0, OUTPUT );
  pinMode ( M1, OUTPUT );
  pinMode ( M2, OUTPUT );
 
  digitalWrite ( M0, LOW );
  digitalWrite ( M1, LOW );
  digitalWrite ( M2, HIGH );
 
}
void loop() {
  // Set the speed in steps per second:
  stepper.setSpeed(2000);
  // Step the motor with a constant speed as set by setSpeed():
  stepper.runSpeed();
}

salve a tutti,

sto cercando di pilotare questo motore passo passo ( https://www.omc-stepperonline.com/nema-14-stepper-motor/round-nema-14-bipolar-0-9deg-12ncm-17oz-in-0-65a-4-6v-f36x20mm-4-wires.html ) con il drv8825 e ho problemi per impostare i micropassi

devo avere una velocità costante e sto utilizzando questo codice

 // Include the AccelStepper library:
#include <AccelStepper.h>
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3

#define motorInterfaceType 1
// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  // Set the maximum speed in steps per second:
 
  stepper.setMaxSpeed(2600);
}
void loop() {
  // Set the speed in steps per second:
  stepper.setSpeed(2600);
  // Step the motor with a constant speed as set by setSpeed():
  stepper.runSpeed();
}

ora per impostare i micropassi dovrei definire M0 M1 M2 e impostarli secondo la risoluzione di micropassi desiderata, ho provato a usare questo codice

 /*Example sketch to control a stepper motor with DRV8825 stepper motor driver, AccelStepper library and Arduino: continuous rotation. More info: https://www.makerguides.com */
// Include the AccelStepper library:
#include <AccelStepper.h>
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3
#define M0 10
#define M1 11
#define M2 12
#define motorInterfaceType 1
// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin, M0, M1, M2);
void setup() {
  
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
  digitalWrite ( M0, HIGH );
  digitalWrite ( M1, HIGH );
  digitalWrite ( M2, LOW );
  // Set the maximum speed in steps per second:
  
  //stepper.setMaxSpeed(2000);
}
void loop() {
  // Set the speed in steps per second:
  stepper.setSpeed(400);
  // Step the motor with a constant speed as set by setSpeed():
  stepper.runSpeed();
}

solo che con questo codice il motore rimane fermo, qualcuno sa dirmi dove sbaglio ?

M0 M1 e M2,dove hai collegato la massa di questi pin?

ho collegato la terra dell'alimentazione logica alla terra di arduino

Ok,quindi tutte le terre sono assieme?

no, in realtà no M0 M1 M2 non sono collegati a massa solo ai pin 10 11 12, è li il problema ?

iungooo:
no, in realtà no M0 M1 M2 non sono collegati a massa solo ai pin 10 11 12, è li il problema ?

Normalmente questi tre pin di selezione sono LOW,settati da resistori pull-down interni.
Il modulo non ha alcun pin di alimentazione logica, perchè DRV8825 viene alimentato dal regolatore di tensione interno 3V3.
Però devi portare la terra in GND LOGIC (che è il pin "nell'angolo")

si si la terra è collegata,

ho lasciato il codice originale e i micropassi li regolo collegando i pin M0 M1 M2 ai 5 volt di arduino in funzione della tabella sul datasheet del drv8825.
è la stessa cosa in questo modo no ?

grazie e buona serata.

m0 m1 m2 andrebbero collegati direttamente alle digitali
Poi dipende.A te serve impostarli 1 volta e stop,oppure necessiti di cambiare gli step?

no una volta impostati non devo più cambiarli, che dici vanno bene collegati ai 5 volt di arduino ?

nono niente 5v
Li colleghi alle 3 digitali.
Poi definisci da programma se sono high o low (in base a come vuoi gli step)