En este tutorial aprenderás a utilizar los Motores Direct-Drive Hub M0601 de DFRobot, diseñados para proyectos de robots móviles AMR y AGV que requieren movimientos precisos, buena potencia y control inteligente. Cada motor integra un motor brushless BLDC, un controlador servo con tecnología FOC, un encoder de alta resolución y una interfaz de comunicación RS485, lo que permite controlar y supervisar su funcionamiento sin utilizar controladores externos complejos.
A lo largo del tutorial aprenderás a establecer comunicación entre el motor y una computadora mediante un Convertidor USB a RS485 CH340. También utilizarás el software Serial Port Utility para enviar comandos, comprobar el sentido de giro y la velocidad del motor, consultar su ID y conocer los principios básicos de su protocolo de comunicación RS485.
INTRODUCCIÓN
Los Motores Direct-Drive Hub M0601 de DFRobot son una solución de accionamiento diseñada especialmente para proyectos de robótica móvil, donde se requiere una combinación de precisión, potencia, control inteligente y facilidad de integración. A diferencia de un motor convencional, el M0601 no es solamente una rueda motriz; es un sistema integrado que combina en un solo módulo un motor brushless, un controlador servo con FOC, un encoder de alta resolución y una interfaz de comunicación RS485. Gracias a esta integración, es posible controlar el movimiento del motor de una forma más precisa y profesional sin depender de drivers externos complejos.
En muchos proyectos de robótica móvil se suelen utilizar motores DC con caja reductora, motores brushless con ESC o motores con encoder externo. Aunque estas opciones funcionan para prototipos básicos, normalmente requieren más componentes, más cableado y una etapa adicional de control para lograr un movimiento estable. En cambio, los motores Direct-Drive Hub M0601 ya integran gran parte de esta electrónica, lo que reduce la complejidad del sistema y facilita el desarrollo de robots más compactos. Esto resulta especialmente útil cuando se busca construir plataformas móviles donde el control de velocidad, posición o torque sea importante.
Otra diferencia importante es que el M0601 utiliza una arquitectura de accionamiento directo, también conocida como Direct-Drive. Esto significa que la rueda forma parte del propio motor, eliminando la necesidad de transmisiones mecánicas externas como engranes, bandas o poleas. Al reducir estos elementos, también se disminuyen las pérdidas mecánicas, las holguras, el mantenimiento y el ruido. Como resultado, el robot puede tener una respuesta más suave, mejor control de movimiento y una estructura mecánica más limpia.
Además, el uso de comunicación RS485 permite controlar uno o varios motores mediante un bus de comunicación robusto, ideal para sistemas embebidos y aplicaciones móviles. En lugar de controlar el motor con señales PWM simples, el usuario puede enviar paquetes de datos para definir velocidad, posición, sentido de giro, freno o consultar información del estado del motor. Esto abre la puerta a proyectos más avanzados donde el controlador principal necesita conocer el comportamiento del motor en tiempo real.
Gracias a estas características, los Motores Direct-Drive Hub M0601 son una excelente opción para desarrollar robots móviles diferenciales, plataformas AMR, vehículos AGV, robots de inspección, bases móviles para investigación, prototipos educativos, sistemas de navegación autónoma y robots con integración de sensores como LiDAR, cámaras, IMU o módulos de comunicación inalámbrica. Su diseño compacto y su control integrado permiten pasar de una prueba básica de movimiento a una arquitectura más completa para robótica inteligente.
MATERIALES
Para realizar este tutorial utilizaremos los siguientes materiales:
- M0601 Motor con Rueda para AGV con Servo FOC y Encoder
- Convertidor USB a RS485 Chip CH340 con Protección
- Módulo USB-C PD HUSB238 Fuente Variable
- Cable USB Tipo C 3A
DESARROLLO
Antes de comenzar a controlar los Motores Direct-Drive Hub M0601, es importante entender que su funcionamiento es diferente al de un motor DC convencional. Estos motores no se controlan directamente mediante señales PWM, ya que incorporan su propio sistema electrónico de control.
Para familiarizarte con su sistema de comunicación y comprobar que las conexiones funcionan correctamente, se recomienda realizar lo siguiente:
Prueba rápida con Convertidor USB a RS485
Para comenzar a trabajar con los Motores Direct-Drive Hub M0601 primero hay que establecer comunicación directamente desde la computadora utilizando el Convertidor USB a RS485. Esta prueba es ideal para verificar que el motor funciona correctamente, enviar comandos básicos y comprender cómo se comunica mediante el protocolo RS485 antes de integrarlo con una tarjeta de desarrollo.
Para esta prueba utilizaremos el software Serial Port Utility, una herramienta de depuración serial que permite enviar y recibir datos en formato HEX. Esto es importante porque el M0601 no recibe instrucciones en texto como speed 50, sino paquetes de datos de 10 bytes.
Con esta prueba rápida aprenderás:
- Verificar que el motor enciende correctamente.
- Confirmar que la comunicación RS485 funciona.
- Consultar el ID del motor.
- Cambiar el modo de operación.
- Enviar comandos de velocidad.
- Detener el motor.
- Aplicar freno.
- Consultar el estado del motor.
- Comprender la estructura básica de los paquetes de comunicación.
Antes de realizar las pruebas de movimiento, considera lo siguiente:
- Coloca el motor sobre una base estable.
- No sujetes la rueda con la mano mientras esté energizada.
- Comienza con velocidades bajas, como 30 o 50 RPM.
- Verifica la polaridad de alimentación antes de encender.
- Revisa que las líneas A y B estén correctamente conectadas.
- Utiliza el modo HEX en Serial Port Utility.
- Evita agregar saltos de línea o caracteres extra al enviar los comandos.
- Mantén una forma rápida de desconectar la alimentación.
- Realiza las primeras pruebas sin carga mecánica.
Diagrama de conexión

Conexión del Convertidor USB a RS485 CH340 con el Motor M0601
El convertidor USB a RS485 permitirá que la computadora se comunique con el motor mediante el bus RS485.
Realiza la conexión de la siguiente forma:
| Convertidor USB a RS485 CH340 | Motor M0601 |
| A | RS485 A |
| B | RS485 B |
| GND | GND |
Alimentación del motor
El motor debe alimentarse con una fuente externa. Para esta prueba se utilizará el Módulo USB-C PD HUSB238 Fuente Variable.
La conexión de alimentación es la siguiente:
| Módulo HUSB238 | Motor M0601 |
|---|---|
| VOUT + | VCC |
| GND | GND |
Para esta prueba, configura el Módulo USB-C PD HUSB238 a 18V DC utilizando los interruptores DIP. Se recomienda usar un cargador de carga rápida USB-C PD capaz de entregar 18V o 20V, con una corriente mínima de 1.25A y máxima de 3A.
Antes de conectar el motor al módulo, verifica con un multímetro que el voltaje de salida sea correcto. Si tu cargador no puede entregar 18V, pero sí 20V, también puedes utilizarlo, ya que el motor es compatible con rangos de alimentación similares a una batería LiPo de 5S, la cual entrega aproximadamente 18.5V nominales, con un rango de trabajo de 15V a 21V.
Configuración de Serial Port Utility

Antes de realizar la configuración, descarga e instala el software Serial Port Utility. El proceso es sencillo: solo ingresa al enlace de descarga, instala el programa en tu computadora y ejecútalo como administrador para evitar problemas de permisos al utilizar el puerto serial.
Ya instalado abre el Serial Port Utility y selecciona el puerto COM correspondiente al convertidor USB a RS485. Después configura los parámetros de comunicación de la siguiente manera:
| Parámetro | Valor |
| Puerto | COM del convertidor USB a RS485 |
| Baudrate | 115200 |
| Data bits | 8 |
| Stop bits | 1 |
| Parity | None |
| Flow Type | None |
| Receive Setting | HEX |
| Send Setting | HEX |

Es muy importante activar el modo HEX para enviar y visualizar los datos. El motor no interpreta comandos escritos como texto, por lo que las tramas deben enviarse como valores hexadecimales.
También se recomienda desactivar opciones como Append CR, Append LF, Auto Feed Line o saltos de línea automáticos en el envío, ya que estos pueden agregar bytes extra al final del paquete y provocar que el motor no responda.
Cómo enviar comandos en Serial Port Utility
Para enviar comandos desde Serial Port Utility, primero debes hacer clic en el botón Start para iniciar la comunicación con el puerto serial. Una vez activada la conexión, podrás comenzar a enviar los comandos al motor. En la siguiente imagen se muestra una referencia del botón que debes presionar:

Después solo escribe los comandos en formato hexadecimal, separados por espacios, por ejemplo:
01 74 00 00 00 00 00 00 00 04
No es necesario escribir 0x, comas ni caracteres adicionales.
| Formato correcto | Formato incorrecto |
| 01 64 00 32 00 00 01 00 00 78 | 0x01, 0x64, 0x00, 0x32 |
Estructura básica de los comandos
El M0601 utiliza paquetes de comunicación de 10 bytes. Dependiendo del comando, los bytes pueden representar el ID del motor, el tipo de comando, velocidad, corriente, posición, freno, aceleración o CRC.
Un ejemplo de comando para controlar velocidad es:
01 64 00 32 00 00 01 00 00 78
Donde:
| Byte | Valor | Descripción |
| DATA[0] | 01 | ID del motor |
| DATA[1] | 64 | Comando de control |
| DATA[2] | 00 | Velocidad, byte alto |
| DATA[3] | 32 | Velocidad, byte bajo |
| DATA[4] | 00 | Reservado |
| DATA[5] | 00 | Reservado |
| DATA[6] | 01 | Tiempo de aceleración |
| DATA[7] | 00 | Freno desactivado |
| DATA[8] | 00 | Reservado |
| DATA[9] | 78 | CRC8 |
En este ejemplo, 00 32 corresponde a 50 RPM.
Si quieres consultar más detalles del protocolo de comunicación puedes consultar la siguiente información de DFRobot:
Comandos de prueba
A continuación se muestran algunos comandos básicos que puedes enviar desde Serial Port Utility en modo HEX.
1. Consultar ID del motor
Este comando permite identificar el ID del motor conectado al bus RS485.
C8 64 00 00 00 00 00 00 00 DE
Respuesta esperada de ejemplo:
01 02 00 00 00 00 74 7F 00 FD
El primer byte de la respuesta indica el ID detectado. En este ejemplo, el motor responde con ID 01.
Nota: Para consultar el ID del motor, se recomienda tener conectado únicamente un motor en el bus RS485.
2. Cambiar a modo velocidad
Para controlar el motor mediante RPM, primero se puede cambiar al modo velocidad.
01 A0 00 00 00 00 00 00 00 02
En este comando, el último byte 02 indica el modo de velocidad.
Modos disponibles:
| Valor | Modo |
| 01 | Modo corriente |
| 02 | Modo velocidad |
| 03 | Modo ángulo / posición |
Nota: En el comando de cambio de modo, el último byte corresponde al valor del modo. Para cambiar al modo de ángulo o posición, el motor debe estar girando a una velocidad menor a 10 RPM.
3. Enviar velocidad positiva
Para hacer girar el motor a 50 RPM, envía:
01 64 00 32 00 00 01 00 00 78
En este caso:
01es el ID del motor.64es el comando de control.00 32corresponde a 50 RPM.01indica un tiempo de aceleración suave.78es el CRC calculado.
4. Detener el motor
Para detener el motor enviando una velocidad de 0 RPM, utiliza:
01 64 00 00 00 00 01 00 00 FB
Este comando no corta la alimentación del motor, únicamente solicita velocidad cero.
5. Enviar velocidad negativa
Para hacer girar el motor en sentido contrario a -50 RPM, envía:
01 64 FF CE 00 00 01 00 00 71
El valor FF CE representa -50 en formato entero de 16 bits con signo.
6. Aplicar freno
Para aplicar el freno en modo velocidad, envía:
01 64 00 00 00 00 00 FF 00 D1
En este comando, el valor FF en el byte de freno activa la función de frenado.
7. Consultar estado del motor
Para solicitar información del estado actual del motor, envía:
01 74 00 00 00 00 00 00 00 04
Una respuesta puede verse similar a:
01 02 FF F7 00 00 1B E8 00 5B
Esta respuesta permite conocer información del motor, como el ID, modo de operación, corriente de torque, velocidad, temperatura, ángulo y posibles fallas.
Cómo interpretar una respuesta de estado
Una respuesta de estado tiene una estructura similar a esta:
01 02 FF F7 00 00 1B E8 00 5B
| Byte | Descripción |
| DATA[0] | ID del motor |
| DATA[1] | Modo actual |
| DATA[2] | Corriente de torque, byte alto |
| DATA[3] | Corriente de torque, byte bajo |
| DATA[4] | Velocidad, byte alto |
| DATA[5] | Velocidad, byte bajo |
| DATA[6] | Temperatura del devanado |
| DATA[7] | Ángulo en 8 bits |
| DATA[8] | Valor de falla |
| DATA[9] | CRC8 |
Si el valor de falla es 00, significa que no se reporta una falla activa.
Resultado esperado
Si la conexión es correcta, al enviar comandos como consulta de ID o consulta de estado deberás recibir una respuesta de 10 bytes desde el motor.
Ejemplo al consultar el estado:
TX: 01 74 00 00 00 00 00 00 00 04 RX: 01 02 FF F7 00 00 1B E8 00 5B
Esto indica que la computadora está enviando comandos correctamente por medio del convertidor USB a RS485 y que el motor está respondiendo por el mismo bus.
En cambio, cuando se envían comandos de movimiento como velocidad, paro o freno, es posible que no aparezca una respuesta inmediata. Esto puede ser normal, ya que estos comandos están pensados para ejecutar una acción. Para confirmar que la comunicación de regreso funciona, utiliza los comandos de consulta de ID o estado.
Problemas comunes
El motor no responde
- El motor esté alimentado correctamente.
- El puerto COM seleccionado sea el correcto.
- Serial Port Utility esté configurado a 115200 baudios.
- El modo de envío esté en HEX.
- El modo de recepción esté en HEX.
- Las líneas A y B no estén invertidas.
- El GND de señal esté conectado.
- No se estén enviando caracteres extra como CR, LF o saltos de línea.
El motor gira, pero no recibo respuesta en algunos comandos
Puede ocurrir que algunos comandos de movimiento no muestren una respuesta inmediata. Para validar la comunicación de retorno utiliza comandos como:
01 74 00 00 00 00 00 00 00 04
o:
C8 64 00 00 00 00 00 00 00 DE
Estos comandos permiten consultar el estado y el ID del motor.
El motor gira en sentido contrario
Cambia el signo de la velocidad. Por ejemplo:
01 64 00 32 00 00 01 00 00 78
gira en un sentido, mientras que:
01 64 FF CE 00 00 01 00 00 71
gira en el sentido contrario.
Conclusión
En este tutorial aprendimos a establecer comunicación entre una computadora y el Motor Direct-Drive Hub M0601 mediante un Convertidor USB a RS485 CH340 y el software Serial Port Utility. A partir de esta configuración fue posible verificar el ID del motor, seleccionar su modo de operación, controlar la velocidad y el sentido de giro, detenerlo, aplicar el freno y consultar información sobre su estado. También comprendimos que el M0601 no se controla mediante señales PWM convencionales, sino mediante paquetes de 10 bytes enviados en formato hexadecimal a través de RS485.
Esta prueba representa un paso fundamental antes de integrar el motor en un robot móvil, ya que permite comprobar de forma independiente la alimentación, el cableado y la comunicación. Además, conocer la estructura de los comandos y la interpretación de las respuestas facilita la detección de problemas y proporciona una base sólida para desarrollar sistemas más avanzados con microcontroladores, computadoras de placa única o controladores especializados. Con una configuración adecuada, los motores M0601 pueden utilizarse para crear plataformas AMR, AGV y robots autónomos con movimientos precisos, suaves y controlados.
Quieres aprender a utilizar estos motores con tarjetas de desarrollo te recomendamos seguir el siguiente tutorial:

