I motori passo passo sono diventati indispensabili nella progettazione delle moderne apparecchiature elettromeccaniche. Si possono trovare ovunque, dalle stampanti 3D agli hard disk e ai robot. Nonostante la loro popolarità, i motori stepper hanno anche un lato oscuro, compreso il loro comportamento risonante e la scarsa efficienza. Questo articolo mostrerà come si possono combattere tali problemi, aumentandone l'efficienza e diminuendo le instabilità.
Introduzione
I motori passo passo sono disponibili in tutte le misure, offrendo un'ampia gamma di passo, di frequenze e di profilo fisico, per adattarsi a ogni applicazione. I motori passo passo ibridi sono sempre più utilizzati nelle stampanti 3D, per fornire movimenti lineari utilizzando i mandrini. Spesso operano in condizioni non ottimali, ad esempio ad alte frequenze e bassi carichi, dove gli effetti della risonanza meccanica e delle vibrazioni sono più evidenti che mai. Per ottenere un funzionamento ottimizzato del motore passo passo ed, eventualmente, contrastare tali problemi, è importante tenere conto di questi fenomeni. Questo progetto ha lo scopo di realizzare un controller dedicato al motore stepper per il Raspberry Pi che combina avanzate tecniche di anti-risonanza e di pilotaggio, assieme a uno stadio di potenza.
Risonanza
Per i motori passo passo, viene fatta una distinzione tra auto-risonanza e instabilità parametrica. Le auto-risonanze si verificano a frequenze comprese tra 1 e 300 Hz e possono essere controllate mediante contromisure meccaniche (cambio degli ingranaggi, smorzamento, ecc). Operando in questo intervallo, un motore passo passo non supera, in genere, un rendimento del 10%. Sopra i 300 Hz (o passi al secondo) la risonanza parametrica si presenta in alcune bande di frequenza. Le oscillazioni della rotazione del rotore danno luogo a un comportamento risonante (vedi figura 1).
Tali vibrazioni possono accumularsi e raggiungere importanti ampiezze a causa della risonanza, rendendo così il rotore non più sincronizzato con la frequenza di controllo; esso può perdere passi e alla fine fermarsi. Senza adeguate contromisure, la soluzione è quella di far funzionare il motore con una corrente al di sotto del suo valore massimo, in modo che non sia possibile sfruttare l'intera potenza (vedi figura 2).
La linea continua in figura 3 mostra la coppia ideale sulla frequenza operativa e la linea tratteggiata mostra sia la coppia che la frequenza di controllo, senza contromisure. Essa rimane troppo al di sotto di certi limiti.
Una soluzione
È possibile neutralizzare le risonanze medie usando un circuito di feedback. Per misurare i fenomeni di risonanza è possibile intercettare i segnali prodotti dalle oscillazioni, utilizzando un resistore shunt (la caduta di tensione prodotta è proporzionale alla corrente attraverso l'avvolgimento del rotore). La figura 4 illustra le ideali relazioni di fase del rotore e i segnali di controllo.
La figura 5 mostra il principio di una possibile contromisura, sviluppata e descritta nel 1986 da Pierre Boillat [1], il cui brevetto, nel frattempo, è scaduto. Per i motori passo passo più piccoli le oscillazioni si verificano tipicamente nell'intervallo da 5 a 80 Hz. Dopo aver filtrato e amplificato il segnale shunt, esso viene utilizzato per controllare un modulatore di fase dell'impulso. Il segnale di uscita CLK-PM controlla l'ingresso del sequencer dello stadio del motore con un rapporto di fase corretto. Un tale modulatore può essere utilizzato se il generatore di clock attuale (di solito un microcontrollore) non è in grado o non è progettato per eseguire il processo di modulazione di fase. Utilizzando questo approccio hardware è possibile ottenere velocità di passo molto elevate, fino a 15000 passi/s, il che consente, anche al motore passo passo, di funzionare con maggiore efficienza. Un altro vantaggio di questo approccio è che non è necessario rispettare rampe di accelerazione per pilotare il motore attraverso la regione d'instabilità. Vale la pena ricordare che questo metodo di stabilizzazione non è collegato ai regolatori di potenza chopper che a volte si trovano integrati in alcuni chip driver stepper disponibili oggi.
Il circuito anti-risonanza
Come dimostrazione pratica del principio, è stato sviluppato il circuito in figura 6. Il PCB ha la forma di una scheda di espansione (HAT) che si collega al Raspberry Pi A+. Il segnale di clock proveniente da un microcontrollore esterno è collegato a CLK-IN al pin 3 della morsettiera a vite X2. Il segnale è squadrato con uno degli inverter di Schmitt di IC7 e attiva IC3A sui fronti negativi. Il segnale di uscita di IC3A su Q è costituito da una serie d'impulsi con larghezza costante di circa 30 us.
Questi impulsi servono per scaricare il condensatore C2 tramite il MOSFET T2 del convertitore a onda quadra o dente di sega, costruito con IC1A, T1, T2 e T3. La sorgente di corrente costante, costituita da T1, fa sì che C2 venga caricato al suo valore massimo (dopo il suo scaricamento tramite T2) producendo una forma d'onda a rampa di tensione lineare crescente. Il risultato è un segnale di sega abbastanza pulito sull'ingresso positivo (pin 3) del comparatore IC2A. Insieme al segnale di modulazione U', all'ingresso negativo (pin 2) si possono vedere gli impulsi in uscita (pin 1) con la modulazione di fase (lineare) desiderata. Per garantire un'ampia gamma di frequenze, l'ampiezza del dente di sega deve essere indipendente dalla frequenza. Per ottenere ciò, la sorgente di corrente formata da T1 è controllata tramite IC1A. L'ampiezza viene mantenuta costante utilizzando il valore medio (componente DC) del dente di sega riportando il segnale a T3 e filtrando tramite passa basso con R7 e C1, per fornire una tensione di retroazione applicata all'ingresso invertente di IC1A. Il segnale di uscita viene quindi alimentato tramite D1 per controllare il generatore di corrente.
Con uno sweep molto rapido (da 0 Hz a 4 kHz in soli 200 ms), il loop di controllo è troppo lento a causa della costante di tempo di R7/C1. In questo caso, l'ampiezza del dente di sega si tronca, "perdendo" impulsi. Questo può causare errori di posizionamento del motore o attuatore. Al fine di prevenire una mancanza d'impulsi, il segnale viene inviato al circuito composto dalle porte NAND IC4 e IC5. Il monoflop IC3B è necessario perché solo i fronti del segnale positivo sono modulati e alcuni driver si innescano sul fronte negativo. Il segnale di uscita /CLK-PM è pilotato dalla configurazione a collettore aperto di T6. Il livello di tensione di modulazione U' viene prodotto sui resistori di pilotaggio-shunt da R24 a R27 e filtrato da un filtro passa-banda formato da R12, C3, C4, R15 e amplificato da IC1B. In rari casi potrebbe essere necessario regolare la banda passante (a seconda dell'inerzia del rotore del motore). Il guadagno può essere regolato tra 1 e 250 volte, utilizzando il resistore R18. La pratica ha dimostrato che un guadagno di circa 50 è sufficiente. I pad sulla scheda da SJ1 a SJ4 servono come punti di test per una sonda dell'oscilloscopio per lo studio delle forme d'onda. Le forme d'onda mostrate in figura 7 possono essere regolate usando resistori R10, R18 e R19. La resistenza R19 viene utilizzata per regolare il livello DC all'uscita di IC1B. Il livello misurato a SJ3 dovrebbe essere la metà del valore di picco del dente di sega SJ1 e nell'intervallo da 1 a 1.3 V.
Per alimentare il motore passo passo viene utilizzato un chip driver integrato di Allegro (IC8) [2]. L'IC A3967SLB contiene un sequencer, un chopper controllo PWM per il micropasso e uno stadio di amplificatore di potenza a transistor bipolare da 0.75 A/Ph. La tensione di riferimento sul pin 1 di IC8 può essere regolata con il partitore di tensione R31/R32 per impostare la corrente del convertitore di frequenza. Questo dovrebbe essere regolato in base alla corrente del motore utilizzato.
Caratteristiche tecniche
- Tensione operativa: da 7 V to 24 V;
- Frequenza di controllo burst: 1 mHz ... 25 kHz;
- Tempo di ritardo CLK-In/Out: approssivamente 5 ms a 1 kHz;
- Corrente massima di fase: 0.75 A/Ph.
Il prototipo
Il PCB RPi HAT per questo progetto è mostrato in figura 8. Si collega direttamente a una scheda RPi A+ tramite il connettore GPIO 2x20 pin. Questo può essere utilizzato per generare il segnale di controllo necessario per il motore, per qualunque tipo di applicazione pratica. Per fare ciò, gli impulsi di clock a 3.3V generati dall'RPi vengono inviati attraverso la porta GPIO23 e T5 al circuito anti-risonanza dell'HAT, che funziona usando i livelli logici di 5V. Il segnale CLK-IN utilizza un resistore di pull-up (R22) per convertire il livello del segnale d'ingresso di 3.3 V in un segnale a 5 V. Gli altri due segnali di controllo /ENABLE (abilitazione motore, attivo basso) e DIR CW/CCW (senso di rotazione) utilizzano la stessa configurazione di livello tramite i transistori T7 e T8. L'ingresso del motore ENABLE su GPIO16 è attivo in stato logico alto. Se si sta utilizzando il circuito con un RPi saranno necessari quattro bulloni, distanziatori e viti per il supporto meccanico. Il controllore del motore deve essere alimentato indipendentemente dall'RPi (usare allo scopo due alimentatori separati). Per il test risulterà adatto qualsiasi motore passo passo a 2 fasi, bipolare o unipolare. Esso dovrebbe possedere una resistenza di avvolgimento compresa tra 5 ohm a 100 ohm con una potenza da 1 a 15 watt. I cavi del motore non dovrebbero mai essere scollegati mentre esso è in funzione. Sebbene IC8 sia stato progettato per motori passo passo bipolari, le versioni unipolari possono anche essere utilizzate e collegate alla morsettiera a vite X1. In questo caso il polo centrale per le bobine corrisponde alla posizione 1 (+24 V) di X1. Sul sito Web Elektor si possono trovare tutti i dettagli [3]. I dati tecnici sono disponibili nella tabella adiacente.
Fattori da considerare e altri dettagli
Nel 2014 l'autore utilizzava una stampante 3D; molti dei suoi alberi di trasmissione erano dotati di motori passo passo ibridi bipolari con gli avvolgimenti collegati in serie. Le frequenze di controllo utilizzate per azionare i motori erano comprese, purtroppo, in intervalli di frequenza per cui l'alloggiamento della stampante mostrava forti risonanze meccaniche. I grandi motori passo passo ibridi si sarebbero potuti sostituire con versioni più piccole. Molti utenti si rivolgono spesso alla modalità microstepping per ridurre vibrazioni nella gamma dell'autorisonanza e anche per ottenere un grado di risoluzione più elevato. Una risoluzione più fine, da sola, non significa necessariamente maggiore precisione di posizionamento. La ragione di ciò sta negli errori nella geometria del motore (statore, perdite di flusso magnetico e scostamenti del valore di corrente). Usando la stessa frequenza di pilotaggio per il sequencer con otto micropassi, si riduce la velocità dell'albero motore di un fattore di 8. Nella formula per la potenza meccanica in uscita:
Pmech = Mdx ω
la velocità angolare ω dell'albero motore e la coppia (Md) giocano un ruolo importante: il carico deve posizionarsi il più rapidamente possibile. Per aiutare a raggiungere tale posizione, il microcontrollore dovrebbe prevedere uno o più generatori d'impulsi. E' importante che il controller abbia memoria sufficiente (NV-RAM o Flash) per memorizzare tabelle di valori per generare frequenze, numero di conteggi di burst e generazioni per segnali a dente di sega. Questo non è un problema per i SoC usati nel RPi. Per permettere un più semplice utilizzo dei motori passo passo, i produttori dovrebbero documentare chiaramente l'efficienza e il rapporto tra potenza elettrica assorbita e potenza meccanica prodotta in funzione della frequenza di controllo, in modo da poter scrivere algoritmi complessi per definire i profili di accelerazione e decelerazione. Ovviamente ciò richiede uno sforzo maggiore per la programmazione. Inoltre si deve evitare di pilotare il motore a frequenze che corrispondono al suo valore di risonanza naturale. Questo vale anche per l'installazione meccanica del motore: assicurarsi che il supporto del motore abbia un livello elevato di smorzamento integrale. Per quanto riguarda l'azionamento o la trasmissione a cinghia dentata, è importante considerare il relativo rapporto costi-benefici. Forse in futuro vedremo circuiti integrati con driver a basso costo caratterizzati da un'uscita in classe D, con possibilità di prevedere funzioni trigonometriche e filtri per il motore. Sarebbe anche vantaggioso se i materiali dello statore avessero basse magnetizzazioni e perdite d'isteresi. Al giorno d'oggi è facile vedere azionare i motori passo passo con frequenze di chopper fino a 18 kHz.
>>>Leggi anche: Algoritmi più intelligenti migliorano le prestazioni dei motori passo-passo
Web links
[1] Pierre Boillat, "Restraining the instability of a stepper motor", US-Patent US4673855 and US4683409.
[2] Allegro A3967: https://bit.ly/2UoRnk1
[3] Article support page: www.elektormagazine.com/180279-01
Bell’articolo. Quando si tratta di meccanica si devono sempre fare i conti con fenomeni di vibrazioni, risonanze, oscillazioni e altro che influiscono negativamente anche con i sistemi elettronici.
Praticamente tutti i sistemi dinamici sono soggetti a vibrazioni, dagli alberi di un sistema di trasmissione ai rotori dei motori, dotati di una propria frequenza di rotazione. Ogni volta che ci si trova ad avere a che fare con un carico sbilanciato si verifica il fenomeno delle vibrazioni.
Articolo ben fatto, sia nella premessa necessaria e propedeutica al resto del contenuto, sia nella descrizione del progetto.
Altro interesse a cui mi dedico nel tempo libero è la stampa 3D, per necessità di costruire case personalizzati ai miei circuiti elettronici ma anche per dare una veste più professionale ai miei progetti elettro-meccanici. Capita ovviamente di realizzare gadget su richiesta di parenti e amici, ma la progettazione di parti meccaniche ad integrazione dei progetti elettronici resta attualmente il mio “core-hobby”.
Tornando al discorso dell’anti-risonanza meccanica, non di rado si riscontrano sui pezzi stampati in 3D artefatti che vanno sotto la denominazione di “gosting” o anche “pelle di salmone” che evidenziano, sulle superfici stampate, delle vere e proprie fasce chiare e scure (dipende dall’angolazione della luce incidente) tra loro intervallate quasi a formare la traccia di una sinusoide. Infatti, proprio di questo si tratta, di risonanza meccanica non smorzata o non mitigata tramite i driver degli stepper. Tale risonanza non impatta solo sull’estetica del pezzo finito ma anche sulla rumorosità della stampante. Per ovviare a questo problema, quando si utilizzano dei motori e dei drivers economici (tipo l’A4988 di Allegro), si possono applicare dei diodi fast di libera circolazione tra le fasi del motore e i due rails di alimentazione di potenza. In tal modo, eventuali correnti di ritorno sulle fasi dovute alle oscillazioni meccaniche del motore e dell’intera struttura, vengono smorzate e scaricate sull’alimentazione. Una soluzione più raffinata è quella di utilizzare dei “Silent Drivers” tipo la serie TMC2100 – TMC2130 o la più sofisticata e costosa serie TMC2208. Questi drivers, infatti, implementano al loro interno quanto descritto nell’articolo, lasciando al progettista di impartire loro giusto i segnali di enable, clock e step. Il miglioramento lo si avverte semplicemente portando in home i tre assi, non accusando il fastidioso rumore tipico della meccanica in vibrazione. Diversamente dalla soluzione hardware, per cercare di non portare in risonanza la struttura senza ulteriore aggravio economico, si può agire sui parametri del firmware che governano la meccanica, nella fattispecie sulle accelerazioni e gli strappi (jerk). L’altra faccia della medaglia di quest’ultimo approccio è l’inevitabile rallentamento della macchina con aggravio sui tempi finali di stampa.
Al solito, la progettazione è una questione di trade-off e di coperte corte! 😀