Encontré una placa más barata que tiene una potencia nominal de 350W 6–60V. Esto significa que puede impulsar el motor del hoverboard impulsado por una batería de 36 V. Este artículo trata sobre cómo se puede usar esa placa para impulsar dos motores de aeropatín usando Arduino Nano. Sin embargo, una vez que conozcas la configuración básica, podrás utilizar prácticamente cualquier microcontrolador como Raspberry Pi Pico, ESP32, Teensy o RPi4 para controlar la velocidad y la dirección.
Componentes necesarios para el proyecto.
- Hoverboard y potencialmente construir el marco del robot encima del hoverboard.
- Arduino Nano
- placa controladora del motor
- Cabeceras de pines, cables, un puente y cabeceras JST adicionales mencionadas en la siguiente sección
Preparación de la placa controladora para su uso
Aunque la placa del controlador es de muy buena calidad, el fabricante no ha facilitado su uso. Para poder usar el tablero correctamente, terminé haciendo dos cambios en el tablero antes de poder usarlo.
- Suelde el encabezado de 2 pines para instalar el puente para habilitar el control PWM no poblado por el fabricante
- Instale un cabezal macho JST para el cabezal de control PWM que no esté poblado por el fabricante
Debe instalar un conector macho de 2 pines en la ubicación que se muestra a continuación. Por lo general, puede obtener un juego de encabezados en Amazon o en cualquier otro lugar y cortar dos pines con una navaja. Este es un cabezal con espaciado estándar de 2,54 mm y está disponible en todas partes.
Intenté rellenar los dos agujeros con soldadura directamente, pero no soy muy bueno soldando, así que terminé dañando la placa. Entonces, la solución final fue soldar un cabezal macho de 2 pines en la parte posterior de la placa y luego instalar el puente estándar para acortar los pines. Esta es una solución mucho más elegante ya que siempre puedes quitar el puente de plástico para probar la placa usando el potenciómetro que está en la placa.
La parte complicada aquí fue que tuve que desenroscar el gran disipador de calor de aluminio que está en la parte posterior de la placa y solo entonces pude acceder a la ubicación para soldar el cabezal de 2 pines.
El segundo paso es instalar el encabezado de control PWM al lado del encabezado del codificador [marcado en el rectángulo negro arriba]. El fabricante suministra el cabezal del codificador preinstalado como cabezal macho estilo JST en la placa. Sin embargo, no preinstalaron el encabezado de control PWM y puede ver que esos 5 pines al lado del encabezado del codificador son solo orificios vacíos despoblados por los pines del encabezado. Creo que el paso de estos agujeros en particular es de 1 mm o 1,5 mm [no el estándar de 2,54 mm]. Este es un kit que viene con cables pre-engarzados para que puedas construir tus propios conectores. Intenté instalar un cabezal de clavija macho estándar, pero no eran lo suficientemente altos como para tener un agarre adecuado con los cables Dupont y seguían saliendo durante las pruebas, por lo que una mejor solución sería instalar un cabezal estilo JST adecuado que bloquee los cables.
Solo usaremos los pines P y S del encabezado de control PWM, por lo que si cree que instalar el encabezado JST es una exageración y puede soldar el cable directamente a los pines P y S, puede hacerlo. Sin embargo, debes saber que no es una solución muy sólida y podrías terminar dañando la placa.
Cableado y programación
Seguí las instrucciones detalladas del artículo del blog de MAD-EE para controlar primero un solo motor desde un Arduino Nano y luego modifiqué el código para controlar dos motores. Todos sus ejemplos de código funcionaron sin problemas en el primer intento. Simplemente puede copiar y pegar el código de su sección de código final y asegurarse de que sus números de pin sean los mismos que en el código antes de cargar el código en Arduino Nano.
Aquí está el diagrama de cableado con el que terminé para que Arduino Nano controle ambos controladores de motor.
Fue difícil mostrar los cables trifásicos [Ma, Mb, Mc] desde el motor hasta el terminal de tornillo superior izquierdo marcado por una línea roja gruesa, así que asegúrese de conectar los cables de fase apropiados desde el motor del cubo a los pines adecuados en ZS-X11H.
Lo mismo ocurre con los cables del codificador que van desde el motor al conector JST del codificador que está preinstalado en el junta marcado por una línea púrpura gruesa en el diagrama de cableado. Hay 5 cables para el codificador Hall del motor de cubo: Gnd, Hc, Hb, Ha, 5v.
Además, las conexiones de Arduino Nano a ambas placas están marcadas con diferentes colores y etiquetas de texto en el diagrama y también proporcioné dos tablas de asignación de pines para el controlador del motor izquierdo y derecho a los pines Arduino.
Durante esta prueba, Arduino Nano se alimenta mediante el cable USB de la computadora portátil y usamos el mismo cable para alimentar y cargar el código Arduino.
Pruebas
Prueba Básica para hacer funcionar motores sin Control PWM
Una vez que haya completado la preparación de la placa y terminado de cablear todo, podemos probar el funcionamiento de los motores sin necesidad de programar a través de Arduino. Para hacer eso, primero asegúrese de que todas las placas estén apagadas.
- Retire el puente que pone en cortocircuito los pines de habilitación de PWM [encabezado de 2 pines que soldó durante la preparación]
- Asegúrese de que el potenciómetro azul en el tablero esté girado completamente en el sentido contrario a las agujas del reloj tanto como pueda. [en el sentido de las agujas del reloj aumenta la velocidad y en el sentido contrario a las agujas del reloj disminuye la velocidad, por lo que queremos comenzar desde cero].
- Asegúrate de haber apoyado el hoverboard sobre un soporte o una caja resistente para que, si las ruedas giran, no se salga de la mesa y dañe algo.
En este punto, puede encender la batería y girar lentamente el potenciómetro azul hacia la izquierda. placa controladora de motores agujas del reloj. El motor izquierdo debería comenzar a girar lentamente y usted puede aumentar y disminuir lentamente la velocidad. Esta prueba se puede realizar un motor a la vez. Entonces, una vez que haya terminado de probar el motor izquierdo, baje la velocidad a cero y ejecute la misma prueba en el controlador del motor derecho girando su potenciómetro.
Una vez completada la prueba, gire el potenciómetro azul de ambas placas a la posición cero. En este punto, sabemos que todas las conexiones de alimentación y del codificador son correctas y que los motores se pueden controlar correctamente.
Tenga en cuenta que esta placa requiere que los cables del codificador también estén enchufados, de lo contrario los motores no girarán.
También puede instalar nuevamente el puente de control PWM antes de que podamos ejecutar las pruebas de control PWM.
Prueba de control PWM
Antes de ejecutar esta prueba, asegúrese de estas cosas:
- El potenciómetro azul en ambas tarjetas se gira completamente en sentido antihorario, que es la posición cero.
- El puente de habilitación de control PWM está instalado en el encabezado de 2 pines
- Los cables del codificador están conectados con el motor correcto para cada tarjeta.
En este punto, puede conectar el cable USB de la computadora portátil a Arduino y cargar el código desde Sección de código final del artículo del blog MAD-EE.
En el código presta atención a estas líneas en la parte superior. Estos números de clavija se asignan a nuestro motor del cubo derecho, por lo que cuando ejecute la prueba, moverá solo el motor del lado derecho. Puede cambiar los números de clavija aquí a los números de clavija del motor izquierdo de las tablas y podrá probar el motor izquierdo de la misma manera. Sin embargo, este código de ejemplo sólo hace funcionar un motor a la vez.
//MOTOR DERECHO
constante int PIN_DIR = 2; // Señal de dirección del motor
constante int PIN_BRAKE = 3; // Señal de freno del motor (activo bajo)
constante int PIN_PWM = 9; // control de velocidad del motor PWM
constante int PIN_SPEED = 12; // Salida de pulso de velocidad SC desde la placa RioRand
//MOTOR IZQUIERDO
constante int PIN_DIR = 4; // Señal de dirección del motor
constante int PIN_BRAKE = 5; // Señal de freno del motor (activo bajo)
constante int PIN_PWM = 10; // control de velocidad del motor PWM
constante int PIN_SPEED = 11; // Salida de pulso de velocidad SC desde la placa RioRand
Después de cargar el código en Arduino, inicie la ventana del monitor serie y asegúrese de configurar la velocidad en baudios en 115200 como se esperaba en el código; de lo contrario, verá caracteres basura.
En este punto, puede ejecutar los siguientes comandos en el monitor serie [asegúrese de que el carácter de nueva línea esté configurado como retorno de carro antes de ingresar comandos en el monitor serie].
Para arrancar el motor a baja velocidad introduzca:
PWM, 10
Esto hará funcionar cualquier motor que esté probando con los números de pin en el código para un ciclo de trabajo de 10. Puede aumentar o disminuir la velocidad ingresando un ciclo de trabajo diferente o detener el motor ingresando un ciclo de trabajo de 0.
También puedes romper el motor ingresando el comando break:
FRENO, 1
El comando de interrupción con 1 habilitará la interrupción, lo que significa que el motor se detendrá y el comando de interrupción con 0 deshabilitará la interrupción, lo que significa que la interrupción está desactivada y el motor puede moverse. Sin embargo, si previamente envió un comando de interrupción con 1 y luego envía un comando PWM con un ciclo de trabajo distinto de cero, el motor no se moverá hasta que ejecute otro comando de interrupción con 0.
El último comando es DIR o comando de dirección. Puede cambiar la dirección de rotación del motor ejecutando:
DIR, 1
Esto moverá el motor hacia adelante y si cambia la dirección enviando 0, se moverá hacia atrás.
Tenga cuidado al cambiar la dirección del motor mientras funciona a alta velocidad en una dirección. Siempre detenga o rompa el motor antes de cambiar la dirección para evitar causar daños a su configuración.
Si está interesado en controlar ambos motores al mismo tiempo, puede consultar el código en este repositorio que le permite enviar comandos PWM a ambos motores al mismo tiempo. Sin embargo, esto requiere algunos cambios de código adicionales y actualmente se está trabajando en ello. Compartiré los detalles cuando haya probado con éxito el código.
Ha sido un viaje doloroso con muchas paradas y comienzos para encontrar un controlador de motor que pueda usarse para controlar motores de aeropatín que no vaya a arruinar el banco y que pueda usarse para convertir un aeropatín en un robot controlado por ROS2 y esta es otra pequeño paso en ese viaje.
Muchas gracias a MAD-EE por compartir videos y códigos de YouTube en el dominio público. Ha sido de gran ayuda. Además, gracias a la gente de la comunidad de robótica/ROS por compartir ideas para mantener este proyecto en marcha.
Espero que esto haya sido útil. ¡¡Diviértete construyendo!!