Problema con le uscite

Salve a tutti, sto realizzando un progettino universitario, l'idea dietro è molto semplice, ho preso un motorino passo passo con driver e lo faccio girare, ho collegato un asse al motorino avente una estremità di carta argentata, il motorino strusciando collega 2 fili elettrici in maniera tale che venga inviato un input ad arduino.

Semplicemente ogni giro completo vorrei inviare ad arduino un segnale in maniera tale da calcolare la velocità angolare del motorino, allego anche un video.

Il problema che riscontro è che nel momento in cui il motorino tocca i contatti, dopo poco si ferma, come se arduino fosse in grado solamente di fare una cosa alla volta ( o fa girare il motorino oppure invia un messaggio del seriale) , penso ci sia un problema con le uscite digitali.

Nel video avevo scollegato i due contatti in maniera tale da mostrare la rotazione del motorino.

ALLEGO CODICE

#include <Stepper.h> 
// Define number of steps per rotation: 
const int stepsPerRevolution = 2000; 

// Wiring: 
// Pin 8 to IN1 on the ULN2003 driver 
// Pin 9 to IN2 on the ULN2003 driver 
// Pin 10 to IN3 on the ULN2003 driver 
// Pin 11 to IN4 on the ULN2003 driver 
// Create stepper object called 'myStepper', note the pin order: 
Stepper myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11); 
int INP = 7; 
int OUT = 5; 
void setup() { 

// Set the speed to 5 rpm: 

myStepper.setSpeed(5); 
pinMode(OUT,OUTPUT); 
pinMode(INP,INPUT); 
Serial.begin(9600); 
digitalWrite(5, HIGH); 
myStepper.step(stepsPerRevolution);
 // Begin Serial communication at a baud rate of 9600: 
Serial.begin(9600); } 

void loop() { 

if( digitalRead(INP) == HIGH) {
  Serial.println("ON");
}

}

Buongiorno in conformità al REGOLAMENTO , punto 7, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l’icona </> nella barra degli strumenti per contrassegnarla come codice. Grazie.

Come hai collegato i due cavetti rossi che vengono chiusi dal contatto strisciante che non si capisce dalle immagini?

Ma il motore si ferma proprio oppure rallenta molto, tipo di un fattore uno a cento?

Si ferma proprio, come se arduino potesse fare una cosa alla volta

Nei pin 5 e 7

Provvedo subito!

Ok, ora è chiaro.

Comunque quel motore stepper è poco più di un giocattolo, basta un niente per bloccarlo.
Io ti consiglio di modificare leggermente il sistema ed usare un sensore fotoelettrico al posto del contatto strisciante.

Capito, guarda devo dire che il motore si comporta bene, secondo me c'è proprio qualche problema nel coding, è possibile che io debba usare le uscite analogiche per effettuare il controllo?

Nel codice c'è qualcosa che posso fare per migliorare il tutto?

Non è che sia poi cosi complesso il codice... fa tutto la libreria in pratica.
Cosi su due piedi, l'unica miglioria che mi viene in mente è fare il Serial.println("ON") solo sul fronte di salita del segnale anche se non dovrebbe incidere poi molto sul risultato finale (la seriale è gestita via hardware, tutto quello che deve fare il codice è popolare il buffer relativo con i dati).

Ho riprovato ora, praticamente nel momento del contatto sulla seriale comincia a comparire ON all'infinito mentre il motorino si ferma, come se la seriale andasse all'infinito e quindi Arduino da priorità ad essa.

Prova a vedere se cambia qualcosa in questo modo

static bool risingEdge = false;
if( digitalRead(INP) == HIGH && !risingEdge ) {
  risingEdge = true;
  Serial.println("ON");
}

if( digitalRead(INP) == LOW && risingEdge ) {
  risingEdge = false;
}

Purtroppo no, stessa identica situazione

Come immaginavo, quindi il problema non è l'invio sulla seriale della stringa "ON".

Guardando meglio lo sketch, ma non manca qualcosa nel loop()?

Non conosco bene la libreria in questione, ma non dovrebbe esserci qualche istruzione di "stepping"?

E togliendo completamente La Stampa, sostituendola con l'accensione di un led, magari pin13

Come va?

A breve provo, però per il progetto ho necessariamente bisogno della stampa

Provo, grazie mille

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