Tutorial · Intermedio · 30 min

Gioco di inversione nei riduttori: come misurarlo e correggerlo

Misura in gradi il gioco di ogni riduttore, causa di cedimenti del braccio e deriva dell'odometria, poi eliminalo o progetta tenendolo conto.

Introduzione

Esiste una famiglia di guasti dei robot che si presentano tutti allo stesso modo: la macchina funziona andando in una direzione ed è sbagliata andando nell’altra. Il braccio raggiunge lo stesso punto venendo da sinistra e da destra e si ferma in due posizioni diverse. Il robot bilanciatore vibra attorno alla verticale e non si stabilizza per quanto lo regoli. L’orientamento del robot da labirinto è sbagliato di un grado dopo ogni curva e di quindici dopo il percorso.

Nessuno di questi è un problema di regolazione e tutti hanno la stessa causa. Tra il motore e ciò che muovi c’è un cinematismo, e un cinematismo deve avere uno spazio tra i denti, altrimenti si bloccherebbe. Questo spazio si chiama gioco di inversione e significa che, ogni volta che il motore cambia direzione, l’uscita non si muove affatto finché i denti non attraversano lo spazio e non si incontrano dall’altra parte.

Questo sito indica il gioco di inversione in sette pagine come motivo del mancato funzionamento di qualcosa. Questa è la pagina che lo spiega.

Che cosa sia realmente

Il gioco di inversione non è attrito e non è ritardo. È una zona morta con memoria.

Immagina il dentino motore appoggiato contro una faccia del dentino condotto. Spingi e l’uscita segue l’ingresso esattamente, senza alcun errore. Ora inverti. Il dentino motore si stacca da quella faccia e attraversa lo spazio; per tutta la traversata l’uscita resta esattamente dov’era. Quando il contatto avviene sulla faccia opposta, l’uscita riprende a seguire l’ingresso con uno scostamento permanente pari alla larghezza dello spazio.

Da questa descrizione discendono direttamente due conseguenze, quelle che vale la pena ricordare:

  • Il gioco di inversione non ti costa nulla mentre ti muovi in una direzione. È una tassa sull’inversione, addebitata una volta per inversione, per quanto poi viaggi. L’inversione più costosa per un robot è l’arresto di emergenza, dove il gioco diventa viaggio libero aggiunto direttamente alla distanza di frenatura.
  • L’errore dipende dalla direzione da cui sei arrivato. È questo che lo rende un’isteresi anziché un semplice scostamento ed è il motivo per cui una costante di calibrazione non può eliminarlo.

La forma che produce

Aziona un’articolazione con 4° di gioco in avanti e indietro e traccia il comportamento dell’uscita.

Due grafici sovrapposti per un'articolazione con quattro gradi di gioco. Il grafico superiore mostra la posizione comandata come onda sinusoidale tratteggiata e l'uscita effettiva come curva continua, in funzione del tempo. A ogni inversione l'uscita effettiva resta piatta all'interno di una fascia ombreggiata mentre la posizione comandata continua a muoversi, poi riprende a seguirla. Il grafico inferiore mostra la posizione effettiva in funzione di quella comandata, formando un anello a parallelogramma attorno alla diagonale tratteggiata che seguirebbe un riduttore senza gioco di inversione, con l'anello misurato largo quattro gradi.
La stessa prova eseguita due volte. Nel tempo, il gioco di inversione è il tratto piatto a ogni inversione; riportando l'uscita in funzione dell'ingresso, è un parallelogramma la cui larghezza orizzontale è uguale al gioco: qui misurato in 4.07° per uno spazio di 4°, con l'eccesso dovuto alla larghezza della fascia di campionamento. Scarica SVG

Il pannello inferiore è l’immagine mentale utile, perché rende evidenti i due rami. Salendo, l’uscita si trova mezzo spazio indietro. Scendendo, si trova mezzo spazio avanti. In qualsiasi posizione intermedia, l’uscita resta dove è stata lasciata.

Misura il tuo in dieci minuti

Non puoi progettare in funzione di un numero che non hai e ogni riduttore è diverso. Ci sono due modi per ottenerlo.

A mano, per qualsiasi cosa. Spegni il motore e tieni fermo il telaio. Incolla una striscia di nastro al bordo della ruota o all’estremità del braccio e fai oscillare delicatamente l’uscita fra le due estremità, senza flettere nulla, solo fino a incontrare resistenza in entrambe le direzioni. Segna entrambi gli estremi e misura l’arco fra di essi. Converti:

backlash (°) = arc / (π · D) × 360

Ripeti in quattro o cinque posizioni attorno a una rivoluzione completa dell’uscita e conserva il valore peggiore. La variazione tra un dente e l’altro e l’eccentricità dell’albero sono reali e la posizione in cui hai iniziato per caso potrebbe non essere rappresentativa.

Con un encoder, con maggiore precisione. Se il tuo motore ha un encoder sull’albero del motore, come un motore con encoder N20, azionalo molto lentamente in una direzione finché l’uscita non inizia appena a muoversi, azzera il contatore, poi inverti e conta finché l’uscita non si muove di nuovo. Quel conteggio è lo spazio:

backlash (°) = counts / counts-per-output-rev × 360

Per un N20 con 7 impulsi per canale per rivoluzione del motore, decodificati ×4, dietro un riduttore 1:100, sono 2800 conteggi per rivoluzione dell’uscita, quindi 31 conteggi corrispondono a 4°. Una risoluzione più che sufficiente per misurare qualcosa che a malapena si vede.

La posizione dell’encoder determina cosa puoi vedere

Questa è la parte che sorprende le persone e decide se il numero appena misurato è un problema risolvibile via software.

Un encoder sull’albero del motore si trova prima del riduttore. Durante la traversata segnala che il motore sta girando perfettamente, perché il motore sta girando perfettamente. La ruota no. La stima di posizione dice che ti sei mosso, ma non è vero. Il gioco di inversione è invisibile a un encoder lato motore e finisce nell’odometria come errore puro e non corretto.

Un encoder sull’albero di uscita si trova dopo il riduttore e segnala la verità, ma è proprio per questo che legge zero durante la traversata: per questo usi l’encoder lato motore per misurare il gioco di inversione. L’encoder che non può compensarlo è quello che può vederlo.

La sintesi onesta per un robot hobbistico è questa: su quasi tutti, l’encoder è sul motore e il gioco di inversione è un errore non misurato nella stima di posizione. Tutto quanto segue riguarda come rendere piccolo quell’errore o come fare in modo che non conti.

Quanto ti sta costando

Il gioco di un’articolazione è un angolo; ciò che costa è una distanza, e la leva determina quanto. Stessi 4° di gioco, tre robot:

Posizione Leva Costo per inversione
Spalla del braccio robot Leva da 150 mm 10.5 mm alla pinza
Ruota motrice Ruota da 65 mm 2.27 mm di percorso
Ruota del Micromouse Ruota da 42 mm 1.47 mm di percorso

La riga del braccio spiega perché i bracci articolati soffrono di più alle tolleranze hobbistiche: il gioco della spalla viene moltiplicato per l’intera lunghezza del braccio prima di raggiungere l’attrezzo. Un solo grado alla spalla di una leva da 150 mm corrisponde già a 2.6 mm alla pinza.

Le righe delle ruote sembrano innocue finché non conti le inversioni. Un Micromouse ruota sul posto a ogni incrocio e ogni inversione ne comporta una su una ruota. Con ruote da 42 mm e passo di 90 mm, 4° di gioco danno 0.93° di errore di orientamento per curva, e l’errore di orientamento è l’unica cosa che non si media, perché ogni tratto rettilineo successivo viene percorso con un orientamento sbagliato. Cento curve equivalgono a 147 mm di percorso che la tua odometria ha contato e che il robot non ha mai percorso.

Un robot che si bilancia da solo è il caso estremo, perché inverte continuamente: centinaia di volte al secondo, a piccoli incrementi, ognuno dei quali è più piccolo dello spazio. Trascorre la maggior parte della propria vita dentro la zona morta, ed è per questo che nessun insieme di guadagni la stabilizza.

Soluzione 1: comprarne meno

La soluzione più economica è di solito il componente.

Ingranaggi metallici invece che plastici. Gli ingranaggi stampati a iniezione hanno tolleranze larghe e si deteriorano verso tolleranze ancora più larghe. Un cinematismo metallico non elimina il gioco di inversione, ma ne ha in genere una frazione: è l’unico motivo per cui i motori N20 compaiono in ogni progetto di robot bilanciatore e Micromouse e per cui il motore con ingranaggi TT va bene per un robot seguilinea che viaggia quasi sempre in avanti.

Sai quale stadio conta. Il gioco di inversione di ogni stadio, riportato all’uscita, viene diviso per il rapporto di riduzione fra quello stadio e l’uscita. Lo stadio finale ha rapporto uno rispetto all’uscita, quindi tutto il suo gioco di inversione compare e tutto ciò che lo precede viene ridotto. Un riduttore ad alto rapporto non è quindi automaticamente peggiore e, se vuoi migliorare un ingranaggio, migliora quello ultimo.

Precarico. Ingranaggi divisi tenuti premuti l’uno contro l’altro, dadi a vite senza gioco di inversione con precarico, una cinghia tensionata al posto di una coppia di ingranaggi. Tutti questi mantengono i denti in contatto su entrambe le facce contemporaneamente. Costano tutti attrito, efficienza e usura: è il compromesso che accetti.

Oppure elimina il riduttore. Un’articolazione a cinghia o ad azionamento diretto non può avere gioco di inversione degli ingranaggi. Ha invece cedevolezza, che è un problema diverso trattato sotto.

Soluzione 2: avvicinati da un solo lato

La correzione più antica nella lavorazione e la più conveniente in software, perché non costa nulla.

Il gioco di inversione viene addebitato solo a ogni inversione. Quindi fai in modo che l’ultima parte di ogni movimento sia nella stessa direzione e lo spazio sarà sempre già attraversato quando arrivi. Se devi raggiungere una posizione dall’alto, superala e torna indietro verso l’alto. Le stampanti 3D lo fanno sull’asse Z; gli operatori CNC lo fanno a mano quasi per riflesso.

// Always arrive travelling positive: the gap is crossed before we get there.
void moveTo(float target) {
  if (target < currentPosition()) {
    driveTo(target - APPROACH_MARGIN);   // margin > measured backlash
  }
  driveTo(target);
}

APPROACH_MARGIN deve essere nettamente maggiore del gioco misurato: il suo doppio è un punto di partenza ragionevole. Il costo è tempo sulla metà dei movimenti e il vantaggio è una ripetibilità che non dipende più da dove sei arrivato.

Per un robot mobile, lo stesso trucco si legge diversamente: preferisci un arco ampio a una rotazione sul posto, dove la mappa lo consente, perché un arco non inverte nessuna ruota.

Soluzione 3: evita che il controllore combatta il gioco di inversione

Un loop PID incontra il gioco di inversione come una zona morta al centro del proprio intervallo di controllo e lo gestisce male in un modo specifico e riconoscibile.

Dentro lo spazio, l’uscita cresce ma non succede nulla, quindi l’errore non diminuisce. Il termine integrale continua ad accumularsi per tutto un periodo in cui nessuna quantità di sforzo avrebbe aiutato. Quando i denti innestano finalmente, il termine accumulato viene applicato tutto in una volta a un meccanismo ormai collegato e l’articolazione scatta oltre il bersaglio. Poi inverte, attraversa di nuovo lo spazio e ripete la stessa cosa nella direzione opposta. Questo è un ciclo limite, un’oscillazione di inseguimento costante che non converge mai, la cui ampiezza è determinata dalla meccanica e non dai guadagni.

Ciò che aiuta davvero:

  • Interrompi l’integrazione quando non ti muovi ma impartisci un comando. Se l’uscita è sopra la soglia che dovrebbe produrre movimento e l’encoder indica che l’uscita non si muove, blocca l’integrale. È la stessa logica anti-windup che useresti con un attuatore saturato; la zona morta è semplicemente un attuatore temporaneamente scollegato.
  • Riduci Ki prima di ridurre Kp. Il termine integrale è quello che trasforma una zona morta in un ciclo limite.
  • Non inseguire l’ultima frazione di grado. Se il gioco è di 4°, chiedere una tolleranza di 1° equivale a chiedere oscillazioni. Accetta una zona morta leggermente più ampia del gioco di inversione e il loop smetterà di oscillare.
  • Profila l’inversione. Un profilo di movimento che rallenta dolcemente passando per velocità zero attraversa lo spazio con delicatezza invece di sbattere contro la faccia opposta del dente: è più silenzioso e molto meno duro per gli ingranaggi plastici.

Osserva il fenomeno nel simulatore PID regolando un sistema che risponde lentamente ai piccoli segnali: gli stessi guadagni stabili per movimenti ampi oscillano attorno al riferimento per quelli piccoli.

La cedevolezza è l’altra metà del movimento perso

Se misuri il gioco facendo oscillare l’uscita, stai misurando insieme gioco di inversione e cedevolezza, che richiedono correzioni diverse. Distinguili con una prova: applica un carico, annota la deflessione e poi scaricalo.

Gioco di inversione Cedevolezza
Deflessione rispetto al carico Spazio fisso, indipendente dal carico Proporzionale al carico
Al rilascio Resta dove l’hai lasciato Torna indietro elasticamente
Soluzione Ingranaggi migliori, precarico, avvicinamento da un lato Parti più rigide, leve più corte, controventi
Sintomo Errore dipendente dalla direzione Cedimento sotto carico, oscillazioni dopo il movimento

Un braccio lungo in acrilico ha pochissimo gioco di inversione e molta cedevolezza. Un economico riduttore plastico su un breve albero è il contrario. Entrambi si manifestano come «il braccio non va dove gli dico», ed è per questo che conviene eseguire la prova di due minuti prima di comprare qualsiasi cosa.

Quando va storto

Sintomo Di solito
Il braccio raggiunge un punto in modo diverso da ciascun lato Gioco di inversione, senza ambiguità: misuralo prima di regolare qualsiasi cosa
Il robot bilanciatore vibra e non si stabilizza mai Gioco maggiore degli incrementi di correzione; usa un riduttore metallico, non ulteriori regolazioni
L’orientamento deriva di un grado a ogni curva Gioco di inversione sulla ruota che inverte; preferisci gli archi o aggiungi un giroscopio
L’odometria dice che si è mosso, ma non è accaduto L’encoder lato motore non vede lo spazio del riduttore
Oscillazione costante attorno al riferimento Termine integrale che si accumula attraversando la zona morta
La posizione è ripetibile ma cede sotto carico Cedevolezza, non gioco di inversione: irrigidisci, non cambiare il rapporto di riduzione
Peggiora in pochi mesi Usura degli ingranaggi plastici; il gioco di inversione aumenta con l’uso

Il gioco di inversione è il motivo per cui un robot perfetto in simulazione delude sul banco di lavoro, perché è esattamente il tipo di cosa che un modello ideale omette. Misuralo una volta, annota il numero e gran parte del mistero scompare. Se il numero è abbastanza grande da creare problemi, la risposta è di solito un motore e un riduttore migliori anziché un altro pomeriggio di regolazione.

Esplora il grafo

Fa parte di queste costruzioni

Progetti e percorsi di apprendimento che includono questo tutorial.

Per approfondire

Fonti