Logótipo sheen.bot

Perspetivas

Porque é que o seu robô de duas rodas não anda a direito

20/08/2026·Sheen Robotics
Porque é que o seu robô de duas rodas não anda a direito

Motores idênticos não giram a velocidades idênticas. Eis porque falham os acertos de potência fixados no código e como usar encoders nas rodas para seguir mesmo em linha reta.

Quando se envia um sinal com 100% de ciclo de trabalho a dois motores DC idênticos num robô de tração diferencial, o robô curva quase sempre para a esquerda ou para a direita. Isto acontece porque dois motores DC produzidos em série nunca são elétrica ou mecanicamente idênticos, e pequenas variações no atrito interno, na força magnética e na aderência das rodas produzem velocidades de rotação diferentes para exatamente a mesma entrada elétrica.

Numa sala de aula ou num workshop de competição, este desvio é um dos primeiros obstáculos frustrantes com que os alunos se deparam. Perceber porque acontece — e porque é que os truques rápidos em software não o resolvem — é a ponte entre a robótica de brincar e a engenharia a sério.

A anatomia da variação entre motores

Os pequenos motorredutores de corrente contínua (DC), em especial os motores de passatempo de caixa amarela comuns nos kits educativos, são fabricados com tolerâncias largas. Várias diferenças microscópicas garantem que o motor A se comporta de forma diferente do motor B:

  • Enrolamento das bobinas e resistência interna: o fio de cobre enrolado à volta do induzido varia ligeiramente em comprimento e tensão, criando pequenas diferenças de resistência e de força contraeletromotriz (back-EMF).
  • Força dos ímanes permanentes: os ímanes de ferrite sinterizada têm pequenas variações na densidade do fluxo magnético, alterando o binário produzido.
  • Atrito de contacto das escovas: as escovas mecânicas pressionam o coletor com tensões de mola variáveis, acrescentando um arrasto desigual.
  • Tolerâncias da caixa redutora: as caixas redutoras de engrenagens retas de vários andares ligadas a estes motores sofrem níveis de atrito diferentes consoante a regularidade do perfil dos dentes, o alinhamento dos veios e a distribuição do lubrificante interno.

Mesmo fora do motor, há fatores mecânicos que agravam o problema. Se um pneu de borracha ficar assente 0,5 mm mais para dentro da jante, o seu raio de rolamento efetivo muda. Se o conjunto de baterias do robô ficar 10 mm à esquerda da linha central, a roda esquerda fica sujeita a maior força normal e a maior resistência ao rolamento. O resultado é uma base de tração assimétrica.

Porque é que os «acertos» fixados no código falham sempre

A resposta intuitiva do aluno é equilibrar os motores manualmente no código:

// The standard beginner workaround
motorLeft.setSpeed(255);
motorRight.setSpeed(238); // trim down the faster motor

Isto chama-se controlo em malha aberta: enviar um comando e assumir que o resultado real corresponde ao pedido sem verificar. Embora um acerto manual possa fazer o robô andar a direito durante três metros num chão de linóleo liso com pilhas novas, desfaz-se sempre em condições reais:

  • Curvas de descarga da bateria: à medida que a tensão da bateria cai ao longo de uma aula de 45 minutos, os motores DC não perdem velocidade de forma linear. Um acerto calibrado a 8,2 V vai puxar para o lado assim que o conjunto descer para 7,4 V.
  • Mudanças no atrito da superfície: passar de mosaicos lisos de laboratório para alcatifa comercial de pelo curto altera a resistência ao rolamento de forma desigual entre os dois pneus.
  • Mudanças térmicas: à medida que as caixas redutoras e os enrolamentos aquecem durante o funcionamento contínuo, o atrito interno diminui, alterando a relação de velocidades entre os dois lados.

A solução: realimentação em malha fechada com encoders

Para que um robô ande em linha reta independentemente da tensão da bateria ou da textura do piso, o microcontrolador precisa de medir em tempo real o que as rodas estão realmente a fazer. Isso exige controlo em malha fechada.

A forma mais simples de o conseguir é com encoders rotativos nas rodas. Um encoder é composto por um sensor (habitualmente um interruptor ótico ou um sensor magnético de efeito de Hall) e um elemento rotativo ligado ao veio do motor ou à roda (um disco ranhurado ou um anel magnético multipolar). Sempre que a roda gira, o sensor gera impulsos.

Abordagem de controloMecanismoComportamento com bateria fracaComportamento numa superfície nova
Malha aberta (PWM fixo)Assume motores idênticosDesvia-se de forma imprevisívelDesvia-se de forma imprevisível
Malha aberta (acerto fixado no código)Compensa manualmente um motorPerde a calibraçãoPerde a calibração
Malha fechada (realimentação por encoder)Ajusta dinamicamente a potência com base nos impulsos medidos nas rodasMantém a direção a direitoMantém a direção a direito

Implementar controlo proporcional de velocidade

Não é preciso uma formação avançada em cálculo para implementar um controlador em malha fechada funcional. Um ciclo de controlo proporcional (P) simples, a correr a cada 50 a 100 milissegundos, chega para a robótica de sala de aula.

Em vez de comandar potência bruta ao motor, o programa mede as rotações das rodas num intervalo de tempo fixo e ajusta a potência para eliminar a diferença:

  1. Conte os impulsos do encoder nas duas rodas numa janela fixa (por exemplo, a cada 50 ms).
  2. Calcule o erro: error = leftTicks - rightTicks.
  3. Se error > 0, a roda esquerda está a girar mais depressa do que a direita. Baixe ligeiramente o PWM do motor esquerdo, aumente ligeiramente o PWM do motor direito, ou aplique um fator de correção proporcional à dimensão do erro: correction = error * Kp (em que Kp é uma constante de ganho afinada).
  4. Reponha os contadores de impulsos a zero e repita.

Se está a construir o seu próprio currículo de sala de aula ou a escolher plataformas de hardware, optar por kits que incluam microcontroladores com capacidade de interrupções por hardware e encoders magnéticos integrados — como os ecossistemas modulares suportados em plataformas como o Sheen Canvas ou as plataformas de robótica do Infinity — poupa dezenas de horas de frustração aos alunos. Desloca o foco da aprendizagem de combater defeitos mecânicos para dominar a realimentação por sensores e a teoria de controlo.

A conclusão essencial

As imperfeições mecânicas não são defeitos a esconder com remendos temporários em software; são a realidade fundamental da computação física. Ensinar os alunos a medir o que os motores realmente fazem, usando encoders e algoritmos em malha fechada, transforma uma fonte comum de frustração em oficina numa lição prática e acessível sobre sistemas de controlo do mundo real.

#robótica#motores#controlo pid#ensino STEM#eletrónica

Mais Perspetivas