Driver per stepper bipolare

Salve a tutti, avrei un problema relativo all'individuazione di un driver idoneo a pilotare tramite la mia scheda Arduino Uno il seguente stepper bipolare:

http://docs-europe.electrocomponents.com/webdocs/07e2/0900766b807e2896.pdf

La cosa che non riesco a capire è come fargli arrivare i 2,8 V di tensione di alimentazione previsti, visto che tutti i driver che ho preso in esame (L293, L298, SN754410NE) possono solo fornire tensioni di alimentazione in uscita più alte (a partire da 4,5 V mi pare) e non arrivano a gestire (almeno così credo) il valore di corrente di 1,68 A necessaria per il corretto funzionamento dello stepper e come prelevare eventualmente tale tensione dalla scheda visto che questa è fornita delle sole uscite a 3,3 e 5 V.
Per favore aiutatemi, grazie!!

Saluti
Leandro

Ciao Leandro,

Non devi tenere in considerazione il dato di targa del motore come valore di alimentazione per gli stepper.
Essi devono infatti essere pilotati tramite driver con tensioni da 10 a 20 volte quella di targa. (nel tuo caso da 28v fino a 56v)
Cercati un driver basato sull'accoppiata l297-l298 o su l6208 e fornisci l'alimentazione nel range che ti ho detto sopra (senaza superare il livello di tensione massima supportato dal driver!)con disponibilità di corrente necessaria e non avrai problemi.

Ciao Niki, ti ringrazio innanzitutto per la velocissima e precisa risposta!!

Quindi quello che mi suggerisci di fare è di alimentare il piedino dedicato dell'integrato con una tensione variabile all'interno del range indicato (28-56 V) tramite un alimentatore esterno in grado di fornire la necessaria corrente di alimentazione, giusto? Potrebbe andare bene secondo te un semplice l298 visto che non mi interessa avere anche il controller l297? Riuscirebbe a gestire le correnti in gioco? Sarebbero necessari anche degli altri componenti esterni?
Ci sarebbe un modo per sfruttare lo stesso alimentatore della scheda? Per esempio cos'è quel pin Vin presente nella sezione power della scheda, fornisce in uscita la stessa tensione fornita alla scheda forse? Anche se questa può arrivare a max 12 V, quindi forse sarebbe comunque insufficiente.

Io finora per le mie prove e per elaborare il programma necessario avevo utilizzato un minuscolo motorino a 5 V:

http://robocup.idi.ntnu.no/wiki/images/c/c6/PL15S020.pdf

recuperato da un lettore DVD collegandolo direttamente alle uscite digitali della scheda ma la corrente fornita in uscita dai pin digitali deve essere sicuramente insufficiente, perchè il carrellino se messo in verticale, non riesce neppure a salire mentre messo in orizzontale faceva esattamente tutto quello che gli comandavo di fare da programma.
Se in questo caso decidessi di utilizzare un SN754410NE per pilotarlo, viste le più limitate correnti in gioco, non basterebbe sfruttare l'uscita a 5 V presente sulla scheda, che non dovrebbe presentare limitazioni di corrente come ho visto fare in giro su alcuni tutorial o sarebbe secondo te comunque sempre necessario utilizzare un alimentatore esterno essendo la tensione corrispondente a quella di targa e quindi forse insufficiente?
Scusatemi per le tante domande ma è la prima volta che mi cimento con dei motorini passo passo...

leandro78:
Potrebbe andare bene secondo te un semplice l298 visto che non mi interessa avere anche il controller l297? Riuscirebbe a gestire le correnti in gioco? Sarebbero necessari anche degli altri componenti esterni?

Gli stepper si controllano in corrente e non in tensione, la tensione nominale del data sheet è quella necessaria per far scorrere 1.68A quando il motore è fermo, quando gira entra in gioco la f.c.e.m. che si va sottrarre alla tensione di alimentazione rendendo necessario un valore maggiore per consentire di mantenere la corrente costante.
C'è pure il fatto che per mantenere costante la corrente sulle fasi il modo più semplice è utilizzare il chopped mode, una specie di switching che sfrutta l'induttanza delle fasi, ed è bene che la tensione sia molto maggiore di quella realmente necessaria per velocizzare la risposta.
Non puoi usare solo il 298, ti serve anche un generatore di corrente costante e questo lo ottieni tramite l'accoppiata L297+L298, che ti semplifica pure il controllo del motore visto che ti servono solo due pin di Arduino, DIR e STEP, dato che genera lui le corrette sequenze per le fasi sia come full step che half step.
L'alternativa è utilizzare un IC stepper driver recente che al suo interno integra sia la parte di potenza che il generatore a corrente costante e il sequencer delle fasi, però questi IC non sono facilmente reperibili sfusi e sono esclusivamente in formato SMD, quindi non utilizzabili facilmente senza un apposito pcb a differenza del 297 + 298 che monti pure su una millefori.
Attenzione che con le correnti in gioco il 298 diventa molto caldo, è indispensabile un generoso dissipatore termico, meglio se ventilato.

niki77:
Ciao Leandro,

Non devi tenere in considerazione il dato di targa del motore come valore di alimentazione per gli stepper.
Essi devono infatti essere pilotati tramite driver con tensioni da 10 a 20 volte quella di targa. (nel tuo caso da 28v fino a 56v)
Cercati un driver basato sull'accoppiata l297-l298 o su l6208 e fornisci l'alimentazione nel range che ti ho detto sopra (senaza superare il livello di tensione massima supportato dal driver!)con disponibilità di corrente necessaria e non avrai problemi.

Scusami niki, stai facendo un po di confusione.

I motori passo passo si possono pilotare in tensione o in corrente.
Se si pilota in tensione devi dargli la tensione nominale. Vantaggio: semplicitá del circuito di pilotaggio, svantaggio: a velocitá alte l' induttanza del motore limita tanto la corrente e percui il motore ha molto meno coppia.

Se si pilota in corrente si da la corrente nominale perche l'elettronica di pilotaggio limita la corrente. La tensione deve essere molto piú alta di quella nominale (ca 4 volte) perché il pilotaggio possa dare la corrente impostata.

Gli integrati idonei per il Tuo motore sono la combinazione L297 e L298 (non il L298 da solo) oppure il L297 con un altro integrato a doppio ponte H.

Il A4983 e il A4988 possono pilotare il motore. Questi due sono presenti su Stepper Driver della Pololu oppure sul Big Easy Driver.
Devi tarare la corrente a 1.68A per fase e alimentare il driver con ca 12V. Questi integrati possono pilotare il motore in micropassi e percui aumentare il numero di passi e diminuire il rumore e le vibrazioni del motore.

Ti sconsiglio vivamente di collegare qualsiasi motore indipendentemente dal tipo direttamente sulle uscite di Arduino. Rischi di romperlo.

Ciao Uwe

uwefed:
I motori passo passo si possono pilotare in tensione o in corrente.

I passo passo si controllano esclusivamente in corrente, se vuoi farli funzionare bene, se li mandi a tensione fissa ti ritrovi con assorbimenti esagerati quando sono fermi, o girano lentamente, e con coppia molto bassa, più l'impossibilità di raggiungere la velocità massima di targa, quando girano veloci.
In realtà si potrebbero controllare anche in tensione utilizzando un generatore variabile, meno tensione quando sono fermi e di più quando girano, però è esattamente quello che fa il generatore a corrente costante quindi si fa prima ad utilizzare questo :slight_smile:

uwefed:
Scusami niki, stai facendo un po di confusione.

Sei sicuro che sono io ad aver fatto confusione ? :grin:

Comunque io mi riferivo al gruppo driver-motore, e non al singolo motore.
Come si piloti correttamente un motore stepper direttamente lunge dai miei più fantasiosi pensieri visto che ci sono già tanti bei driver fatti apposta per pilotarli :wink:
Al limite giusto per scrupolo, so cosa fà il driver,ma niente di tanto approfondito !

E come puoi leggere sopra infatti ho consigliato di utilizzare un driver bello che fatto con la coppia 297+298 in maniera tale da semplificare al massimo le operazioni!

Per chi vuole approfondire l'argomento controllo stepper consiglio la lettura della Application Note AN1307 di Microchip dove viene illustrata bene anche la parte teorica del controllo e come diventa possibile attuarlo in modo più che ottimale tramite una mcu di fascia media, un dsPIC33, e un ponte H, è disponibile anche il sorgente del codice.
Da notare che l'implementazione del controllo corrente avviene tramite un pid e non con il semplice chopped mode, facile da implementare, ma meno efficiente del pid.

Ulteriori cenni teorici generici li trovate qui.

astrobeed:

leandro78:
Potrebbe andare bene secondo te un semplice l298 visto che non mi interessa avere anche il controller l297? Riuscirebbe a gestire le correnti in gioco? Sarebbero necessari anche degli altri componenti esterni?

Gli stepper si controllano in corrente e non in tensione, la tensione nominale del data sheet è quella necessaria per far scorrere 1.68A quando il motore è fermo, quando gira entra in gioco la f.c.e.m. che si va sottrarre alla tensione di alimentazione rendendo necessario un valore maggiore per consentire di mantenere la corrente costante.
C'è pure il fatto che per mantenere costante la corrente sulle fasi il modo più semplice è utilizzare il chopped mode, una specie di switching che sfrutta l'induttanza delle fasi, ed è bene che la tensione sia molto maggiore di quella realmente necessaria per velocizzare la risposta.
Non puoi usare solo il 298, ti serve anche un generatore di corrente costante e questo lo ottieni tramite l'accoppiata L297+L298, che ti semplifica pure il controllo del motore visto che ti servono solo due pin di Arduino, DIR e STEP, dato che genera lui le corrette sequenze per le fasi sia come full step che half step.
L'alternativa è utilizzare un IC stepper driver recente che al suo interno integra sia la parte di potenza che il generatore a corrente costante e il sequencer delle fasi, però questi IC non sono facilmente reperibili sfusi e sono esclusivamente in formato SMD, quindi non utilizzabili facilmente senza un apposito pcb a differenza del 297 + 298 che monti pure su una millefori.
Attenzione che con le correnti in gioco il 298 diventa molto caldo, è indispensabile un generoso dissipatore termico, meglio se ventilato.

Astrobeed
I motori si pilotano anche in tensione; per esempio quando usi un solo L293 o L298 o un Motore unipolare con 4 transistori o con un ULN2803.
Certi motori passo passo non riesci a pilotarli in correnete perché hanno una resistenza del avvolgimanto troppo grande (per esempio http://www.watterott.com/index.php?page=product&x56795=87c362b1154a18e6e71bb7c35105e40a&info=845 34 Ohm e 330 mA e 12V)

Concordo con Te che un pilotaggo in corrente ha diversi vantaggi e con i Driver moderni é molto semplice realizzarlo e costano poco percui preferibile.

Ciao Uwe

uwefed:
I motori si pilotano anche in tensione; per esempio quando usi un solo L293 o L298 o un Motore unipolare con 4 transistori o con un ULN2803.

Che lo fanno è un conto, che è corretto è un altro conto, sul fatto che gli stepper vanno pilotati a corrente costante, se si vuole ottenere le prestazioni di targa, non ci piove sopra, qualunque testo relativo agli azionamenti dei motori dice questa cosa e ci sono anche le relative dimostrazioni matematiche.
E' un po come la storia dei 29x col pwm applicato sul'enable, è vero funziona lo stesso però perdi un buon 50% di efficienza, il fatto che molti lo fanno, incluse delle shield per Arduino, non significa che sia corretto, significa che chi ha fatto il progetto non ha studiato a sufficienza il componente.

Io uso questo, consigliatomi da uwe ed è facilmente pilotabile. Questo in particolare permette il microstepping quindi oltre a poter compiere un passo alla volta ne puoi fare addirittura 1/16 ! Sembra una cavolata superflua ma giocando con il codice puoi fare di tutto essendo il movimento veramente fluido!

Per quanto riguarda la parte software hai bisogno di due pin: uno che sarà alto o basso a seconda della direzione che vuoi dare allo stepper, con l'altro pin ad ogni impulso compi uno step!