Percorso di apprendimentoPrincipiante

Controllo dei motori per robot: un percorso di apprendimento

Controlla due motori con velocità e direzione precise, leggi quanto hanno ruotato e guida un robot a trazione differenziale.

I motori sono il punto in cui le decisioni di un robot diventano movimento. Questo percorso costruisce il controllo dei motori dalle basi: prima commuta in sicurezza la corrente di un motore reale con un ponte H e PWM, poi chiude il ciclo leggendo gli encoder per sapere quanto e quanto velocemente ha ruotato ogni ruota e infine combina due ruote in sterzata e odometria a trazione differenziale.

Segui i nodi in ordine: ognuno sblocca il successivo quando lo hai completato. Alla fine potrai comandare le ruote di un robot con precisione reale, la base per l’inseguimento di linee, la risoluzione di labirinti e la navigazione autonoma.

Prima di iniziare

Devi sentirti a tuo agio con il cablaggio di una breadboard e la lettura di una tensione, e devi avere un microcontrollore che sai già programmare — un Arduino Uno è la scelta abituale. Non serve alcuna teoria del controllo; è il percorso PID a occuparsene, e si aspetta che questo sia stato completato prima.

Cosa saprai fare

  • Controllare un motore DC con spazzole in entrambe le direzioni a una velocità comandata, senza far scaldare il driver o la scheda.
  • Spiegare perché un motore resta fermo al 15% di duty e inizia a muoversi al 30%, e misurare quella soglia sul tuo hardware invece di indovinarla.
  • Convertire gli impulsi grezzi dell’encoder in millimetri percorsi e millimetri al secondo, includendo il fattore ×4 corretto della codifica in quadratura.
  • Trasformare «pivota a sinistra di 90°» nella velocità delle ruote sinistra e destra e prevedere dove finirà il robot dal solo movimento delle ruote.
  • Dimensionare un motore con riduttore in base alla massa e alle ruote del tuo robot, invece di comprare quello incluso nel kit e scoprirlo sul tappeto.
  • Misurare il gioco di inversione del riduttore in gradi e dire quanto costa all’odometria.
  • Calcolare la forza massima che il robot può esercitare sul pavimento e stabilire se siano i motori o gli pneumatici a fermarti.

Dove le persone si bloccano

Alimentare i motori dalla linea da 5 V del microcontrollore. Questo è il guasto più comune su un primo robot. Il regolatore non può fornire la corrente dei motori, quindi la linea scende, la scheda va in brown-out e si riavvia, e il sintomo sembra un bug software. I motori ricevono un’alimentazione propria; solo il lato logico del driver condivide i 5 V della scheda — la pagina sul budget di potenza contiene i calcoli e la misura.

Nessuna massa comune. Il driver e il microcontrollore devono condividere un riferimento di massa o i pin di direzione non significano nulla. Tutto sembra cablato correttamente e nulla si muove.

Pretendere che l’odometria resti esatta. L’odometria delle ruote deriva senza limite: ogni slittamento e ogni millimetro di errore nel diametro delle ruote si accumula e non viene mai corretto. È eccellente per un metro e inutile per cento. Questo limite è il motivo per cui esiste il percorso di mappatura.

Contare gli fronti degli encoder in modo incoerente. Un encoder in quadratura fornisce quattro fronti conteggiabili per ciclo. Contarne uno e usare il valore ×4 del datasheet sbaglia ogni distanza di un fattore quattro, il che sembra una ruota completamente mal calibrata.

Dare la colpa al microcontrollore per il riduttore. Un errore che cambia segno con la direzione è meccanico, non un difetto di taratura. Un ingranaggio ha un gioco, viene addebitato a ogni inversione e un encoder montato sull’albero del motore non può vederlo.

Di cosa hai bisogno

Cosa Perché questo percorso ne ha bisogno Note
Due motori DC con riduttore Il soggetto di tutto il percorso Le versioni con encoder costano poco di più e risparmiano una ricostruzione
Un driver dei motori Un ponte H, così un pin logico può comandare la corrente del motore L298N se era nel kit, TB6612FNG se lo compri
Una batteria separata per i motori La linea che i motori fanno calare non deve essere quella che alimenta la scheda Qualsiasi pacco in grado di fornire la corrente di stallo
Un multimetro Per misurare la corrente di stallo e il calo dell’alimentazione Qui conta la modalità di corrente, non solo la tensione
Un metro a nastro Per verificare che «percorri 1 m» abbia prodotto 1 m Lo strumento più economico e più onesto sul banco

Perché il percorso segue quest’ordine

Il dimensionamento viene prima del cablaggio di proposito. Quasi ogni domanda sul perché «il mio robot è troppo lento» o «il mio driver si è bruciato» è una decisione di dimensionamento presa per caso mesi prima, usando il motore che era nella scatola. Calcolare la coppia necessaria al tuo robot richiede venti minuti e risolve domande che il resto del percorso continuerebbe a riaprire.

L’attrito arriva subito dopo il dimensionamento perché fissa il secondo limite e, su un robot piccolo, è il più basso. La coppia di stallo dice cosa può produrre il motore; l’attrito dice cosa accetterà il pavimento. Un robot leggero su un pavimento liscio raggiunge il limite di trazione intorno a un quarto della coppia di stallo: significa che gli ultimi tre quarti della capacità del motore non arrivano affatto al terreno. Dimensionare senza considerare l’attrito ti dà un robot forte sulla carta che, nella pratica, slitta con le ruote.

Il PWM viene prima degli encoder perché un motore in controllo aperto è la cosa più semplice che possa essere sbagliata ed è molto più facile eseguire il debug di un errore di cablaggio quando non c’è un ciclo di controllo sopra. Fai prima girare entrambe le ruote in entrambe le direzioni al duty comandato.

Gli encoder vengono prima della trazione differenziale perché la trazione differenziale è aritmetica costruita sul movimento misurato delle ruote. Senza encoder puoi sterzare, ma non dire dove sia andato il robot, e metà dell’odometria di quel nodo non ha nulla su cui lavorare.

I profili e i due nodi sulle perdite vengono per ultimi perché ciascuno corregge un’idea lasciata libera dai nodi precedenti. I profili di movimento correggono l’idea di poter comandare direttamente una posizione. Lo slittamento delle ruote corregge l’idea che l’encoder misuri il terreno. Il gioco di inversione corregge l’idea che l’encoder misuri la ruota. Tutti e tre sono risultati deludenti e sono molto più economici da imparare qui che su un robot che stai cercando di finire.

Punti di verifica: come sapere che una fase è stata compresa

Fase La verifica Cosa significa superarla
Dimensionamento del motore Calcola la coppia necessaria dalla massa, dal raggio delle ruote e dall’accelerazione desiderata del robot Un numero in N·m confrontabile con un datasheet — e conosci la corrente di stallo del motore
Limite di trazione Tieni il robot fermo contro una bilancia da cucina a piena potenza La lettura si stabilizza ben al di sotto della forza di stallo del motore e le ruote girano
Controllo PWM Scansione del ciclo di lavoro da 0 a 255 a passi di 5 su ogni ruota Puoi indicare il duty a cui ogni ruota inizia a girare e i due numeri sono diversi
Controllo della direzione Comanda avanti, indietro e freno su entrambi i canali Tutti e sei gli stati si comportano correttamente e sai spiegare cosa fa il freno rispetto alla marcia libera
Encoder Spingi il robot esattamente per 1 m a mano e leggi i conteggi I conteggi si convertono in 1000 mm ± 20 mm, usando il fattore ×4 della codifica in quadratura
Trazione differenziale Comanda una rotazione di 90°, misura con un goniometro Entro pochi gradi e ripetibile: un errore costante è gioco di inversione, uno casuale è slittamento
Profili di movimento Comanda un movimento breve e uno lungo con gli stessi limiti Il movimento breve non raggiunge mai la velocità massima e sai spiegarne il motivo dalla forma del profilo
Gioco di inversione Gira la ruota a mano fino al punto di resistenza in entrambe le direzioni Hai un numero in gradi e non è zero

Dove si ferma questo percorso

Questo percorso si ferma al comando preciso del movimento. Non chiude un ciclo attorno a un obiettivo esterno: nessuna linea da seguire, nessun muro da mantenere, nessun riferimento verso cui convergere. Quello è il controllo PID, che presuppone tutto ciò che precede.

Tre omissioni deliberate che vale la pena nominare. I motori brushless e gli ESC sono un altro problema di controllo e quasi nessun piccolo robot terrestre ne ha bisogno. I motori passo-passo scambiano l’encoder con una posizione in controllo aperto, al costo di coppia e velocità: è uno scambio giusto per una stampante e sbagliato per un rover, e hanno un percorso dedicato in movimento di precisione con motori passo-passo. I telai olonomici, cioè mecanum e ruote omni che possono muoversi lateralmente, richiedono quattro ruote controllate in modo indipendente e una cinematica diversa, e hanno un percorso dedicato in trazione olonomica. E la rilevazione della corrente, che misura ciò che il motore assorbe davvero invece di ciò che hai comandato, è il metodo professionale per rilevare uno stallo ed è davvero utile, ma richiede l’hardware che la maggior parte dei driver per principianti non ha.

Percorso di apprendimento

Il percorso

Segui i nodi in ordine: ognuno sblocca il successivo una volta completato. I tuoi progressi vengono salvati su questo dispositivo.

0 / 13 completati

100%
Tutorial

Controlla i motori DC con PWM e un ponte H

Tutoriale

Apri il tutorial
Tutorial

Misura distanza e velocità con gli encoder

Tutoriale

Apri il tutorial
Tutorial

Applica una rampa al movimento, non comandarlo direttamente

40 min

Apri il tutorial
Obiettivo

Controlla un robot con precisione

Abilità sbloccata

Domande comuni

Domande frequenti

Cosa devo imparare per controllare i motori di un robot?

Quattro livelli, in ordine. Primo, il dimensionamento: trasformare la massa e il diametro delle ruote del robot nella coppia e negli RPM effettivamente necessari, così il motore viene scelto invece di essere ereditato da un kit. Secondo, la commutazione: un ponte H e PWM, che permettono a un pin logico di controllare una corrente che non potrebbe mai fornire. Terzo, la misura: un encoder, così il robot sa quanto ha ruotato ogni ruota invece di supporlo. Quarto, la combinazione: la trazione differenziale, che trasforma due velocità delle ruote in un orientamento e una posizione. Tutto ciò che segue è costruito su questi quattro: inseguimento di linea, PID e navigazione.

Perché il mio motore non si muove fino a circa il 30% di duty PWM?

L'attrito statico e il gioco iniziale del riduttore devono essere superati prima che qualcosa giri; sotto quella soglia il motore resta fermo e ronziona. Il valore è una proprietà del tuo hardware specifico: rapporto di riduzione, condizione dei cuscinetti, temperatura e peso sulle ruote. Deve quindi essere misurato, non cercato. Aumenta il duty a gradini di 5 e annota dove ogni ruota inizia a girare. I robot hanno spesso due soglie diverse, una per lato, e un robot che devia a bassa velocità sta soltanto mostrandoti quella differenza, non un bug di sterzata.

Quanto è accurata l'odometria delle ruote?

Eccellente per un metro e inutile per cento metri. L'odometria integra il movimento delle ruote, quindi ogni errore è permanente: non esiste alcuna misura che lo corregga. Lo slittamento casuale cresce con la radice quadrata della distanza, ed è gestibile, ma un errore sistematico come un diametro delle ruote sbagliato dell'1% cresce linearmente e non lo è. La conseguenza pratica è che l'odometria è lo strumento giusto per chiudere un ciclo di controllo nei prossimi secondi, ma quello sbagliato per sapere dove ti trovi dopo cinque minuti.

L298N o TB6612FNG: quale driver dei motori devo usare?

TB6612FNG per quasi ogni robot piccolo. Il suo stadio di uscita a MOSFET perde circa 0.5 V rispetto ai circa 2 V dell'L298N e, su un motore da 6 V, quella differenza è un terzo dell'alimentazione bruciata come calore prima che il motore la veda. L'L298N si guadagna il suo posto quando servono più di circa 1.2 A per canale in continuo o quando l'alimentazione del motore supera il limite di 13.5 V del TB6612FNG. È anche ciò che spediscono la maggior parte dei kit, quindi vale la pena conoscerlo bene anche se poi lo sostituisci.

Ho bisogno di encoder su un robot per principianti?

Non per un seguilinea, che sterza usando il sensore di linea e non ha mai bisogno di sapere quanto è andato lontano. Servono dal momento in cui il robot deve percorrere una distanza stabilita, ruotare di un angolo stabilito o mantenere una velocità che non diminuisca quando la batteria si scarica o il tappeto diventa più spesso. Un risolutore di labirinto ne ha bisogno; un primo seguilinea no. Aggiungerli in seguito significa cambiare i motori, quindi se pensi di arrivarci, compra motori con encoder già montati.

Perché la rotazione del mio robot supera sempre di una quantità costante?

Un errore costante che cambia segno con la direzione è meccanico, non un problema di taratura. Ogni ingranaggio ha un gioco di inversione, cioè uno spazio che deve essere eliminato prima che l'uscita si muova, e viene addebitato a ogni inversione. Un encoder montato sull'albero del motore si trova dal lato sbagliato del riduttore e non può vederlo, quindi il controllore crede che il movimento sia completato. Misura il gioco in gradi sulla ruota e compensalo via software oppure evita di invertire a metà movimento.