Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Tutorial de control de motores sin escobillas Arduino | ESC | BLDC

En este tutorial aprenderemos a controlar un motor sin escobillas usando Arduino y ESC. En caso de que desee más detalles sobre cómo funcionan los motores BLDC, puede consultar el otro artículo o ver el siguiente video que contiene una explicación del principio de funcionamiento de un motor sin escobillas y cómo controlar uno usando Arduino y ESC.

Resumen

Para este ejemplo, tengo un motor outrunner BLDC con las siguientes especificaciones:tiene una clasificación de KV de 1000, se puede alimentar con una batería LiPo 2S, 3S o 4S y requiere 30A ESC. La clasificación KV en un motor sin escobillas define las RPM del motor por voltio sin carga.

En este caso, los 1000KV significa que, por ejemplo, si alimentamos el motor con una batería LiPo 2S que tiene un voltaje de 7,4 voltios, el motor puede alcanzar RPM máximas de 7,4 veces 1000, o sea, 7400 RPM.

Los motores sin escobillas consumen mucha energía y el método más común para alimentarlos es usar baterías LiPo. El número "S" de una batería LiPo indica cuántas celdas tiene la batería y cada celda tiene un voltaje de 3,7 V.

Para este ejemplo, usaré una batería LiPo 3S que tiene 3 celdas y es de 11,1 V. Entonces, puedo esperar que mi motor alcance un máximo de RPM de 11100.

Por último, aquí hay un ESC 30A que usaré para este ejemplo y coincidiré con los requisitos del motor. Por un lado el ESC tiene tres cables que controlan las tres fases del motor y por el otro lado tiene dos cables, VCC y GND, para alimentación.

También hay otro conjunto de tres cables que salen del ESC y esa es la línea de señal, +5V y tierra. Esta función del ESC se llama circuito eliminador de batería y, como sugiere el nombre, elimina la necesidad de una batería separada para un microcontrolador. Con esto, el ESC proporciona 5V regulados que pueden usarse para alimentar nuestro Arduino.

Podemos notar aquí que esta conexión es en realidad la misma que vemos en los servomotores.

Entonces, controlar un motor sin escobillas usando ESC y Arduino es tan simple como controlar un servo usando Arduino. Los ESC usan el mismo tipo de señal de control que el servo y esa es la señal PWM estándar de 50 Hz.

Esto es muy conveniente porque, por ejemplo, cuando construimos un avión RC, generalmente necesitamos tanto servos como motores sin escobillas y, de esta manera, podemos controlarlos fácilmente con el mismo tipo de controlador.

Entonces, usando el Arduino, solo tenemos que generar la señal PWM de 50 Hz y, según el ancho de los pulsos o la duración del estado alto, que debe variar de 1 milisegundo a 2 milisegundos, el ESC impulsará el motor desde las RPM mínimas hasta las máximas.

Control de motor sin escobillas de Arduino – Diagrama de circuito

Aquí está el diagrama del circuito para este ejemplo. Además del ESC, solo usaremos un potenciómetro simple para controlar la velocidad del motor.

Puede obtener los componentes necesarios para este tutorial de Arduino desde los siguientes enlaces:

  • Motor sin escobillas ………………………
  • ESC 30A …………………………………….
  • Batería Li-Po ……………….…..……
  • Placa Arduino …………………………
  • Potenciómetro ………………………….
  • Protoboard y cables de salto...

Código Arduino para control de motor BLDC

El código Arduino es realmente simple con solo unas pocas líneas de código.

/*
        Arduino Brushless Motor Control
     by Dejan, https://howtomechatronics.com
*/

#include <Servo.h>

Servo ESC;     // create servo object to control the ESC

int potValue;  // value from the analog pin

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
}

void loop() {
  potValue = analogRead(A0);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
}Code language: Arduino (arduino)

Descripción: Entonces, necesitamos definir la biblioteca de servos, porque con la biblioteca de servos podemos generar fácilmente la señal PWM de 50 Hz, de lo contrario, las señales PWM que genera el Arduino están en diferentes frecuencias. Luego necesitamos crear un objeto servo para el control ESC y definir una variable para almacenar la entrada analógica del potenciómetro. En la sección de configuración, usando la función adjuntar (), definimos a qué pin Arduino es la señal de control del ESC conectado y también definimos el ancho de pulso mínimo y máximo de la señal PWM en microsegundos.

En la sección de bucle, primero leemos el potenciómetro, asignamos su valor de 0 a 1023 a un valor de 0 a 180. Luego, usando la función write(), enviamos la señal al ESC o generamos la señal PWM de 50 Hz. Los valores de 0 a 180 corresponden a los valores de 1000 a 2000 microsegundos definidos en la sección de configuración.

Entonces, si subimos este código a nuestro Arduino y luego encendemos todo usando la batería, entonces podemos controlar la velocidad del motor sin escobillas de cero al máximo usando el potenciómetro.

Sin embargo, hay algunas cosas que debemos tener en cuenta aquí. Al alimentar inicialmente el motor, el valor de la señal debe ser igual o inferior al valor mínimo de 1 milisegundo. Esto se denomina armado del ESC, y el motor emite un pitido de confirmación para que sepamos que está armado correctamente. En caso de que tengamos un valor más alto al encender, lo que significa que aceleramos, el ESC no arrancará el motor hasta que aceleremos hasta el valor mínimo correcto. Esto es muy conveniente en términos de seguridad, porque el motor no arranca en caso de que tengamos un acelerador al encender.

Calibración ESC

Por último, expliquemos cómo funciona la calibración ESC. Cada ESC tiene sus propios puntos altos y bajos, y pueden variar ligeramente. Por ejemplo, el punto más bajo podría ser 1,2 milisegundos y el punto más alto podría ser 1,9 milisegundos. En tal caso, nuestro acelerador no hará nada en el primer 20 % hasta que alcance ese valor de punto bajo de 1,2 milisegundos.

Para solucionar este problema, podemos calibrar el ESC o configurar los puntos altos y bajos como queramos. Para ese propósito, antes de encender el ESC, primero debemos acelerar nuestro potenciómetro al máximo o un valor al menos mayor que el punto medio actual. Luego, podemos encender el ESC y escucharemos algunos pitidos del motor que en realidad confirman que hemos establecido el nuevo punto alto.

Luego, después de 2 segundos, debemos mover nuestro potenciómetro a la posición donde indicamos cuál será el nuevo punto bajo. Volveremos a escuchar los pitidos de confirmación y con eso hemos terminado con la calibración ESC. Ahora nuestro acelerador responderá de inmediato y podremos controlar el motor dentro de estos dos nuevos puntos.

Eso es casi todo para este tutorial. En caso de que quiera aprender cómo hacer que este control de motor Arduino sin escobillas sea inalámbrico, puede ver mi video anterior donde construyo un transmisor RC basado en Arduino y explico cómo controlar los motores BLDC usándolo.

Espero que hayas disfrutado este tutorial y hayas aprendido algo nuevo. Siéntase libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvide consultar mi colección de proyectos Arduino.


Proceso de manufactura

  1. Tutorial de bloqueo RFID de Arduino
  2. Controlar el aceptador de monedas con Arduino
  3. Centro de control de Arduino
  4. ¡Arduino con Bluetooth para controlar un LED!
  5. Robot seguidor de línea
  6. Control del humidificador Arduino
  7. Plataforma de entrenamiento Arduino
  8. Tutorial del sensor de huellas dactilares Arduino
  9. Tutorial de Arduino 01:Primeros pasos
  10. Automatización y motores BLDC
  11. Una introducción al motor BLDC