Logo sheen.bot

Approfondimenti

Perché il robot si riavvia quando partono i motori (e come rimediare)

22 ago 2026·Sheen Robotics
Perché il robot si riavvia quando partono i motori (e come rimediare)

Il microcontrollore si riavvia perché il picco di corrente iniziale dei motori CC fa crollare la tensione della batteria sotto il suo limite di funzionamento. Ecco come risolvere i reset da brownout in classe.

Se il vostro robot esegue il codice di setup, accende i LED e poi si riavvia esattamente nel momento in cui parte il codice di trazione, il microcontrollore sta subendo un reset da brownout. I motori non stanno bruciando il chip: lo stanno affamando di tensione.

Quando un motore a corrente continua (CC) parte da fermo, richiede un picco enorme di corrente per una frazione di millisecondo. Se l'alimentazione non riesce a fornire quella corrente all'istante, la tensione sul circuito crolla. Nel momento in cui scende sotto la soglia di funzionamento sicuro del microcontrollore — circa 2,7 V per un chip a 3,3 V come l'ESP32, oppure 4,3 V per un Arduino Uno standard a 5 V — il processore si resetta per proteggere la memoria dalla corruzione. Appena il motore smette di girare durante il reset, la tensione si riprende, il codice riparte e il ciclo si ripete all'infinito.

La meccanica di un brownout

Per risolvere il problema in modo affidabile conviene capire perché la tensione cala. Due realtà fisiche provocano i riavvii indotti dai motori nei kit di robotica scolastica:

  • Corrente di spunto: un motore CC fermo non ha praticamente forza controelettromotrice (back-EMF). Dal punto di vista elettrico, accendere un motore equivale quasi a mettere un cortocircuito sull'alimentazione per una frazione di secondo. Un motoriduttore hobbistico giallo che assorbe 150 mA a regime può tranquillamente richiedere da 1,2 A a 1,5 A nell'istante in cui comincia a girare.
  • Resistenza interna della batteria: ogni batteria ha una resistenza interna. Quando si chiede a quattro pile alcaline AA o a una coppia di celle 18650 di erogare istantaneamente da 2 A a 3 A su due motori di trazione, la tensione ai morsetti della batteria cala in proporzione diretta a quella resistenza interna. Cavetti sottili e clip a molla per batterie peggiorano parecchio questo cedimento di tensione.

Quando alimentate un microcontrollore e un driver motore a ponte H (come un L298N, un DRV8833 o un TB6612FNG) dallo stesso pacco batteria non tamponato, quel cedimento di tensione arriva dritto sulla linea di alimentazione del processore. Il microcontrollore interpreta il calo come un'interruzione di corrente e si riavvia.

Rimedio 1: aggiungere condensatori di disaccoppiamento di bulk

Il rimedio hardware più semplice che non richiede un secondo pacco batteria è aggiungere capacità di bulk vicino al driver motore.

Un condensatore si comporta come un serbatoio di carica elettrica minuscolo ed estremamente rapido. Quando il motore parte e chiede un'improvvisa ondata di corrente, il condensatore si scarica nel driver motore prima che la tensione della batteria principale abbia il tempo di crollare del tutto.

  • Mettete un condensatore elettrolitico da 470 µF a 1000 µF direttamente sui morsetti di ingresso di potenza ad alta corrente del driver motore (Motor VCC e GND).
  • Tenete i reofori del condensatore il più corti possibile. Se si trova tre file di breadboard più in là, la resistenza delle piste a innesto della breadboard ne smorzerà l'efficacia.
  • Rispettate la polarità: la striscia negativa del condensatore va collegata a massa (GND) e il terminale positivo all'alimentazione.

Per il rumore elettrico ad alta frequenza generato dalle spazzole del motore, saldate inoltre un piccolo condensatore ceramico da 0,1 µF (100 nF) direttamente sui due terminali metallici di ciascun motore CC.

Rimedio 2: separare completamente le linee di alimentazione

Se costruite robot a quattro ruote motrici o usate motori a coppia più elevata, i soli condensatori di bulk possono non bastare a evitare il cedimento di tensione con batterie stanche. La soluzione ingegneristica definitiva è separare le linee di alimentazione in alimentazione logica e alimentazione motori.

ConfigurazioneProControIdeale per
Pacco singolo con condensatore di bulkLeggero, meno batterie da gestire in classeAncora soggetto a reset se le batterie sono quasi scaricheInseguitori di linea 2WD leggeri
Doppio pacco batteriaNessuna interferenza dei motori sul microcontrollorePeso in più, due set di batterie da caricareGare di robotica, telai pesanti
Buffer con convertitore buckUn solo pacco batteria, tensione regolata e pulitaRichiede la taratura della tensione di uscita con un multimetroProgetti avanzati di scuola secondaria

Per cablare correttamente due alimentazioni distinte:

  1. Alimentate il microcontrollore (Arduino, micro:bit o ESP32) con una sorgente dedicata: per esempio un power bank USB da 5 V o una piccola LiPo da 3,7 V con un convertitore boost.
  2. Alimentate il morsetto di potenza motori del driver (spesso indicato con VM o VMS) dal pacco batteria principale dei motori (per esempio un portapile 4×AA o un pacco Li-ion 2S).
  3. Collegate tra loro tutti i fili di massa (GND). Il microcontrollore e il driver motore devono condividere un riferimento di massa comune, altrimenti i segnali logici che comandano direzione e velocità restano flottanti e si comportano in modo erratico.

Rimedio 3: partenza dolce dei motori via software

Spesso si eliminano i riavvii dovuti ai motori senza toccare il saldatore, semplicemente cambiando il modo in cui il codice applica la potenza. In classe gli allievi scrivono di solito codice che passa di colpo da fermo alla velocità massima:

analogWrite(motorPin, 255);

Questa transizione istantanea provoca la massima corrente di spunto. Fate invece salire il duty cycle della modulazione di larghezza di impulso (PWM) nell'arco di 50-100 millisecondi con un semplice ciclo. Accelerare da 0 a 255 in cinque piccoli passi riduce parecchio il picco, mantenendo la tensione della batteria sopra la soglia di brownout del microcontrollore senza rendere il robot visibilmente lento.

Errori di cablaggio in classe che sembrano brownout

Prima di rifare il cablaggio dell'intero telaio, controllate questi tre punti di guasto meccanico tipici degli ambienti scolastici:

  • Breadboard a innesto senza saldature: le linee di alimentazione delle breadboard non possono portare in modo affidabile i picchi da 1,5 A a 2 A assorbiti da due motori CC in rotazione. Portate l'alimentazione dei motori ad alta corrente direttamente su morsettiere a vite o con collegamenti saldati, non attraverso le clip a molla della breadboard.
  • Cavetti sottili: i jumper dupont economici da 28 AWG hanno una resistenza elevata. Quando la corrente dei motori scorre in cavetti sottili, è il filo stesso a far cadere una tensione significativa prima ancora che l'alimentazione arrivi al driver motore.
  • Pile alcaline scariche: man mano che le celle alcaline si scaricano, la loro resistenza interna aumenta in modo drastico. Un pacco batteria che a riposo indica 6,0 V sul multimetro può crollare a 3,2 V sotto un carico di 500 mA. Misurate sempre la tensione della batteria mentre i motori stanno effettivamente cercando di girare.

Se state attrezzando un laboratorio informatico o una squadra da gara con hardware affidabile per la distribuzione dell'alimentazione, moduli driver con filtraggio integrato sono disponibili nello store di Sheen Robotics, oppure come parte dei nostri kit di robotica strutturati tramite Infinity.

#robotica#elettronica#risoluzione dei problemi#didattica STEM

Altri post in Approfondimenti