Chiarimento libreria stepper.h e 28byj-48

Buonasera, avrei una domanda da farvi. Sto facendo prove con la libreria stepper e un motorino 28byj-48 comandato da una scheda preassemblata con un uln2003 (questa per intenderci Immagine) , e funziona tutto perfettamente.

Volevo sapere se è normale che quando il motore è fermo due fasi del motore restano accese? Per l'esattezza la A e la B. Non vorrei che questa cosa mi comporta un surriscaldamento eccessivo del motore oppure che si rovini prima del tempo.

Grazie per l'aiuto.

Si, con quella libreria due canali rimangono sempre attivi anche quando il motore risulta fermo. E' mantenuto in posizione. Operazione inutile visto gli ingranaggi di riduzione.
Puoi aggiungere del codice per portare a LOW tutti i pin quando il motore è fermo.
Parlo di quello stepper qui --> http://forum.arduino.cc/index.php?topic=232246.0 anche se il progetto è stato abbandonato.

Buongiorno Paolo, grazie per la delucidazione. appena ho un secondo guardo il link. Ieri sera avevo provato a settare a Low i Pin di uscita ed effettivamente questo discorso funziona, più che altro era per capire se la cosa fosse normale.

Grazie ancora e buona giornata!

Ne approfitto per farvi un'altra domanda, sarebbe possibile conoscere il numero di step che sono passati da quando ho avviato la marcia del motore?

Grazie ancora.

No. Non esiste nessun tipo di contatore interno.
Il motore stepper all'interno è fatto così:

L'unica cosa che si usura sono i cuscinetti a sfera. Ma durano probabilmente più di 100.000 ore.

Questa è l'interno del tuo modello.

La parte di sopra è il riduttore e sotto c'è lo stepper.

Qui è completamente smontato.

Si vedono gli avvolgimenti separati dalla plastica a le lamelle che fungono da poli per il rotore.

Molto interessante, grazie!

Quindi non posso neanche muovere diciamo "in manuale" lo stepper senza sapere a che valori mi trovo attualmente?

Per cercare di essere più chiaro, al momento uso lo stepper muovendolo di 512 steps, 0° - 90°. Se io tramite un joystick volessi muoverlo fino ad un valore non noto restando sempre nel range 0° - 90° non ho la possibilità di farlo?

Si che puoi, ma lo devi fare tramite software avanzando passo passo fino a che ricevi l'impulso del joystick.
Il giro completo è di 2037.8 passi, 90° sono 509.5 circa non 512. Ma è una inezia.

Mi piace essere preciso, modifico subito in 509 :wink:

Perdonami se faccio fatica a capire ma sono un novellino nel campo, grazie per la pazienza.

Quindi devo fare a meno della libreria stepper.h (pensavo avesse già qualcosa da utilizzare) e buttare giù il codice io per fare l'avanzamento, salvando il numero di steps in una variabile mano mano che aumento o dimunuisco?

Potrei avercela fatta facendo così:

void aperturaValvolaSuperiore() {  

    while (stepCountSuperiore < 509) {
      stepperSuperiore.step(1); 
      stepCountSuperiore ++;
    }

}



  void chiusuraValvolaSuperiore() {  
    
    while (stepCountSuperiore > 0) {
      stepperSuperiore.step(-1); 
      stepCountSuperiore --;
    }   

}

Non devi fare senza la libreria. Tu dici alla libreria quanti passi deve fare il motore percui devi Tu programmare il Sketch in modo che un contatore viene aggiornato ogni volta che muovi il motore.

Se vuoi che anche con motore spento e azionato a mano non perdi la posizione Ti serve un encoder incrementale che viene sempre letto oppure uno assoluto. per movimenti del motore non rotativi ma se si muove sempre avanti e indietro per un numero di passi costati puoi usare anche un potenziometro per leggere la posizione.

Ciao Uwe

void aperturaValvolaSuperiore() {  
   while (stepCountSuperiore < 509) {
     stepperSuperiore.step(1); 
     stepCountSuperiore ++;
     delay(1);
   }
}

void chiusuraValvolaSuperiore() {  
  while (stepCountSuperiore > 0) {
    stepperSuperiore.step(-1); 
    stepCountSuperiore --;
    delay(1);
  }   
}

Per il tipo di motore devi purtroppo introdurre un ritardo di un millisecondo tra uno step e l’altro, altrimenti perdi passi.
La velocità massima di rotazione è di 480rpm che si traducono in 15 rpm in uscita dal riduttore.
In questo modo purtroppo lo sketch rimane fermo mezzo secondo mentre muovi lo stepper.

Grazie a tutti per il prezioso aiuto, siete stati gentilissimi!

uwefed, alla fine ho fatto in modo di aumentare io un contatore, non dovendolo muovere a mano mi basterà fare in questo modo.

PaoloP, ok allora introduco un ritardo, tanto per il tipo di programma che sto facendo posso "permettermi" di avere un ritardo minimo un paio di volte al giorno, ho solo qualche millis che controllano delle azioni, ma parliamo di ore quindi il ritardo è insignificante.

Grazie ancora e buona serata!