Controllo di motore passo-passo

Abbiamo collegato una scheda Arduino a un motore passo usando un modulo 298N.

Capita qualche volta che il motore passo-pass salti qualche passo e ad esempio impostato un numero di passi equivalente a un giro si fermi un passo primo del dovuto…

Abbiamo usato questo sketch…

Siccome siamo alle prime armi, per cui vorremmo avere un vostro consiglio. Grazie


/*
Stepper Motor Control - one step at a time

This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.

The motor will step one step at a time, very slowly. You can use this to
test that you’ve got the four wires of your stepper wired to the correct
pins. If wired correctly, all steps should be in the same direction.

Use this also to count the number of steps per revolution of your motor,
if you don’t know it. Then plug that number into the oneRevolution
example to see if you got it right.

*/

#include <Stepper.h>

const int stepsPerRevolution = 200; // 360° / 1.8°
const int numSteps = 50;
const float rpm = 100; //era “const long int”
const int enablepin = 6; //aggiunta per L298 Enable
//Pin 6 Arduino a pin 7,e 12 modulo motore

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

float stepCount = 0; // number of steps the motor has taken
int i_do = 1; // if i_do = 1 → do steps
// if i_do = 0 → do nothing (but Arduino keeps looping)

void setup() {

// initialize the serial port:
Serial.begin(9600);

// ****************************************** Linee aggiunte
pinMode(enablepin,OUTPUT);
digitalWrite(enablepin, LOW); //Righe spostate(erano nel void loop) perché vanno inserite
// ******************************************

// delay(50) ;
digitalWrite(13, HIGH); //dove si definiscono le variabili
//altrimenti rientra nel ciclo lo reinizializza a HIGH,
//cosi,invece, non fa più il loop pur lasciandolo acceso
//è stato aggiunto l’accensione/spegnimento del Led su scheda - Pin13
//L298 enable
// turn the LED on
// Fine righe spostate
// set stepper speed (rpm):
myStepper.setSpeed(rpm); // set stepper speed (rpm):

}

void loop() {

if ( i_do == 1) // do it once
{

// ****************************************** Linee aggiunte
// enable Pin : stepper
digitalWrite(enablepin,HIGH);
// ******************************************

stepCount = stepCount+1 ;
Serial.print("L298 ON " );

myStepper.step(numSteps);

digitalWrite(enablepin, LOW); //L298 disable
digitalWrite(13, LOW); // turn the LED off (HIGH is the voltage level)

Serial.print("Giri: " );
Serial.println(stepCount*numSteps/200);

i_do = 0 ; // set i_do = 0 to do it once

Serial.println("L298 OFF " );

}

}

>amontag: … ti ricordo che in conformità al regolamento (… che ti consiglio di leggere con attenzione), punto 7, devi editare il tuo post (in basso a destra del post, bottone More → Modify) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.

Guglielmo

Se non l' hai scritto, basta che ci davi il link da dove l' hai preso :smiley: