Por qué tu robot de dos ruedas no avanza recto

Dos motores idénticos no giran a la misma velocidad. Por qué fallan los ajustes de potencia fijados a mano y cómo usar encoders de rueda para avanzar realmente en línea recta.
Cuando envías una señal con un ciclo de trabajo del 100 % a dos motores de corriente continua idénticos en un robot de tracción diferencial, el robot casi siempre se desvía hacia la izquierda o hacia la derecha. Esto ocurre porque dos motores de corriente continua fabricados en serie nunca son idénticos ni eléctrica ni mecánicamente, y pequeñas variaciones en la fricción interna, la fuerza magnética y la adherencia de las ruedas producen velocidades de giro distintas ante exactamente la misma entrada eléctrica.
En un aula o en un taller de competición, esta desviación es uno de los primeros obstáculos frustrantes con los que se topan los alumnos. Entender por qué ocurre —y por qué los apaños rápidos por software no lo resuelven— es el puente entre la robótica de juguete y la ingeniería de verdad.
Anatomía de la variabilidad de los motores
Los motorreductores pequeños de corriente continua (CC), en especial los motores de aficionado de carcasa amarilla habituales en los kits educativos, se fabrican con tolerancias amplias. Varias diferencias microscópicas garantizan que el motor A se comporte de forma distinta al motor B:
- Bobinado y resistencia interna: el hilo de cobre bobinado alrededor del inducido varía ligeramente en longitud y tensión, lo que crea pequeñas diferencias de resistencia y de fuerza contraelectromotriz (FCEM).
- Fuerza del imán permanente: los imanes de ferrita sinterizada presentan pequeñas variaciones en la densidad de flujo magnético, lo que altera el par entregado.
- Fricción de las escobillas: las escobillas mecánicas presionan contra el colector con una tensión de muelle variable, lo que añade un rozamiento desigual.
- Tolerancias de la reductora: las reductoras de engranajes rectos de varias etapas acopladas a estos motores sufren niveles de fricción distintos según la regularidad del perfil de los dientes, la alineación de los ejes y el reparto del lubricante interno.
Incluso fuera del propio motor, hay factores mecánicos que agravan el problema. Si un neumático de goma queda montado 0,5 mm más adentro en la llanta, cambia su radio de rodadura efectivo. Si el pack de baterías del robot queda 10 mm a la izquierda del eje central, la rueda izquierda soporta una fuerza normal mayor y una resistencia a la rodadura mayor. El resultado es una base de tracción asimétrica.
Por qué los «ajustes» fijados a mano siempre fallan
La reacción intuitiva del alumno es equilibrar los motores a mano en el código:
// El apaño habitual de principiante\nmotorLeft.setSpeed(255);\nmotorRight.setSpeed(238); // rebajar el motor más rápidoEsto se conoce como control en lazo abierto: enviar una orden y dar por supuesto que el resultado en el mundo real coincide con lo pedido sin comprobarlo. Un ajuste manual puede lograr que el robot avance recto tres metros sobre un suelo de linóleo liso y con pilas nuevas, pero se desmorona sin falta en condiciones reales:
- Curvas de descarga de la batería: a medida que la tensión cae a lo largo de una clase de 45 minutos, los motores de corriente continua no pierden velocidad de forma lineal. Un ajuste calibrado a 8,2 V tirará hacia un lado en cuanto el pack baje a 7,4 V.
- Cambios de fricción en la superficie: pasar de las baldosas lisas del aula a una moqueta comercial de pelo corto altera la resistencia a la rodadura de forma desigual en ambos neumáticos.
- Cambios térmicos: a medida que las reductoras y los bobinados se calientan con el funcionamiento continuo, la fricción interna baja y cambia la relación de velocidades entre ambos lados.
La solución: realimentación en lazo cerrado con encoders
Para que un robot avance en línea recta independientemente de la tensión de la batería o de la textura del suelo, el microcontrolador necesita medir en tiempo real lo que están haciendo realmente las ruedas. Eso exige control en lazo cerrado.
La forma más sencilla de conseguirlo son los encoders rotativos de rueda. Un encoder consta de un sensor (normalmente un interruptor óptico o un sensor magnético de efecto Hall) y un elemento giratorio unido al eje del motor o a la rueda (un disco ranurado o un anillo magnético multipolar). Cada vez que la rueda gira, el sensor emite pulsos.
| Enfoque de control | Mecanismo | Comportamiento con la batería baja | Comportamiento en una superficie nueva |
|---|---|---|---|
| Lazo abierto (PWM fijo) | Supone motores idénticos | Se desvía de forma imprevisible | Se desvía de forma imprevisible |
| Lazo abierto (ajuste fijado a mano) | Compensa un motor manualmente | Pierde la calibración | Pierde la calibración |
| Lazo cerrado (realimentación por encoder) | Ajusta la potencia de forma dinámica según los pulsos medidos en las ruedas | Mantiene el rumbo recto | Mantiene el rumbo recto |
Cómo implementar un control proporcional de velocidad
No hace falta un nivel avanzado de cálculo para implementar un controlador en lazo cerrado que funcione. Un bucle de control proporcional (P) básico que se ejecute cada 50 o 100 milisegundos basta para la robótica de aula.
En lugar de ordenar una potencia bruta al motor, tu programa mide las vueltas de rueda en un intervalo fijo y ajusta la potencia para eliminar la diferencia:
- Cuenta los pulsos del encoder de ambas ruedas en una ventana fija (por ejemplo, cada 50 ms).
- Calcula el error:
error = leftTicks - rightTicks. - Si
error > 0, la rueda izquierda gira más rápido que la derecha. Reduce ligeramente el PWM del motor izquierdo, aumenta ligeramente el del derecho o aplica un factor de corrección proporcional al tamaño del error:correction = error * Kp(dondeKpes una constante de ganancia ajustada). - Pon a cero los contadores de pulsos y repite.
Si estás creando tu propio currículo de aula o buscando plataformas de hardware, elegir kits que incluyan microcontroladores con interrupciones por hardware y encoders magnéticos integrados —como los ecosistemas modulares admitidos en plataformas como Sheen Canvas o las plataformas de robótica de Infinity— ahorra decenas de horas de frustración al alumnado. Desplaza el foco del aprendizaje desde pelearse con defectos mecánicos hacia dominar la realimentación por sensores y la teoría de control.
La idea clave
Las imperfecciones mecánicas no son defectos que haya que esconder con parches temporales de software; son la realidad fundamental de la computación física. Enseñar a los alumnos a medir la salida real de los motores con encoders y algoritmos en lazo cerrado convierte una fuente habitual de frustración en el taller en una lección práctica y accesible sobre sistemas de control del mundo real.



