PROGRAMMAZIONE STEP MOTOR 28byj-48

Sale a tutti, spero che qualcuno mi possa aiutare. Sto realizzando un semplice progetto con 2 step motor 28byj-48 (uniti a dei mattoncini Lego) che devono realizzare un ciclo continuo: STEP1 senso orario, STEP2 senso orario, STEP1 senso antiorario e subito dopo orario, STEP2 torna in posizione originale in senso **ANTIORARIO** e STEP1 in posizione originale in senso antiorario. 
- Motore 1 collegato ai pin 2,3,4,5
- Motore 2 collegato ai pin 8,9,10,11
- Il positivo e il negativo sono collegati correttamente con la giusta tensione.
Lo sketch è il risultato della modifica di uno già esistente trovato in rete
Il mio problema è che il secondo motore anche se nel codice inserisco la prima rotazione di 180° (Step2Take=1024) e la seconda tornando a 0° (Step2Take=  -1024) quest'ultimo continua a ruotare in un unico senso.
Di seguito c'è lo sketch.
i componenti li ho provati singolarmente e non la causa dell'errore. 

Buongiorno e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.

Buonasera, innanzitutto ti chiedo di caricare il codice con l'apposito formato "CODE/" (nella barra in alto) e non come immagine, è più pratico e col tempo ci si fa l'abitudine.
Invece per dare un po' di consigli:

  • Inserisci il small_stepper1.setSpeed(100) e il small_stepper2.setSpeed(100) nel void setup(), schiarisce il codice, a meno che tu non necessiti di variare la loro velocità;
  • Non ho capito bene il problema, anche perché il codice gli dice che dovrebbe effettivamente cambiare senso di rotazione, proprio perché gli fornisci due valori opposti (1024 e -1024), nel caso ho notato che i cavi del secondo motore sono collegati in modo diverso rispetto a quelli del primo (9 e 10 andrebbero invertiti);
#include <Stepper.h>
#define STEPS 100
Stepper small_stepper1(STEPS, 2, 4, 3, 5);
Stepper small_stepper2(STEPS, 8, 9, 10, 11);
void setup{
  small_stepper1.setSpeed(100);
  small_stepper2.setSpeed(100);
}

void loop(){
  small_stepper1.step(-1650);
  delay(1000);
  small_stepper2.step(-1024);
  delay(1000);
  small_stepper1.step(1650);
  delay(1000);
  small_stepper1.step(-1650);
  delay(1000);
  small_stepper2.step(1024);
  delay(1000);
  small_stepper1.step(1650);
  delay(1000);
}

In teoria dovrebbe andare bene. Ho notato che hai posto STEPS a 100, ma per i motori 28byj-48 i passi per compiere una rivoluzione sono 2048.
Vedi se funziona,
Buona serata

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.