Configurazione motori passo passo

Salve, per la prima volta ho la necessità di usare dei motori passo passo. Ho acquistato 3 di questi motori. Nell'inserzione dice di usare solo due pin per comandare i motori, ma come dovrei fare precisamente?

Inoltre sulla scheda del driver ci sono 4 pin: " - + 5-12v " gli ultimi due sono ponticellati, perchè? L'alimentazione va su - e + giusto?

Scusate se le domande possono sembrare banali, ma come già detto è la prima volta che li uso. :slight_smile:

??? nell'inserzione dice:
"Sono presenti 7 ingressi ma per il motore andranno sfruttati solo gli ingressi da IN1 a IN4," percio IN1,IN2,IN3,IN4

nid69ita:
??? nell'inserzione dice:
"Sono presenti 7 ingressi ma per il motore andranno sfruttati solo gli ingressi da IN1 a IN4," percio IN1,IN2,IN3,IN4

Si si, ho sbagliato a leggere. Comunque questi 4 pin corrispondono alle rispettive fasi del motore giusto? Per pilotarlo mi basta mandare livelli alti sulle fasi da azionare?
C'è qualche guida che mi spieghi per bene come gestire le fasi?

Puoi guardare questa inserzione:
http://www.ebay.it/itm/ULN2003-Stepper-Motor-Driver-Board-for-Arduino-AVR-AR-NEW-/110954690452?pt=LH_DefaultDomain_0&hash=item19d56a3794&_uhb=1#ht_3087wt_1148

nella pagina c'e' un link "data download" che ti scarica uno zip con degli esempi,
ma ti consiglio di usare la libreria standard che viene messa già con Arduino

Perfetto, per ora grazie mille!

Posso alimentare la scheda del driver a 12v?
Quel jumper a cosa serve?
Inoltre è possibile sapere la posizione in cui si trova un motore?
Come faccio a sapere la velocità massima del motore?

Qualcuno mi saprebbe aiutare?

walter4991:
Posso alimentare la scheda del driver a 12v?

Cerca su internet ULN2003A per vedere le caratteristiche dell'integrato

walter4991:
Quel jumper a cosa serve?

Non lo so.

walter4991:
Inoltre è possibile sapere la posizione in cui si trova un motore?

Puoi contare via software le combinazioni che hai mandato anche se io ti consiglio degli encoder così sai anche se la ruota è bloccata.

walter4991:
Come faccio a sapere la velocità massima del motore?

Trova le caratteristiche del motore su internet oppure la misuri te. Se ci metti l'encoder puoi fare anche la misura della velocità.

Riesco a far girare il motore, ma molto molto lentamente. Circa un giro ogni 4-5 secondi.
Possibile che non vada più veloce?

walter4991:
Posso alimentare la scheda del driver a 12v?

dipende dal motore; l' integrato sopporta 12V.

Quel jumper a cosa serve?

non so dirtelo. Se fai 2 foto ( davanti e dietro) della schedina forse posso capire qualcosa.

Inoltre è possibile sapere la posizione in cui si trova un motore?

Se hai un sensore di zero (interuttore o fotocellula o sensore magnetico) puoi sapere la distanza / spostamenti / giri da quel punto.

Come faccio a sapere la velocità massima del motore?

È scritto:

Passi motore: 64 passi/giro
Rapporto riduttore 1:64
Passi sull'albero di uscita: 4096 passi/giro
Massima frequenza di partenza: 500 Hz
Massima frequenza: 900 Hz

Con 500Hz hai 500 passi al secondo che corrispondono a 500/4096= 0,122 giri al secondo e 500*60/4096= 7,32 Giri al minuto.
Con 900Hz hai 0,219 Giri al secondo e 13,18 Giri al minuti

Ciao Uwe

uwefed:
Con 500Hz hai 500 passi al secondo che corrispondono a 500/4096= 0,122 giri al secondo e 500*60/4096= 7,32 Giri al minuto.
Con 900Hz hai 0,219 Giri al secondo e 13,18 Giri al minuti

Posso superare i 900Hz?

Ho creato questo sketch:

#include <Stepper.h>

#define STEPS 64
Stepper stepper(STEPS, 2, 3, 4, 5);

void setup()
{
  stepper.setSpeed(30);
}

void loop()
{
  stepper.step(+0);
}

Solo che gira molto lentamente. E possibile velocizzarlo?

piú alta é la frequenza e piú debole sará il motore finche si ferma da solo anche a vuoto.

Ciao Uwe

Ma questo motore è adatto per far muovere le ruote di un robottino o è troppo lento?

Dipende dalla circnferenza della ruota.

Sará un robottino lento :slight_smile: :slight_smile:

Ciao Uwe

Se applicassi una ruota dentata grande al motorino ed una piccola all'asse della ruota, otterrei dei buoni risultati?

Altrimenti che motori mi consiglieresti?

Perchè in questo video riesce a raggiungere la velocità di 14rpm?

Usando il suo stesso codice, ovvero:

#include <Stepper.h>

const int stepsPerRevolution = 2037;  // change this to fit the number of steps per revolution
// for your motor


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

int stepCount = 0;  // number of steps the motor has taken

void setup() {
  // nothing to do inside the setup
}

void loop() {
  // read the sensor value:
  int sensorReading = analogRead(A0);
  // map it to a range from 0 to 100:
  int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
  // set the motor speed:
  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);
    // step 1/100 of a revolution:
    myStepper.step(stepsPerRevolution/100);
  } 
}

Il motorino vibra molto velocemente ma non si muove. Come mai a me ruota in modo irregolare, cioè gira un attimo poi si ferma, poi riparte, ecc?

Sicuro che siano gli stessi motori? Prova a modificare la costante stepsPerRevolution come indicato dallo stesso autore magari lui ha un numero di step diversi per ogni rotazione (prova a mettere 900).

Si avevo fatto la prova a mettere 900 e già ora le cose vanno meglio. Però ho due domande:

  1. Ma i led delle fasi attiva non dovrebbero accendersi in sequenza? Perchè usando la funzione stepper() i led (e quindi credo anche le fasi) si accendono in modo disordinato.
  2. Con la costante stepsPerRevolution a 900 il motorino si scalda moltissimo. E' normale?

--- EDIT ---
Ho settato i pin in questo modo:

Stepper myStepper(stepsPerRevolution, 8,10,9,11);

adesso i led delle fasi si accendono in sequenza:

A  S  S  A
A  A  S  S
S  A  A  S
S  S  A  A

--- EDIT2 ---

Settando stepsPerRevolution a 900 e motorSpeed a 33 ottengo la velocità massima del motorino. Oltre questi valori il motorino non gira ma vibra solamente. Inoltre ha anche abbastanza forza, con le mani non riesco a bloccarlo.

#include <Stepper.h>

const int stepsPerRevolution = 900;  

Stepper myStepper(stepsPerRevolution, 8,10,9,11);            

void setup() {
}

void loop() {
//  int sensorReading = analogRead(A0); // fotores

  int motorSpeed = 33;//map(sensorReading, 0, 1023, 0, 100);

  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);

    myStepper.step(stepsPerRevolution/100);
  }

Però resta il problema che scalda molto! E' normale? Come posso risolvere?

È normale che scaldi molto ed non é un problema se alimenti il motore a 5V.

Ritornado a una domanda precedente: Non ha senso che aggiungi dei ingranaggi per far girare piú veloce la ruota accoppiata al motore. Se il motore Ti gira troppo lento perché ha un ingranaggio demoltiplicatore con un rapporto troppo grande é meglio che prendi altri motori senza o con un rapporto del ingranaggio minore.

Ciao Uwe

Se li sostituissi con dei servo motori tipo questo: http://www.ebay.it/itm/Servo-motore-Tower-Pro-SG90-9g-arduino-servomotor-/230943482646?pt=Componenti_elettronici_passivi&hash=item35c54de316#ht_1237wt_1163 ?

Quei motorini sono degli stepper del cavolo. Van bene solo per fare delle piccole prove ed imparare a muovere i primi passi con gli stepper.
Su ebay ne trovi migliaia che li vendono anche a cifre ridicole schedina+stepper 5v (io ne ho uno comprato in cina).
Inoltre non sempre lo sketch standard funziona perchè la shield che vendono non è sempre uguale.
Su quella che ho io dovetti cambiare i parametri nello sketch.

Un servo, come quello, non è a rotazione continua. Ed è piccolino anche quello.
La domanda di @uwe è importante. Cosa devi muovere? Un robottino ma di che peso? Plastica, metallo, legno, cartone?
E' SOLO unesempio:
http://www.ebay.it/itm/121049610199?ssPageName=STRK:MESINDXX:IT&_trksid=p3984.m1436.l2649
Quello proposto è una macchinina a 2 ruote, 2 motrici e usano motorini DC.
Al limite il servo potrebbe essere usato per far cambiare la direzione a due ruote davanti, come sterzo, come questo:
http://www.ebay.it/itm/4tronix-DIYbot-Complete-DIY-Robot-Vehicle-Car-ALL-Components-except-Arduino-Uno-/181161705135?pt=UK_Computing_Other_Computing_Networking&hash=item2a2e143eaf&_uhb=1