Porque é que o seu robô reinicia quando os motores arrancam (e como resolver)

O seu microcontrolador reinicia porque o pico inicial de corrente dos motores CC faz cair a tensão da bateria abaixo do seu limite de funcionamento. Eis como resolver os resets por subtensão na sala de aula.
Se o seu robô executa o código de arranque, acende os LED e depois reinicia no preciso momento em que o código de tração é executado, o microcontrolador está a sofrer um reset por subtensão (brownout). Os motores não estão a queimar o chip; estão a deixá-lo sem tensão.
Quando um motor de corrente contínua (CC) arranca a partir da imobilização, exige um pico enorme de corrente durante uma fração de milissegundo. Se a fonte de alimentação não conseguir fornecer essa corrente instantaneamente, a tensão no circuito afunda-se. No momento em que essa tensão desce abaixo do limiar seguro de funcionamento do microcontrolador — cerca de 2,7 V para um chip de 3,3 V como o ESP32, ou 4,3 V para um Arduino Uno normal de 5 V — o processador reinicia para proteger a memória de corrupção. Assim que o motor pára de rodar durante o reset, a tensão recupera, o código arranca outra vez e o ciclo repete-se indefinidamente.
A mecânica de um brownout
Para resolver isto de forma fiável, ajuda perceber por que razão a tensão cai. Há duas realidades físicas que provocam reinícios causados pelos motores nos kits de robótica escolar:
- Corrente de arranque: um motor CC parado praticamente não tem força contra-eletromotriz (back-EMF). Do ponto de vista elétrico, ligar um motor é quase idêntico a colocar um curto-circuito aos terminais da fonte durante uma fração de segundo. Um motorredutor amarelo de hobby que consome 150 mA em regime pode facilmente exigir 1,2 A a 1,5 A no instante em que começa a rodar.
- Resistência interna da bateria: todas as baterias têm resistência interna. Quando se pede a quatro pilhas alcalinas AA ou a um par de células 18650 que forneçam instantaneamente 2 A a 3 A a dois motores de tração, a tensão aos terminais da bateria cai em proporção direta a essa resistência interna. Fios de ligação finos e molas de contacto dos suportes de pilhas agravam muito esta quebra de tensão.
Quando alimenta um microcontrolador e um driver de motor em ponte H (como um L298N, DRV8833 ou TB6612FNG) a partir do mesmo pacote de baterias sem qualquer buffer, essa quebra de tensão vai direta para a linha de alimentação do processador. O microcontrolador interpreta a queda como uma falha de energia e reinicia.
Solução 1: acrescentar condensadores de desacoplamento em massa
A correção de hardware mais simples que não obriga a acrescentar um segundo pacote de baterias é acrescentar capacidade em massa junto do driver do motor.
Um condensador funciona como um reservatório minúsculo e extremamente rápido de carga elétrica. Quando o motor arranca e exige um pico súbito de corrente, o condensador descarrega para o driver do motor antes de a tensão da bateria principal ter tempo de colapsar por completo.
- Coloque um condensador eletrolítico de 470 µF a 1000 µF diretamente aos terminais de alimentação de alta corrente do driver do motor (Motor VCC e GND).
- Mantenha os terminais do condensador tão curtos quanto possível. Se estiver três filas de breadboard mais à frente, a resistência das pistas de encaixe da breadboard vai reduzir a sua eficácia.
- Garanta a polaridade correta: a risca negativa do condensador tem de ligar à massa (GND) e a perna positiva liga à alimentação.
Para o ruído elétrico de alta frequência gerado pelas escovas do motor, solde também um pequeno condensador cerâmico de 0,1 µF (100 nF) diretamente aos dois terminais metálicos de cada motor CC.
Solução 2: separar completamente as linhas de alimentação
Se estiver a construir robôs com tração às quatro rodas ou a usar motores de binário mais elevado, os condensadores de massa por si só podem não evitar a quebra de tensão com baterias gastas. A solução definitiva de engenharia é separar as linhas de alimentação em alimentação da lógica e alimentação dos motores.
| Configuração | Vantagens | Desvantagens | Mais indicado para |
|---|---|---|---|
| Pacote único com condensador de massa | Leve, menos baterias para gerir na aula | Continua sujeito a reinícios se as baterias estiverem quase vazias | Seguidores de linha 2WD leves |
| Dois pacotes de baterias | Zero interferência dos motores no microcontrolador | Peso extra, dois conjuntos de baterias para carregar | Competições de robótica, chassis pesados |
| Buffer com conversor buck | Um só pacote de baterias, tensão regulada e limpa | Exige afinar a tensão de saída com um multímetro | Projetos avançados do ensino secundário |
Para ligar corretamente duas fontes de alimentação:
- Alimente o microcontrolador (Arduino, micro:bit ou ESP32) a partir de uma fonte dedicada — por exemplo, um powerbank USB de 5 V ou uma pequena LiPo de 3,7 V com conversor elevador.
- Alimente o terminal de potência do driver do motor (muitas vezes identificado como VM ou VMS) a partir do pacote de baterias principal dos motores (por exemplo, um suporte de 4×AA ou um pacote Li-ion 2S).
- Ligue todos os fios de massa (GND) entre si. O microcontrolador e o driver do motor têm de partilhar uma referência de massa comum, caso contrário os sinais lógicos que controlam o sentido e a velocidade ficam à deriva e comportam-se de forma errática.
Solução 3: arranque suave dos motores por código
Muitas vezes consegue eliminar os reinícios provocados pelos motores sem pegar num ferro de soldar, apenas mudando a forma como o código aplica potência. Nas aulas, os alunos escrevem tipicamente código que salta instantaneamente da imobilização para a velocidade máxima:
analogWrite(motorPin, 255);
Esta transição instantânea provoca a corrente de arranque máxima. Em vez disso, aumente progressivamente o ciclo de trabalho da modulação por largura de impulso (PWM) ao longo de 50 a 100 milissegundos, com um ciclo simples. Acelerar de 0 para 255 em cinco pequenos passos reduz significativamente o pico de corrente, mantendo a tensão da bateria acima do limiar de brownout do microcontrolador sem tornar o robô visivelmente lento.
Erros de ligação na sala de aula que imitam brownouts
Antes de refazer a cablagem de todo o chassis, verifique estes três pontos de falha mecânica comuns em ambiente escolar:
- Breadboards de encaixe sem soldadura: as linhas de alimentação de uma breadboard não conseguem transportar de forma fiável os picos de 1,5 A a 2 A exigidos por dois motores CC a rodar. Encaminhe a alimentação de alta corrente dos motores diretamente por bornes de parafuso ou ligações soldadas, e não pelas molas da breadboard.
- Fios de ligação finos: os fios dupont baratos de 28 AWG têm resistência elevada. Quando a corrente do motor passa por fios finos, o próprio fio provoca uma queda de tensão significativa antes de a energia sequer chegar ao driver do motor.
- Pilhas alcalinas gastas: à medida que as células alcalinas se descarregam, a sua resistência interna aumenta drasticamente. Um pacote de pilhas que marca 6,0 V no multímetro em repouso pode cair para 3,2 V com uma carga de 500 mA. Meça sempre a tensão da bateria enquanto os motores estão efetivamente a tentar rodar.
Se está a equipar uma sala de informática ou uma equipa de competição com hardware fiável de distribuição de energia, há módulos de driver com filtragem integrada na loja da Sheen Robotics, ou integrados nos nossos kits estruturados de robótica através da Infinity.



