Control de velocidad para motores sin escobillas con ESP8266

Aprenda cómo funcionan los motores sin escobillas, cómo controlarlos con PWM usando un controlador de velocidad, un ESP8266 y Ubidots.

¿Qué son los motores sin escobillas?

También conocidos como motores de corriente continua síncronos, son un tipo especial de motor que consta de un estator y un rotor como la mayoría de los motores que existen, pero con una diferencia, los "motores sin escobillas", como su nombre nos indica, no tienen escobillas conectadas eléctricamente entre el estator y el rotor para reducir la fricción, las vibraciones y la ineficiencia.

¿Cómo funcionan?

Estos motores están asociados a un inversor. El inversor alimenta las bobinas secuencialmente, de modo que los polos del rotor se mueven según el campo magnético generado por las bobinas. La velocidad del rotor y su eje dependerán de la velocidad de secuenciación del variador.

Los podemos encontrar normalmente en aviones o coches RC, también drones.

En el siguiente tutorial vamos a aprender sobre los motores Brushless, cómo controlarlos con un ESP8266 (NodeMCU) y Ubidots.

Requisitos de aplicación:

Luego, use 2 cables para conectar Gnd y la señal a la entrada respectiva del ESC.

ESC NodeMCU
Cable trasero GND - Cable negro
Cable blanco D5 - Cable amarillo

En este caso no utilizamos el cable rojo del ESC porque suministra 5v y nuestro NodeMCU trabaja a 3.3v, por lo que podemos dañarlo.

2. Ubidots Creación de dispositivos y variables.

Vaya a la sección Dispositivo de su Ubidots y cree su dispositivo llamado " motor ".

Dentro de tu dispositivo “ motor ”, crea una variable llamada “ velocidad ”.

3. Creación Dashboard y Widgets Ubidots .

Una vez creado nuestro dispositivo y variable, podemos crear un dashboard y un widget para controlar el motor desde un dashboardweb o móvil.

Ahora, crea un widget de control para establecer la velocidad del motor asociado a la variable " velocidad ".

Entonces estará listo para programar y probar su proyecto.

4. Programación con el IDE de Arduino.

1. Si aún no lo ha hecho, descargue el IDE de Arduino.

1a. Abra el IDE y seleccione Archivos -> Preferencias

1b. Agrega la URL a continuación en el URL adicionales del administrador de tableros . Puedes agregar varias URL separándolas con comas.

http://arduino.esp8266.com/stable/paquete_esp8266com_index.json

2. Abra e instale la placa ESP8266 en el Administrador de placas: Herramientas -> Placa -> Administrador de placas
2a. Puede encontrar la placa fácilmente escribiendo "ESP8266" en la barra de búsqueda.

3. Ahora seleccione la placa NodeMCU 1.0 desde Herramientas -> Placa

4. Define o vuelve a verificar el puerto de tu PC con el que se comunica el dispositivo. Ve a Herramientas -> Puerto : -> Selecciona el puerto.

4b. Asegúrese de que la velocidad de carga de su IDE sea 115200. Para ello, vaya a Herramientas -> Velocidad de carga -> 115200.

5. Descarga la biblioteca Ubidots si aún no lo has hecho. Ahora, haz clic en Sketch –> Incluir biblioteca –> Añadir biblioteca .ZIP y selecciona la biblioteca Ubidots

Si se carga correctamente, obtendrá la respuesta: "Biblioteca agregada a sus bibliotecas"

8. Cierre y vuelva a abrir el IDE de Arduino.

Programación del NodeMCU ESP8266:

Una vez que su ESP8266 esté configurado, podemos publicar y obtener datos de Ubidots para controlar su motor sin escobillas.

1. Copia y pega el siguiente código en el IDE de Arduino. No olvides personalizar el SSID y la contraseña del Wi-Fi, así como tu Ubidots .

/**************************************** Incluir bibliotecas ****************************************/ #include "UbidotsESPMQTT.h" #include<Servo.h> /**************************************** Define Constantes *******************************************/ #define TOKEN "............" // Tu TOKEN Ubidots #define WIFINAME "............" //Tu SSID #define WIFIPASS "............" // Tu Wifi Pass #define DEVICE_LABEL "motor" // Pon aquí la etiqueta de tu dispositivo Ubidots #define VARIABLE "speed" // Pon aquí la etiqueta de tu variable Ubidots #define MotorPin D5 //Pin NodeMCU de donde sale la señal para el ESC Servo ESC; //Variable Servo float value=0; // Para almacenar el valor entrante. float MotorSpeed=0; Ubidots client(TOKEN); /**************************************** Funciones Auxiliares *******************************************/ // convierte desde una matriz de caracteres a valor float. float btof(byte * payload, unsigned int length) { char * demo = (char *) malloc(sizeof(char) * 10); for (int i = 0; i < length; i++) { demo[i] = payload[i]; } float value = atof(demo); free(demo); return value; } // Llamada de retorno para manejar la suscripción void callback(char* topic, byte* payload, unsigned int length) { value = btof(payload, length); value = map(value, 0, 100, 0, 180); //Asigna los valores 0-100 del control deslizante al 0-180 para usar la biblioteca servo. ESC.write(value); //Envía el valor (PWM) al ESC } /**************************************** Funciones principales ****************************************/ void setup() { // coloca aquí tu código de configuración, para ejecutarlo una vez:ubidotsSetBroker("industrial.api.ubidotsubidots"); // Establece el broker correctamente para la cuenta comercial client.setDebug(true); // Pasa un valor booleano verdadero o falso para activar los mensajes de depuración Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback);ubidotsSubscribe(DEVICE_LABEL, VARIABLE); //Inserta la fuente de datos y las etiquetas de las variables ESC.attach(MotorPin,1000,2000); } void loop() { // coloca aquí tu código principal, para ejecutarlo repetidamente: if (!client.connected()) { client.reconnect(); client.ubidotsSubscribe(DEVICE_LABEL, VARIABLE); //Insertar la fuente de datos y las etiquetas de las variables } client.loop(); }


Ahora, verifique que su código sea correcto haciendo clic en el botón de verificación en el IDE de Arduino sobre el editor.

Una vez verificado el código, recibirás una respuesta similar a la que aparece a continuación, indicando que está configurado correctamente.

A continuación, debes cargar el código en tu NodeMCU. Para ello, selecciona el icono de la flecha derecha junto al icono de verificación.

Una vez cargado el código, recibirás el siguiente mensaje en el IDE de Arduino:

Sesión de prueba:

Conecte la batería o la fuente de alimentación al ESC.

Luego, todo está listo, solo desliza el control deslizante en tu dashboardweb o móvil.

Resumen:

En esta guía, aprendimos cómo funcionan los motores sin escobillas y cómo controlarlos con el NodeMCU ESP8266 y Ubidots. Este proyecto podría ayudarnos a diseñar sistemas de control electrónico para dispositivos mecánicos. Por ejemplo: cortinas automáticas, un ventilador termorregulado para el verano y todo lo que tu imaginación pueda imaginar con motores.