Vi propongo un altro approfondimento in quello che pare stia diventando qualcosa di più definito di qualche articolo scritto nella noia di queste giornate #grigiopiovose
Motori stepper, in Italiano motori passo-passo, sono motori elettrici in grado di suddividere una rivoluzione in passi permettendo ad un pilota (driver) di controllarne la posizione. Di norma disponibili in 200 o 400 passi in grado quindi di ruotare rispettivamente in passi da 1.8° e 0.9°, di tipo bipolare o Ibrido bipolare e disponibile in diverse grandezza di norma in accordo allo standard NEMA. Si possono trovare motori con diversi voltaggi e coppie, spesso scelti proprio per quest’ultima. Le caratteristiche che spesso vengono elencate non hanno nessun valore reale, chi li sceglie non ha le nozioni per valutarle e finisce per farsi consigliare da chi comunque ne sa al pari, se non meno, di loro.
In un certo senso possiamo pensare ai passi come ai segmenti che formano una ruota, maggiore è il numero più fluido sarà il rotolamento; spesso, la determinata risoluzione fisica non è sufficiente per garantire questa fluidità considerando che non nasce per essere fluido, ma per fare controllo di posizione in catena aperta, cioà senza feedback. La commutazione di una bobina di un motore passo passo in modalità “passo completo” provoca il salto del motore da una posizione di fase a quella successiva, con conseguente sovraccarico, ondulazione di coppia e vibrazioni. Inoltre, vogliamo aumentare la risoluzione di un motore passo-passo per un posizionamento più preciso. I moderni driver a motori passo-passo utilizzano il microstepping, una tecnica di pilotaggio del motore che utilizza un numero variabile di microsteps in ogni singola fase “passo” di un motore passo-passo, riducendo notevolmente le vibrazioni e si suppone aumenti la risoluzione e l’accuratezza.
Se da un lato l’uso di microsteps genera veri passi che un motore può eseguire fisicamente, anche sotto carico, dall’altro di solito non aggiungono la precisione di posizionamento che ci si aspetterebbe. Il Microstepping causa confusione. Questo articolo vorrebbe cercare di chiarire alcuni aspetti importanti. Basato su un più corposo articolo in inglese di cui consiglio, a chi può, la lettura.
Cos’è’ il microstep?
In un motore passo-passo (bipolare,ibrido-bipolare), utilizzato con un driver motore avente micro-regolazione attivata, il driver regola la corrente nelle bobine dello statore per posizionare il rotore del magnete permanente in una posizione intermedia tra due passi completi consecutivi. Un passo completo viene quindi suddiviso in un certo numero di microsteps, e ogni microstep è ottenuto da ambedue le correnti di bobina. Quindi in un motore con 200 passi completi ed un divisore microstepping di 1/16 avremmo 51200 passi per rivoluzione.
In pratica, abbiamo a che fare con driver a circuito aperto, il che significa che il driver del motore non conosce l’esatta posizione angolare dell’albero motore e non può correggerne le deviazioni. L’attrito, la coppia di arresto del motore e, in modo più sorprendente, il carico esterno che agisce sul rotore non verrà rilevato dal Driver. Senza chiudere il ciclo attraverso un encoder o uno speciale e ben più sofisticato driver (“rispetto agli stepstick”, NdR) , il meglio che possiamo supporre è che il motore sarà da qualche parte ± 2 passi completi (sì, molto male) vicino alla sua posizione di destinazione, che è la massima deflessione prima che il rotore scatti nella posizione “passo-completo” errata, con conseguente perdita di passi.
Dobbiamo quindi parlare di Torque(momento torcente o coppia) incrementale, per farlo ci viene in aiuto una cosa chiamata Trigonometria, ringraziando MICROMO per la fantastica Whitepaper (anche perché va oltre le mie competenze personali) possiamo calcolare il reale momento torcente in percentuale rispetto alla condizione di coppia massima nominale dichiarata (ed improbabile, NdR) di full-step, no load (quindi senza microstepping e senza alcun carico sull’albero).
Per assicurare che l’albero motore sia effettivamente impostato entro +/- 1 microstep, dobbiamo anche ridurre di conseguenza il carico. L’eccedenza di questa minore coppia incrementale non comporta una perdita di passi, ma causerà lo stesso errore di posizionamento assoluto fino a ± 2 passi completi. La seguente tabella mostra la devastante relazione fra microstep e torque.
Microsteps per full-step | Coppia di tenuta incrementale per microstep |
1 | 100% |
2 | 70,71% |
4 | 38,27% |
8 | 19,51% |
16 | 9,80% |
32 | 4,91% |
64 | 2,45% |
128 | 1,23% |
256 | 0,61% |
Fonte:MICROMO Motion Control Technical Library / Stepper Motor Tutorials & Whitepapers / Microstepping: Myths And Realities
La buona notizia è che: finché usiamo un motore abbastanza “forte”, a patto di non superare il valore di coppia incrementale sia attraverso un carico esterno che l’inerzia interna del motore, l’unico limite teorico per ottenere la precisione di posizionamento microstep è l’attrito interno del motore e la coppia di arresto. Questi valori dipendono fortemente dal tipo di motore, ma sono generalmente valori piuttosto bassi (quasi trascurabili). Ad esempio, un motore con 4kg/cm di coppia impostato a 1/16 dovrà lavorare con carichi non superiori ai 0,2Kg/cm che è solo il 5% del valore dichiarato dal produttore.
Nell’articolo originale, di cui non riporto i contenuti perché vanno al di là dello scopo di questo scritto, mostrano la realtà. Riporto alcuni dati per meglio argomentare l’ultimo paragrafo. Nel test, come si vede nella figura sotto, hanno indirizzato un laser contro uno specchio montato sull’albero che a sua volta si trova a 45° rispetto al piano , con un braccio ed un gancio a cui attaccare (come spiegano meglio nell’articolo) il peso di volta in volta necessario a caricare il motore al suo limite di coppia incrementale così da prevenire una perdita di steps. I risultati non lasciano dubbi…
L’autore ha calcolato il momento angolare del motore in funzione della deviazione misurata sul righello a muro, funzione arctan(dy/dx)/2 e le deviazioni calcolate a 1/16 vedono deviazioni molto importanti rispetto alla posizione ideale. Purtroppo dato il volume dei dati dell’articolo riprodurlo per questo non è possibile, invito tutti a leggerlo; anche con la traduzione di Google si puo’ capire tranquillamente il significato e almeno daremo credito a chi si è impegnato per questa lunga prova.
Torniamo ora allo scopo di questi articoli: l’applicazione di tutto ciò sul mercato.
Vien da sé, ora che spero abbiate compreso cosa sia e come lavora la tecnica dei micropassi, capire che sapere quanta coppia un motore abbia è solo una delle cose da ricercare. Sfortunatamente non sempre sono disponibili informazioni come curva di torque al variare dei giri o dei pulse per second. Quindi come vado ripetendo omettere informazioni non e’ certo sinonimo di professionalità, esistono aziende molto più serie a cui rivolgersi, nella ricerca di un componente che vado oltre il motorino cinese da 5 euro (in italia da segnalare RTA s.r.l. che produce su mandato anche di Sanyo Denki, ma consiglio vivamente di usare i loro driver). Prima di concludere devo aprire una parentesi riguardante un produttore di driver, in quanto al tempo della stesura dell’articolo non era ancora disponibile al mercato.
Sto parlando della TRINAMIC e dei suoi driver serie 2xxx. Questo produttore circa un paio di anni fa ha presentato una serie di driver (con più o meno caratteristiche e modalità operative) che utilizza una tecnica proprietaria (microPlyer™) per cercare di ridurre ulteriormente il rumore, tecnica che però non era inizialmente pensata per le stampanti 3D. Nello specifico ma senza dilungarsi troppo la loro tecnica permette di, una volta selezionato il divisore e solo per certe impostazioni, suddividere il già impreciso e poco prestante microstep per 256 sub-microstep totalmente gestiti dal driver. Risultato, un ulteriore perdita di coppia al motore e l’impossibilità (nella modalità più silenziosa stealthChop™) di ottenere valori di accelerazione superiori a 800-1000mm/s², pena la possibilità nemmeno troppo remota di perdere passi per mancanza di momento torcente. Per le stampanti la trinamic consiglia 1/4 in modalità spreadCycle™ che permette cambi più’ rapidi e accelerazioni maggiori, ma resta un metodo che va comunque ad aggiungere imprecisione al processo di stampa (ricordate quanto detto sull’accuratezza di usare un campo in stallo fra due pieni? qui siamo a 200*(16*256)= 819200 “posizioni” per rivoluzione, 200 gestibili in full step o multipli per divisore microstep come ogni driver, ma gli altri sono stati non gestibili (fra campi magnetici già precari e SENZA poter controllare il risultato).
Sempre trinamic produce una versione di driver chiamata 2130 (nella versione stepstick) che è di fatto una cpu programmabile che attraverso analisi delle correnti consente di avere un feedback parziale sul comportamento dal motore in modo da adattare impostazioni come modalità operativa, decay, vref ecc.. alle condizioni di stampa; lavorano su bus seriale sul quale si possono dirottare anche step/dir/en rendendo inutile lo zoccolo pololu. La nuova prusa usa questi driver per intercettare le condizioni classiche di una perdita di passi potendo così fermare la stampa e, dopo aver azzerato (homeXY) la testina, ritornare a stampare dove poco prima si era sperimentata la perdita di passi. Ma resta una tecnica “intuitiva” a differenza dei motori con encoder magnetico/ottico su coi probabilmente farò un articolo dedicato.
Chiudo la parentesi e passo ad un altro dettaglio, quelli che in inglese sono chiamati “PPS-pulse per second”. Non sono altro che il numero di impulsi che il driver dovrà spedire al motore per ottenere il risultato che vogliamo, ricordatevi che il motore ad ogni cambiamento di stato necessita di un “pulse” differente. Quindi se devo muovermi per 100 steps in full step avrò 100 impulsi, a 1/2 200 impulsi a 1/4 400impulsi e cosi via vino ad aver bisogno di 1,6Kpulse(3200microstep per rotazione, 100full step mezza rotazione, 1600microstep, ogni microstep 1 pulse) per mezza rotazione che con (esempio) pulegge da 20 denti sono poco piu’ di 1 mm di movimento. Si vuole stampare a 100mm/s (ignorando per un attimo l’accelerazione) ciò significa che (arrotondando) il motore dovrà fare 50 giri al secondo.
Se per 1mm mi servono 80 microstep(200 per rev. a 1/16), per 100mm mi servono 8000microstep che si traducono in 8kpulse (8kHz) al secondo. Sempre arrotondando ma sarebbero un filino di più.
Aggiungo che questi comandi sono calcolati dalla CPU della board, che per le 8bit (conti alla mano, Marlin/Repetier on ATmega 16 MHz (e.g. RAMPS) in single-stepping: <10.000 steps/second (10 kHz)(fonte reprap wiki) si fermano molto prima di quanto si pensi. Oltre certe velocità si assiste infatti ad un fenomeno molto chiaro, la stampante si ferma, aspettando i dati in uscita dalla CPU e poi riprende fino al successivo fermo per mancanza di istruzioni, ovviamente non parliamo di fermi di qualche secondo ma di qualche millisecondo ma tanto basta per far “balbettare” la testina di stampa creando antiestetici segni sui perimetri esterni, quindi avere troppi pulse per second da generare arriva ai limiti di generazione dell’ATmega2560 che è anche chiamata ad eseguire tutto il codice del firmware per la gestione di ogni aspetto della stampante. Spesso chi pensa di stampare a 150mm/s lo fa a molto meno, se per esempio ci fossero delle circonferenze la testina dovrebbe accelerare e decelerale ad ogni segmento stampato, quindi su tratte così brevi non e’ possibile nemmeno raggiungere i 50mm/s. Purtroppo NON SI PUÒ esprimere una velocità cubica con un valore lineare, sarebbe più interessante iniziare a ragionare i mm3 al secondo. Per approfondire i limiti delle schede 8 bit vi consiglio questo video di Tech2C che tratta molto bene l’argomento velocità. Per il discorso velocità se volete capire quanto serva in termini di spazio per raggiungere una data velocità c’è un post sul forum RepRap sezione italia che tratta proprio velocità, accelerazioni e jerk.
Di fianco, il grafico per un motore sanyo denki da 50€ +iva che mostra, come ogni produttore serio, il decadere della coppia anche solo in funzione del numero di pulse per second (rpm equivalenti) che riceve quindi altra perdita di coppia non imputabile al microstepping in modo diretto ma quale conseguenza di esso sulla tecnologia dei motori passo passo. Anche i motori hanno dei limiti, che se superati rendono la precisione un ricordo molto lontano.
Se ad esempio cercassi le stesse informazione per dei… non so…wantai? o altro motore cinese, ecco che le uniche info sono uno standard +-5% e circa il 20% su resistenza ed impedenza… voltaggio..amperaggio… ma i dati tecnici del motore non potrei mai reperirli perché nemmeno a loro interessa.
Conclusioni
Come abbiamo avuto modo di appurare, ciò che si nasconde dietro la parola microstepping è solo un metodo economico e di marketing per rendere utili motori a bassissima risoluzione, basti pensare che quelli realmente ad alta definizione fanno 6400 steps in full-step quindi 1/1 contro i 200 o 400 dei motori attuali. Senza microstepping i motori a bassa risoluzione sarebbero imprecisi, nervosi e dannatamente rumorosi, quindi non conta che motori montino le stampanti economiche che state valutando, non avrete dati a sufficienza per compararli e saranno comunque tutti altamente imprecisi rispetto alle risoluzioni che i produttori rifilano al mercato che è tutto fuorché consapevole. Ovvio che come tutte le cose ad alta precisione costano, un motore da 6400 full steps parte da 250$ ma richiederebbe una diversa gestione dei movimenti. Questo non significa che i motori economici non siano sufficienti alle esigenze degli utenti ma, come mi piace ricordare, spetta al consumatore decidere e per farlo deve conoscere; i produttori che spesso decantano migliore qualità, rispetto altri, perché usano cuscinetti tedeschi dovrebbero prestare la stessa cura anche al resto mentre in giro vedo solo e sempre le stesse cose. Quindi se sei alla ricerca di un salto di qualità inizia col prendere in considerazione solo quelli che ti permettono di avere tutte le informazioni indispensabili per fare una scelta; se non sapete interpretarli sarà comunque facile chiedere su internet o, perché no, ampliare il proprio bagaglio di conoscenza.
C’è qualcosa che non mi torna sul calcolo delle pulsazioni, tu dici 1 mm di traslazione 1/2 giro con z=20, quindi per fare 100 mm/sec servono 50 giri/sec; fino a qui ok ma se ha un motore con 1/16 vuol dire che devi fare (16*200=3200 microstep/giro), 3200*50=160000 microstep quindi 160 Kpulse, sbaglio qualcosa ?