Muovere stepper in maniera fluida

Salve ragazzi, seguendo le guide di Mauro Alfieri su internet ho iniziato a muovere il mio stepper con questo codice (vi metto giusto la parte di attivazione dei poli)

void orario (int delayTime){
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);//4
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(delayTime);
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);//3
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(delayTime);
 digitalWrite(motorPin1, HIGH);
 digitalWrite(motorPin2, LOW);//2
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(delayTime);
 digitalWrite(motorPin1, HIGH);
 digitalWrite(motorPin2, LOW);//1
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(delayTime);
}

Il motore è collegato ad una cinghia e si muove a "passi" appunto. C'è per caso una modalità di controllo per muoverlo in maniera più fluida?

Quello che stai utilizzando è il modo più semplice per far muovere uno stepper, però è anche quello che fornisce risultati mediocri.
Ci sono varie librerie per il movimento degli stepper, che oltre a generare le corrette sequenze per le fasi provvedono anche alle indispensabili rampe di accelerazione/decelerazione se vuoi ottenere movimenti fluidi.
La libreria più semplice da usare è la AccelStepper, però se vuoi il massimo dei risultati, sopratutto con più stepper, usa la GRBL, è adottata da quasi tutti i software per stampanti 3D basate su Arduino.

Prova a vedere

http://www.delucagiovanni.com/public/phpbb3/viewtopic.php?f=3&t=357

Col Servo MG995 c’erano stati grandissimi miglioramenti!

UPDATE: Ti allego un PDF che avevo fatto visto che le immagini sono andate perse…

images (1).jpg

images (2).jpg

images.jpg

Dispense su Arduino e Robotica pubblicate su Internet.pdf (210 KB)

Se il motore é adatto per poterlo pilotare in corrente (bassa tensione nominale, Corrente nominale sotto 1,2A) allora puoi usare questo:
SilentStepStick TMC2100 - Schrittmotortreiber - Watterott electronic col TMC2100 .

È veramente silenzioso e senza vibrazioni. Non lo senti muovere neanche se metti il dito sul motore.

Ciao Uwe

Grazie ragazzi :slight_smile:
Uso questo servo in particolare.
Proverò qualcuna delle vostre soluzioni e vi aggiorno!

Non avevo letto bene che usavi uno stepper, non so perché avevo letto servo..
Ma usi un servo o un passo passo?

Uso uno stepper (passo passo quindi)
Precisamente:

Ok, allora uso un driver già pronto come ti consiglia UWE se vuoi ottimi risultati.

In alternativa usa una libreria come consigliato da Astrobeed che fa muovere correttamente i motori con tutti i crismi del caso.

Il codice che usi mentre cambia i pin fa combinazioni intermedie non corrette che danno molta noia al motore, oltre al fatto che non usi nessun tipo di un'accelerazione plausibile, ne microstepping, etc..

Ragazzi sto provando questo codice di esempio della libreria

#include <AccelStepper.h>

AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5

void setup()
{  
   stepper.setMaxSpeed(1000);
   stepper.setSpeed(50);  
}

void loop()
{  
   stepper.runSpeed();
}

mentre lo schema di collegamento del mio stepper è dato dal seguente schema

Io collegavo i pin 8, 9, 10, 11 ma leggendo che sono di default 2, 3, 4, 5 li ho spostati in paranza.

Purtroppo il motore vibra ma non gira: cosa sbaglio?

In un vecchio progetto con uno stepper usai un comando, mi pare "microstep" o qualcosa del genere...il movimemento era lentissimo e veramente fluido. Mi pare che la libreria in questione era AccelStepper

Jenosky:
Purtroppo il motore vibra ma non gira: cosa sbaglio?

Se vibra senza girare vuol dire che sono collegati in ordine sbagliato i fili delle fasi.
Ti consiglio di lasciar perdere gli L29x, e compatibili, come driver per stepper in quanto sono solo la parte di potenza del driver, serve abbinargli un L297, la coppia L297-L298 (293) è da considerarsi obsoleta sebbene ancora in produzione.
Usa un moderno driver microstepper come questo, hai anche il vantaggio di usare solo due pin per comandarlo invece di quattro.

Astro, quindi per quello che ho ora come hardware è inutile che ci perdo la testa giusto? :slight_smile:

Jenosky:
Astro, quindi per quello che ho ora come hardware è inutile che ci perdo la testa giusto? :slight_smile:

Se passi ad un driver come si deve è inutile che perdi tempo con gli esperimenti col l'equivalente del L293, per giunta rischi di bruciare il driver perché manca il controllo della corrente.