Logo sheen.bot

Approfondimenti

Perché il tuo robot a due ruote non va dritto

20 ago 2026·Sheen Robotics
Perché il tuo robot a due ruote non va dritto

Motori identici non girano a velocità identiche. Ecco perché le correzioni di potenza fissate nel codice falliscono e come usare gli encoder sulle ruote per una traiettoria davvero rettilinea.

Quando invii un segnale con duty cycle al 100% a due motori in corrente continua identici su un robot a trazione differenziale, il robot curva quasi sempre a sinistra o a destra. Succede perché due motori in corrente continua prodotti in serie non sono mai identici né dal punto di vista elettrico né da quello meccanico, e piccole differenze di attrito interno, di forza magnetica e di aderenza delle ruote producono velocità di rotazione diverse a parità esatta di ingresso elettrico.

In classe o in un laboratorio di preparazione alle gare, questa deriva è uno dei primi ostacoli frustranti che gli studenti incontrano. Capire perché accade—e perché le scorciatoie software non lo risolvono—è il ponte tra la robotica giocattolo e l'ingegneria vera.

Anatomia della variabilità dei motori

I piccoli motoriduttori in corrente continua (DC), in particolare i motori hobbistici dal guscio giallo comuni nei kit didattici, sono costruiti con tolleranze di produzione ampie. Diverse differenze microscopiche garantiscono che il motore A si comporti diversamente dal motore B:

  • Avvolgimento delle bobine e resistenza interna: il filo di rame avvolto attorno all'indotto varia leggermente in lunghezza e tensione, creando piccole differenze di resistenza e di forza controelettromotrice (back-EMF).
  • Forza dei magneti permanenti: i magneti in ferrite sinterizzata presentano piccole variazioni nella densità di flusso magnetico, che alterano la coppia erogata.
  • Attrito di contatto delle spazzole: le spazzole meccaniche premono sul collettore con una tensione della molla variabile, aggiungendo un attrito disomogeneo.
  • Tolleranze del riduttore: i riduttori a più stadi con ingranaggi cilindrici montati su questi motori hanno livelli di attrito diversi a seconda della costanza del profilo dei denti, dell'allineamento degli alberi e della distribuzione del lubrificante interno.

Anche al di fuori del motore, i fattori meccanici aggravano il problema. Se una gomma è calzata sul cerchio 0,5 mm più in dentro, il suo raggio di rotolamento effettivo cambia. Se il pacco batteria del robot è spostato 10 mm a sinistra rispetto all'asse, la ruota sinistra subisce una forza normale maggiore e una resistenza al rotolamento più alta. Il risultato è una base di trazione asimmetrica.

Perché le correzioni fissate nel codice falliscono sempre

La reazione istintiva dello studente è bilanciare i motori a mano nel codice:

// La soluzione classica da principiante
motorLeft.setSpeed(255);
motorRight.setSpeed(238); // riduci il motore più veloce

Questo si chiama controllo ad anello aperto: si invia un comando e si dà per scontato che il risultato reale corrisponda alla richiesta, senza verificarlo. Una correzione manuale può anche far andare dritto il robot per tre metri su un pavimento in linoleum liscio con le batterie appena cariche, ma in condizioni reali si sfalda puntualmente:

  • Curve di scarica della batteria: quando la tensione della batteria cala nell'arco di una lezione di 45 minuti, i motori in corrente continua non perdono velocità in modo lineare. Una correzione tarata a 8,2 V tirerà da un lato non appena il pacco scende a 7,4 V.
  • Cambi di attrito della superficie: passare dalle piastrelle lisce del laboratorio a una moquette commerciale a pelo corto altera la resistenza al rotolamento in modo diverso sulle due gomme.
  • Cambiamenti termici: quando i riduttori e gli avvolgimenti si scaldano durante il funzionamento continuo, l'attrito interno diminuisce e il rapporto di velocità tra i due lati si sposta.

La soluzione: retroazione ad anello chiuso con gli encoder

Per far andare dritto un robot indipendentemente dalla tensione della batteria o dalla texture della superficie, il microcontrollore deve misurare in tempo reale che cosa stanno facendo davvero le ruote. Serve il controllo ad anello chiuso.

Il modo più semplice per ottenerlo sono gli encoder rotativi sulle ruote. Un encoder è composto da un sensore (di solito un interruttore ottico o un sensore magnetico a effetto Hall) e da un elemento rotante fissato all'albero del motore o alla ruota (un disco forato o un anello magnetico multipolare). Ogni volta che la ruota gira, il sensore emette impulsi.

Approccio di controlloMeccanismoComportamento con batteria scaricaComportamento su una nuova superficie
Anello aperto (PWM fisso)Presuppone motori identiciDeriva in modo imprevedibileDeriva in modo imprevedibile
Anello aperto (correzione fissata nel codice)Compensa a mano un motorePerde la taraturaPerde la taratura
Anello chiuso (retroazione da encoder)Regola dinamicamente la potenza in base agli impulsi misurati sulle ruoteMantiene la traiettoria rettilineaMantiene la traiettoria rettilinea

Come realizzare un controllo proporzionale della velocità

Non serve una preparazione avanzata in analisi matematica per realizzare un controllore ad anello chiuso funzionante. Un anello di controllo proporzionale (P) di base, eseguito ogni 50-100 millisecondi, è sufficiente per la robotica in classe.

Invece di comandare la potenza grezza dei motori, il programma misura le rotazioni delle ruote su un intervallo di tempo fisso e regola la potenza per annullare la differenza:

  1. Conta gli impulsi dell'encoder su entrambe le ruote in una finestra fissa (per esempio ogni 50 ms).
  2. Calcola l'errore: error = leftTicks - rightTicks.
  3. Se error > 0, la ruota sinistra gira più veloce della destra. Riduci leggermente il PWM del motore sinistro, aumenta leggermente quello del destro, oppure applica un fattore di correzione proporzionale all'entità dell'errore: correction = error * Kp (dove Kp è una costante di guadagno da tarare).
  4. Azzera i contatori degli impulsi e ripeti.

Se state costruendo il vostro programma didattico o scegliendo piattaforme hardware, optare per kit che includono microcontrollori con interrupt hardware ed encoder magnetici integrati—come gli ecosistemi modulari supportati su piattaforme quali Sheen Canvas o le piattaforme di robotica di Infinity—fa risparmiare decine di ore di frustrazione agli studenti. Sposta il fulcro dell'apprendimento dalla lotta contro i difetti meccanici alla padronanza della retroazione dei sensori e della teoria del controllo.

Il punto essenziale

Le imperfezioni meccaniche non sono difetti da nascondere con cerotti software temporanei: sono la realtà di fondo del physical computing. Insegnare agli studenti a misurare l'effettiva resa dei motori con encoder e algoritmi ad anello chiuso trasforma una fonte comune di frustrazione in laboratorio in una lezione pratica e accessibile sui sistemi di controllo reali.

#robotica#motori#controllo pid#didattica STEM#elettronica

Altri post in Approfondimenti