Stepper motor - corrente negli avvolgimenti

Ciao ,

Sono qui che continuo a giocare con il mio motorino stepper.
Sempre senza nulla pretendere, vi chiedo se avete esperienza in merito.

Il motorino si muove con tutti i gradi che voglio ma ho notato che sul cambiamento di direzione o avvolte su alcune partenze “perde i passi”.

Succede di meno quando lo comando per fargli fare continui movimenti a 0 a 180° , avanti e indietro.

Quando l’angolo invece scende a 10 -20° a parita di velocità, può perdere passi solo all’inizio o durante. La soluzione che empiracamente ho trovato è aumentare il delay di ogni passo.

Googlando ho trovato il documento della ST che allego e dove ho evidenziato la parte su cui si basa la mia domanda.

L’allegato sembra descrivere il mio problema.
Quello che ho capito è che sul cambiamento di direzione , la corrente negli avvolgimenti non fa in tempo a raggiunere il suo massimo perdendo quindi potenza e forse i passi.
L’allegato propone di aumentare la tensione di alimentazione e limitare però la corrente con dei resistori sulle fasi opportunamente dimensionati.
La seconda soluzione è utilizzare una regolazione di corrente sulle fasi ma è necessario un feedback.

Tutta questa pappardella per dire che ho provato invece con il codice a variare con una rampa il delay di ogni step , rendendolo massimo all’inizio per poi scendere fino al valore considerato minimo.
Questo per permettere alla corrente di salire senza però pregiudicare la velocità del motorino.

Per ora è una prova empirica ,senza oscilloscopio . Secondo voi è una strada fattibile oppure sto prendendo una cantonata ?:slight_smile:

Grazie mille ,ciao

ST_Stepper driver.pdf (139 KB)

Non é proprio cosí.

1) per arrivare a una certa velocitá devi acelerare le masse che ruotano. Se le masse sono troppo grandi non puoi partire con la velocitá voluta me devi incominciare con una velocitá lenta che aumenti finche arrivi allal velocitá desiderata (rampa di acelerazione) la stessa cosa vale per frenare.

parliamo di un pilotaggio del motore in tensione (applichi all'avvolgimento delle tensioni costanti) 2) Il momento (forza) che il motore riesce a dare sull asse dipende dalla corrente. La corrente non dipende solo dalla tensione applicata e dalla resistenza del avvolgimento ma anche dall'induttanza. Un induttanza fa cambiare lentamente la corrente come un condensatore fa cambiare lentamente la tensione. Se piloti il motore a frequenze alte sará l'induttanza a limitare la corrente e percui la forza del motore. Per questo la forza del motore si abbassa col aumento delle frequenza/giri. https://it.wikipedia.org/wiki/Induttanza

Passiamo al pilotaggio in corrente: Per ovviare questo problema si puó pilotare il motore in corrente. Non si usano per questo dei alimentatori a corrente costante ma sio misura la corrnete del avvolgimento con una resistenza tra ponte H e massa e se quella supera il valore desiderato allora ci si spegne il Ponte H per riaccenderlo dopo un po di tempo. Questo metodo si chiama regolazione chopper. Per riusire meglio a limitare la corrente si alimenta il motore con una tensione molto piú alta di quella nominale ( ca 4 volte). La combinazione L297 L298 fa questo: |500x378 Attraverso RS1 e RS2 circola la corrente dei 2 avvolgimenti del motore. La tensione di questi 2 resistenze viene confrontata nel L297 con un comparatore con una tensione di riferimento Vref. Se la tensione é maggiore della Vref l' uscita INH1 / INH2 spengono il rispettivo ponte H. cosí la corrnete non sale piú. Per usare il pilotaggio in corrente il motore deve avere una tensione nominale abbastanza bassa ( normalmente sotto i 5V) per riuscire a poterlo aliemntare con tensioni piú alte senza rompere i circuiti di pilotaggio che reggono 30-40V.

Passo succesivo: Microstepping: Se si da a un avvolgimento 50% della corente e anche all altro allora il rotore si posizionerá in mezzo alla posizione quando viene data corrente solo all uno o l'altro avvolgimento. cambiando questo rapporto in passi piú fini si riese a avere piú passi intermedi ( 4, 8, 16 ) Intergati che fanno questo sono per esempio il A4988 e simili usati per il pilotaggio dei motori nelle stampanti 3D.

Ciao Uwe

Grazie uwefed :D per la lunga risposta, credo di aver capito , proverò per ora con le rampe per la partenza e lo stop del motorino.

Potresti usare la libreria AccelStepper

http://www.airspayce.com/mikem/arduino/AccelStepper/

Grüße Uwe

Ciao , Ho fatto un paio di prove con la libreria accelStepper , funziona tutto

EDIT: situazione aggiornata. Grazie