Motor DC con Encoder
El motorreductor DC GA25-371 con encoder y caja reductora sirve para aplicaciones de control de velocidad y posición en lazo cerrado, como robots móviles, servomotores DC y cintas transportadoras. Con un voltaje nominal de 12V, el motor alcanza una velocidad de 170 RPM. La caja reductora metálica reduce la velocidad y aumenta el torque, mientras que el encoder de cuadratura, con dos sensores de efecto Hall, proporciona información precisa sobre la velocidad y dirección del motor.
Para controlar el motor, se recomienda usar un driver de potencia (como el L298N, o BTS7960) y una fuente de alimentación externa de al menos 2A, como la fuente de 12 V 2 A. Para dos motores o más, la fuente switching 12 V 5 A da más margen. El encoder genera pulsos digitales a partir de un disco magnético multipolo, permitiendo la detección precisa de la posición y sentido de giro. Compatible con microcontroladores como Arduino, PIC, y Raspberry Pi.
Especificaciones
| Modelo | GA25-371 |
| Voltaje del motor | 12 V DC |
| Velocidad | 170 RPM a 12 V |
| Encoder | Hall de cuadratura, 11 pulsos por vuelta del eje del motor (antes de la caja) |
| Pull up del encoder | 5 kΩ en A y B |
| Corriente a 12 V | 0,1 A en vacío y 0,15 A con carga (medidas en una unidad) |
| Eje de salida | 4 mm con cara plana (tipo D), 9,5 mm de largo |
| Caja reductora | Metálica, 25 mm de diámetro |
| Largo del motor | 60 mm con encoder, sin contar el eje |
| Peso | 95 g |
| Incluye | Motor con cable de 6 hilos, conector JST y puntas estañadas |
Preguntas frecuentes
¿Qué ventaja tiene este motor con encoder frente a un motor DC simple?
El encoder te dice cuánto gira el motor y hacia dónde. Un motor DC simple trabaja en lazo abierto. Le das voltaje y no sabes si gira a la velocidad que esperas, porque la carga, la batería o una pendiente la cambian. Con el encoder mides el giro y corriges, y eso se llama control en lazo cerrado.
Con los pulsos del encoder mides cuatro cosas.
- La velocidad de giro, contando los pulsos que llegan en un intervalo de tiempo.
- La posición angular del eje, sumando los pulsos.
- El sentido de giro, comparando los canales A y B.
- Si el motor se trabó, porque los pulsos dejan de llegar.
¿Cómo conecto el motor a 12 V y el encoder al mismo tiempo?
Los seis cables salen del mismo conector, en la placa del encoder que va en la parte trasera del motor. Dos alimentan el motor (blanco y rojo) y cuatro son del encoder: azul es VCC, negro es GND, y verde y amarillo son las señales A y B. El motor y el encoder se alimentan por separado.
- Motor. Sus dos cables (blanco y rojo) van a las salidas de un driver, como el L298N o el BTS7960, y el driver se alimenta con una fuente de 12 V de al menos 2 A. El motor nunca va directo a un pin del microcontrolador.
- Encoder. Se alimenta desde el microcontrolador, con 5 V en un Arduino UNO o con 3,3 V en una Raspberry Pi o un ESP32. El fabricante de esta familia de motores (JGA25 370) indica que el encoder funciona con 3,3 V o 5 V. El cable azul (VCC) va a la alimentación, el negro a GND, y el verde y el amarillo (señales A y B) van a dos pines digitales, de preferencia con interrupción.
- Tierra común. Une la GND de la fuente del motor, la del driver y la del microcontrolador. Sin esa unión el driver no interpreta bien las señales de control.
Con 12 V en la alimentación del encoder, el encoder se destruye. Antes de conectar la fuente, identifica los dos cables del motor con un multímetro en la escala de ohms, con todo desconectado. Mide la resistencia entre pares de cables. Los dos del motor son el par que marca la resistencia más baja, porque entre ellos está el bobinado.
¿Puedo usarlo con Raspberry Pi o ESP32?
Sí, con el encoder alimentado a 3,3 V. Los pines GPIO de Raspberry Pi trabajan a 3,3 V, y su documentación oficial advierte que no se usen 5 V en componentes de 3,3 V. Si el encoder va a 5 V y su placa trae resistencias de pull up, las señales A y B llegan a 5 V y pueden dañar esos pines. El ESP32 también trabaja con 3,3 V en sus pines, según la hoja de datos de Espressif.
La placa del encoder de esta unidad trae resistencias de pull up de 5 kΩ en las señales A y B, así que no necesitas agregar otras. El motor sigue conectado a un driver con su fuente de 12 V.
¿Cómo leo la posición y el sentido de giro con un Arduino?
Con interrupciones. El encoder es de cuadratura. Entrega dos señales, A y B, desfasadas 90 grados, y el orden en que cambian indica el sentido de giro.
- Conecta el canal A a un pin con interrupción. En un Arduino UNO son el 2 y el 3.
- Declara los pines de A y B como entradas. La placa ya trae resistencias de pull up de 5 kΩ en A y B, así que INPUT basta, aunque INPUT_PULLUP también funciona.
- Asocia al canal A una interrupción en RISING y, dentro de la rutina, lee el canal B. Con B en 0 el motor gira hacia un lado y con B en 1 hacia el otro. Según el caso, suma o resta 1 a un contador.
- Guarda el contador en una variable volatile long. En un Arduino UNO una variable int llega solo hasta 32767, y con el motor girando seguido el contador pasa ese límite.
Para la velocidad, cuenta los pulsos que llegan en un intervalo fijo, por ejemplo 100 ms, y conviértelos a RPM con los pulsos por vuelta del eje de salida. Si pones interrupciones en CHANGE en los dos canales, cuentas cuatro flancos por pulso y la resolución se multiplica por 4.
¿Qué driver de motor (L298N, BTS7960) debo usar y por qué lo necesito?
Los pines de un microcontrolador no entregan la corriente que pide el motor. El driver toma la energía de una fuente de 12 V de al menos 2 A, y el microcontrolador le indica la velocidad (con PWM) y el sentido de giro.
- L298N. Controla dos motores y maneja hasta 2 A por canal, según la hoja de datos de ST. Sus transistores le restan entre 1,8 y 3,2 V al voltaje cuando circula 1 A, así que con una fuente de 12 V el motor recibe menos voltaje y gira más lento que conectado directo a 12 V.
- BTS7960. Usa transistores MOSFET, pierde menos voltaje y se calienta menos que el L298N. Cada módulo controla un solo motor, así que para un robot de dos ruedas necesitas dos.
Para un robot de dos ruedas, un L298N mueve los dos motores con una sola placa. Si quieres que el motor reciba casi todo el voltaje de la fuente, usa un BTS7960 por motor.
La especificación dice 11 PPR. ¿Son 11 pulsos por cada vuelta de la rueda?
No. Los 11 pulsos por vuelta (PPR) se cuentan en el eje del motor, antes de la caja reductora. En el eje de salida, donde va la rueda, cada vuelta entrega 11 pulsos multiplicados por la relación de la caja, en cada canal. Si cuentas las subidas y bajadas de los dos canales (decodificación x4), son 44 multiplicados por la relación.
Para conocer la relación de tu unidad, marca el eje de salida y hazlo girar 10 vueltas completas, a mano o con poco PWM, con el encoder alimentado. Cuenta solo las subidas del canal A y divide el total por 110.
¿Qué es un control en lazo cerrado y cómo lo implemento con este motor?
Es un control que mide la salida y corrige la entrada. El encoder mide la velocidad o la posición real, el programa la compara con el valor que buscas (setpoint) y ajusta el PWM que va al driver para achicar la diferencia, que se llama error.
En un microcontrolador lo más común es un control PID, que suma tres términos.
- P, proporcional. Corrige según qué tan lejos estás del objetivo.
- I, integral. Corrige el error que se acumula en el tiempo, por ejemplo cuando una pendiente frena al robot.
- D, derivativo. Reacciona a la rapidez con que cambia el error y frena el motor antes de que se pase del objetivo.
























































































