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 Brushless?
También conocidos como motores síncronos de CC, son un tipo especial de motor que constan de un estator y un rotor como la mayoría de los motores que existen, pero con la diferencia, los "motores sin escobillas", como su nombre lo indica, no tienen escobillas. conectado 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 suministra voltaje a las bobinas de forma secuencial, por lo que los polos del rotor se mueven de acuerdo con el campo magnético generado por las bobinas de forma secuencial. La velocidad del rotor y su eje, dependerá de la velocidad de secuenciación del variador.
Los podemos encontrar normalmente en aviones o coches RC, también drones.
En el siguiente tutorial aprenderemos sobre motores Brushless, cómo controlarlos con un ESP8266 (NodeMCU) y Ubidots .
Requisitos de solicitud:
- NodoMCU ESP8266
- controlador de velocidad
- Motor sin escobillas
- Tablero de circuitos
- cables de cableado
- Cuenta Ubidots
- Batería de 12v o fuente de alimentación
Luego, use 2 cables para conectar Gnd y señal a la entrada respectiva del ESC.
ESC | NodoMCU |
---|---|
Cable trasero | GND - Cable negro |
alambre blanco | D5 - Cable amarillo |
En este caso no utilizamos el cable rojo del ESC porque suministra 5v y nuestro NodeMCU funciona a 3.3v, por lo que podemos dañarlo.
2. Dispositivo Ubidots y creación de variables.
Vaya a la sección Dispositivo de su Ubidots y cree su dispositivo llamado " motor ".
Dentro de su dispositivo " motor ", cree una variable llamada " velocidad ".
3. Creación de widgets y Dashboard Ubidots .
Una vez creados nuestro dispositivo y variable, podemos crear un dashboard y un widget para controlar el motor desde un dashboard web o móvil.
Ahora, cree un widget de control para establecer la velocidad del motor asociada con 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 has hecho, descarga el IDE de Arduino.
1a. Abra el IDE y seleccione Archivos -> Preferencias
1b. Agregue la siguiente URL en el URL adicionales del administrador de tableros . Puede agregar varias URL separándolas con comas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
2. Abra e instale la placa ESP8266 en el Administrador de placas: Herramientas -> Placa -> Administrador de placas
2a. Puede encontrar fácilmente el tablero escribiendo "ESP8266" en la barra de búsqueda.
3. Ahora seleccione la placa NodeMCU 1.0 en Herramientas -> Placa
4. Defina o verifique nuevamente el puerto de su PC con el que se comunica el dispositivo. Vaya a Herramientas -> Puerto : -> Seleccione el puerto
4b. Asegúrese de que la velocidad de carga de su IDE sea 115200 yendo a Herramientas -> Velocidad de carga -> 115200
5. Descargue la biblioteca Ubidots si aún no lo ha hecho. Ahora, haga clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP y elija la Ubidots ESP8266 MQTT
Si se carga correctamente, obtendrá la respuesta: "Biblioteca agregada a sus bibliotecas".
8. Cierra y abre nuevamente el IDE de Arduino.
Programando el NodeMCU ESP8266:
Una vez que su ESP8266 esté configurado, podemos publicar y obtener datos de Ubidots para controlar su motor sin escobillas.
1. Copie y pegue el siguiente código en el IDE de Arduino. No olvides personalizar el SSID y la contraseña de Wi-Fi y tu Ubidots .
/****************************************** Incluir bibliotecas ******* ********************************/ #include " Ubidots ESPMQTT.h" #include<Servo.h> /*************************************** Definir constantes ******* ********************************/ #definir TOKEN "............ " // Tu TOKEN Ubidots #define WIFINAME "............" //Tu SSID #define WIFIPASS "............" // Tu pase Wifi # 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 por donde sale la señal para el ESC Servo ESC; //Valor flotante de la variable servo=0; // Para almacenar el valor entrante. flotador Velocidad del motor = 0; Cliente Ubidots (TOKEN); /*************************************** Funciones auxiliares ******* **********************************/ // convertir desde una matriz de caracteres a valor flotante. float btof(byte * carga útil, longitud int sin signo) { char * demo = (char *) malloc(sizeof(char) * 10); for (int i = 0; i < longitud; i++) { demostración[i] = carga útil[i]; } valor flotante = atof(demostración); gratis (demostración); valor de retorno; } // Devolución de llamada para manejar la devolución de llamada nula de suscripción (char* tema, byte* carga útil, longitud int sin signo) { valor = btof(carga útil, longitud); valor = mapa(valor, 0, 100, 0, 180); // Asigne los valores 0-100 del control deslizante al 0-180 para usar la biblioteca de servo. ESC.write(valor); //Enviar el valor (PWM) al ESC } /************************************* *** Funciones principales ****************************************/ void setup() { // pon tu código de configuración aquí, para ejecutarlo una vez: client. ubidots SetBroker(" ubidots "); // Configura el corredor correctamente para la cuenta comercial client.setDebug(true); // Pasa un valor bool verdadero o falso para activar los mensajes de depuración Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); cliente.begin(devolución de llamada); cliente. ubidots Suscribirse(DEVICE_LABEL, VARIABLE); //Inserte la fuente de datos y las etiquetas de la variable ESC.attach(MotorPin,1000,2000); } void loop() { // pon tu código principal aquí, para ejecutarlo repetidamente: if (!client.connected()) { client.reconnect(); cliente. ubidots Suscribirse(DEVICE_LABEL, VARIABLE); //Inserte la fuente de datos y las etiquetas de la variable } client.loop(); }
Ahora, verifique que su código sea correcto haciendo clic en el botón de verificación en el IDE de Arduino encima del editor.
Una vez verificado el código, recibirá una respuesta similar a la siguiente, indicando que está configurado correctamente.
A continuación, debes cargar el código en tu NodeMCU. Para hacer esto, elija el ícono de flecha hacia la derecha al lado del ícono de verificación.
Una vez cargado el código, recibirá 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 estará listo, simplemente deslice el control deslizante en su dashboard web o móvil.
Resumen:
En esta guía acabamos de aprender cómo funcionan los motores sin escobillas y cómo controlarlos con ESP8266 NodeMCU y Ubidots . Este proyecto podría ayudarnos a diseñar sistemas de control electrónico para dispositivos mecánicos. Ej: Cortinas Automáticas, un ventilador termocontrolado para el verano, y todo lo que se te ocurra con motores.