Buonasera,
ho questo motore a casa:
e vorrei farlo muovere...ma non ho idea da dove partire. Non ho alcuna specifica dello stesso.
Da dove inizio per capire come può funzionare?
grazie
Buonasera,
ho questo motore a casa:
e vorrei farlo muovere...ma non ho idea da dove partire. Non ho alcuna specifica dello stesso.
Da dove inizio per capire come può funzionare?
grazie
Beh intanto possibile che non ne sai proprio nulla? Da qualche parte sarà stato acquistato, non penso sia "piovuto dal cielo" in casa tua... E sul motore non c'è nessuna sigla o nome?
Scherzi a parte, ma Google Lens non ce l'hai? Ad esempio si trova questo:
Quindi leggo che è un motore da 12V, e c'è pure scritto che serve un driver (A4988), per cui se vuoi iniziare a fare qualcosa con Arduino devi prima procurartelo, poi si pensa a come collegarlo ed al programma per "farlo muovere" (magari a quel punto sarà utile che tu possa anche spiegare lo scopo). Magari per iniziare a capire meglio di cossa si parla, prova a guardare qualche video o pagina che descrive la cosa, ad esempio:
Grazie mille per i consigli.
Ho ordinato il driver e nei prossimi giorni proverò a farlo funzionare e posterò il risultato e/o dubbi.
Nella descrizione Amazon manca l'informazione più importante per regolare correttamente il driver ovvero la corrente di fase.
Il modello del motore dovrebbe essere questo SM15-80L e viene dato per una corrente massima di 800mA.
Io starei un po' più basso, diciamo sui 600mA.
Mi sa che ho un problema con la corrente. Non riesco a capire come misurarla.
Ho collegato il driver con il motore nel seguente modo:
B1-GIALLO
A1-ROSSO
A2-BLU
B2-NERO
però surriscalda subito.
Non ho capito come misurare la corrente in entrata al motore?
grazie
Non devi misurare la corrente (o meglio sarebbe anche fattibile, ma scomodo da fare).
Con il driver A4988 ti basta impostare la Vref come indicato nel link che ti ha già postato @docdoc
L'unica cosa a cui devi fare attenzione è il valore delle resistenze di feedback che sono usate nel tuo driver specifico. Il valore più comune è di 0.1Ohm, ma verifica altrimenti sballano tutti i conti fatti.
Il tuo valore di riferimento in Volt deve quindi essere pari a:
Vref = 0.6 * 8 * 0.1 = 0.48V
Infine, tieni conto che i motori passo passo scaldano perché sono sempre in tensione per mantenere la posizione (ma ovviamente non devono raggiungere temperature eccessive, diciamo che non devi scottarti al tatto). Se la tua applicazione lo consente, una votla raggiunta la posizione voluta, puoi togliere il segnale di "enable" al driver e cosi interrompere l'alimentazione del motore.
Esattamente come hai detto.
Grazie al vostro aiuto sono riuscito a farlo funzionare, il codice per testarlo è il seguente:
//Definizione dei PIN
const int pinDir = 2;
const int pinStep = 3;
const int pinEnable = 6;
const int numStepMotore = 800; //E' il numero di step per rotazione del motore (potrebbe differire in base al modello)
const long velocita = 500; //Si tratta di microsecondi tra un impulso e l'altro sul pin STEP
void setup() {
//inizializzo i PIN come OUTPUT
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);
pinMode(pinEnable, LOW);
}
void loop() {
//definiamo la direzione del motore
digitalWrite(pinDir, HIGH);
digitalWrite(pinEnable, HIGH);
delay(2000);
//cambio la direzione di marcia
digitalWrite(pinEnable, LOW);
//esegue un giro completo in un senso
for (int x = 0; x < numStepMotore; x++) {
digitalWrite(pinStep, HIGH);
delayMicroseconds(velocita);
digitalWrite(pinStep, LOW);
delayMicroseconds(velocita);
}
digitalWrite(pinEnable, HIGH);
//aspetto 2 secondi
delay(2000);
digitalWrite(pinEnable, LOW);
//cambio la direzione di marcia
digitalWrite(pinDir, LOW);
//rieseguo un altro giro completo nel senso opposto
for (int x = 0; x < numStepMotore; x++) {
digitalWrite(pinStep, HIGH);
delayMicroseconds(velocita);
digitalWrite(pinStep, LOW);
delayMicroseconds(velocita);
}
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.