Cerca nel blog

venerdì 20 ottobre 2017

ARDUINO - Stepper Driver per Motori Passo-Passo - Conoscerli - Lezione 1

ARDUINO
Stepper Driver per Motori Passo-Passo
- Conoscerli -


Motori Passo-Passo, cosa sono ?

Il motore passo-passo spesso chiamato anche stepper è un motore elettrico sincrono in corrente continua pulsata con gestione elettronica senza spazzole (brushless) che può suddividere la propria rotazione in un grande numero di passi (step).È considerato la scelta ideale per tutte quelle applicazioni che richiedono precisione nello spostamento angolare e nella velocità di rotazione, quali la robotica, CNC, stampanti 3D, le montature dei telescopi ed i servomeccanismi in generale. 
A differenza di altri tipi di motore, come ad esempio il diffusissimo motore a corrente continua, il motore passo-passo non modifica la velocità di rotazione in funzione del carico, ma la mantiene costante. Se lo sforzo richiesto al motore supera la coppia massima erogabile il motore semplicemente si ferma.

Per ulteriori chiarimenti vi rimando alla guida MOTORI PASSO-PASSO


Stepper Driver , di cosa si tratta?

Gli stepper driver o pololu sono dei semplici encoder hardware in grado di controllare dettagliatamente i motori passo-passo, sia in ambito di assorbomento che di movimento.
Ovviamente devono essere controllati da una logica a monte, nel caso specifico mi riferirò ad Arduino data la sua semplicità e alla sua diffusione soprattutto in ambito hobbystico

Di stepper driver ne esistono parecchi anche perchè esistono diversi motori passo-passo.

In base all'assorbimento del motore si sceglierà il driver stepper più adatto.
Fatto restando che usando driver con carichi maggiori si potranno usare motori con basso assorbimento, è la scelta che prediligo anche perchè come vedremo i costi sono comunque ridicoli.

I motori passo passo si muovono diversamente dai normali motori elettrici, che girano molto velocemente, infatti si muovono lentamente (riescono anche a muoversi di un tot di gradi) ma sono più potenti e molto precisi.
La calibrazione che andremo ad attuare sui driver di questi motori è la Vref, questo termine significa “Voltage reference” (tensione di riferimento) , ed è la quantità di energia che gli stessi permettono al motore di sprigionare. 
Più preciso è questo valore e più sarà ottimizzato il movimento del motore, senza avere spreco di energia e surriscaldamento tipici di un valore troppo alto o perdita di passi tipica di un valore troppo basso.

Pololu o StepStick? 


Il problema sorge ogni volta che si parla di questi driver: che differenza c’è tra i Pololu e Stepstick? beh la questione è semplice, Pololu è l’azienda storica che produce queste schedine e la sua ideatrice, mentre per Stepstick si intende un prodotto compatibile fabbricato prevalentemente in Cina. Perciò se volete un prodotto affidabile e di ottima qualità vi consiglio caldamente di acquistare schede originali Pololu, mentre se non siete schizzinosi e nel caso non vi spaventate di fronte ad una scheda difettosa potete lanciarvi sugli Stepstick che comunque si trovano di diverse fatture.

Passiamo ad elencare quelli più conosciuti :


  • A4988
  • DRV8825
  • TMC2100 (se ne parlerà più avanti)



A4988


Il A4988 della Allegro è un Microstepping Bipolar Stepper Motor Driver (circuito integrato per il controllo di motori passo-passo); opera con una tensione operativa nel range 8V - 35V e fornisce fino a 2A per bobina se opportunamente dissipato.
Offrono  un microstepping fino a 1/16 di passo.
E' il più usato oltre ad essere il più economico.


Chip A4988
Schema di collegamento Arduino / A4988 / Motor Stepper

In giro per il web troverete una formula, la più gettonata..beh non usatela, non è corretta affatto. La formula dicui parlo è questa :


VREF = Corrente/2.5

Quindi , secondo questa formula, se ho un motore passo-passo con assorbimento 1.5A

VREF = 1.5/2.5 = 0,60v

La formula giusta è questa :

 Vref = Imax x (8 x Res ) - 30% 

Dove Amax è l'amperaggio del motore , 8 una costante, Res è il valore della resistenza del motore...guardate bene la foto qui sotto, controllate il valore della resistenza
Si toglie il 30% delal potenza per preservare il motore nel tempo, in modo tale che non sforzi eccessivamente..potete anche scendere ad un 20% se volete



Stepper Drivers A4988 (variante rossa)

Resistenze SMD con stampato il valroe 100
























Per conoscere il valore di questa resistenza SMD possiamo semplicemente usare questo calcolatore online CALCOLA IL VALORE IN OHM DI UNA RESISTENZA SMD

Si evince che il valore di queste resistenze è 10 Ohm






Quindi, tornando alla nostra formula...

 Vref = Imax x (8 x Res ) - 30% 

Vref = 1.5 x (8 x 0,10) = 1.2 - 30% = 0.84v

Come potete vedere la differenza si nota eccome..un 0.60V potrebbe farvi perdere dei passi, con un valore di 0.84v / 0.90v siete sicuri che il motore funzionerà in modo corretto

VREF = 1.5/2.5 = 0,60v



drv8825



Il DRV8825 opera con una tensione operativa nel range 8.2V - 45V e fornisce fino a 2.2A per bobina se opportunamente dissipato 0 1.5A non dissipato (non consigliato)
Costa qualcosa in più, è necessario modificare il codice Arduino se prima avevate montati gli stepper A4988, inoltre va montato nel verso contrario.
Riscalda più del A4988, consiglio vivamente di dissipare sempre.


Microstepper DRV8825

Schema di collegamento Arduino / DRV8825 / Motor Stepper


La formula per calcoalre la Vref è questa

VREF = (Corrente / 2 ) - 30% del carico

Se la applichiamo al nostro motore da 1.5A sarà

VREF = ( 1.5 / 2 ) - 30% = 75 - 22.5 = 0.52v

VREF = ( 1.5 / 2 ) - 20% = 75 - 15 = 0.60v

Diversamente dagli A4988 la formula non cambia ma è SEMPRE LA STESSA perchè i resistori di questo microstepper sono sempre da 10 Ohm (come da foto sotto)




Regolare i passi in base alle nostre esigenze

Negli schemi precedenti abbiamo visto come si collega un microstepper ad arduino, ora vedremo in che maniera far muovere il motore...

Nell’immagine che hai appena visto i PIN come MS1MS2MS3, ed ENABLE non sono connessi. Molto velocemente ti spiego a cosa servono.
I primi 3, ovvero MS1MS2MS3, decretano la risoluzione di rotazione del motore passo passo in base alla configurazione riportata in tabella:


LOW vuol dire circuito aperto (quindi non va connesso ai 5V)
HIGH vuol dire che va chiuso (quindi va connesso ai 5V)

Se usate arduino e basetta per mettere in HIGH uno di questi pin dovrete collegarlo ai 5V
Se usate arduino e basetta per mettere in LOW uno di questi pin non dovete collegarlo 

Se usate invece schede come RAMPS , Motor Shield, CNC Shiled etc.. allora

Chiudere il pin per mettere in HIGH
Lasciare aperto il pin per mettere in LOW
















































In alto si possono vedere i 3 connettori MS0 MS1 MS2 rispettivamente su scheda CNC SHIELD e RAMPS


Il pin ENABLE serve ad abilitare o disabilitare le uscite dei FET che pilotano il motore. Se impostato ad un valore alto, le uscite saranno disabilitate, ovvero il motore verrà rilasciato. Se impostato ad un valore logico basso, le uscite saranno attivate. Questo pin gestisce soltanto le uscite relative al motore. Indipendentemente dal suo stato, il resto dell’elettronica rimarrà attivo.Se vogliamo invece mettere a nanna il nostro driver e con esso tutta la sua elettronica, possiamo utilizzare il pin SLEEP. Impostandolo ad un valore logico basso, l’intera circuiteria (compresa quella dei FET) verrà messa a riposo, con conseguente risparmio energetico.


Nessun commento:

Posta un commento