Los motores brushless son motores eléctricos de imán permanente y de conmutación electrónica de alimentación en las bobinas. Su construcción de tres bobinados colocados a 120° y generan un campo magnético giratorio por medio de conmutación.
A diferencia de un motor DC normal, encontraremos tres cables de salida de control, por lo que es necesario un controlador especial para determinar tanto la orientación del rotor y su posición respecto a las bobinas del estator.
Los motores sin escobillas permiten un gran rendimiento y una gran potencia pero con un consumo considerable. Podemos ver algunas ventajas y desventajas en comparación a los motores comerciales de escobillas:
Ventajas:
# Mayor eficiencia.
# Mayor rendimiento.
# Mayor potencia.
# Alta velocidad.
# Poco ruido.
# Precisión en el control de velocidad.
# Par elevado.
# Mayor eficiencia.
# Mayor rendimiento.
# Mayor potencia.
# Alta velocidad.
# Poco ruido.
# Precisión en el control de velocidad.
# Par elevado.
Desventajas:
# Costo elevado.
# Necesita un controlador especial ESC dedicado (Electronic Speed Control).
# Costo elevado.
# Necesita un controlador especial ESC dedicado (Electronic Speed Control).
ESC (ELECTRONIC SPEED CONTROLLERS)
Son circuitos electrónicos diseñados con el propósito de variar la velocidad de los motores eléctricos, su dirección, y en muchos casos funcionar como freno dinámico. Estos controladores se encargan de generar tres fases eléctricas para controlar el motor.
Los ESC crean básicamente una fuente de poder AC trifásica, a partir de una entrada de voltaje DC. Al momento de seleccionar un driver ESC debemos fijarnos que los motores brushless pueden ser de dos tipos:
# Outrunner (usados en aeromodelismo)
# Inrunner
# Outrunner (usados en aeromodelismo)
# Inrunner
PROGRAMACIÓN DEFAULT Y PRUEBA
Para este ejemplo usamos un motor brushless EMAX CF2822 que tiene las siguientes características:
# KV: 1200
# Potencia de salida: 140 W
# RPM/V: 1200
# Características según hélice:
* Hélice 10 x 5: 7100 RPM
* Hélice 10 x 4.7: 6100 RPM
# Corriente de consumo: 14.5 A
# Eficiencia máxima: 82%
# Peso: 39g
En el caso del ESC, usamos un HW 30A que tiene las siguientes características:
# Máxima corriente continua: 30 A
# BEC (Battery Eliminator Circuit): 2 A
# Resistencia: 0.005 ohm
# Fets: 12
# PWM: 8 kHz
# Temperatura de protección: 110 °C
El conjunto armado se compone de una hélice de 10 x 4.5 in, un soporte de motor de aluminio, un motor brushless, un ESC y un controlador Arduino.
# PIN 11 : Arduino UNO => SEÑAL : ESC (Cable blanco)
# GND : Arduino UNO => VCC : ESC (Cable rojo)
# 5V : Arduino UNO => GND : ESC (Cable negro)
# GND : Batería => GND : ESC (Cable negro)
# 11.1V : Batería => VCC : ESC (Cable rojo)
# ENTRADA BOBINADO : Motores (Cables negros) => SALIDA MOTOR : ESC (Cables azules)
El conjunto de hélice y motor se muestra en el siguiente esquema:
El programa usado tiene un menú con dos opciones:
# La opción "a" entra a un modo de programación, en el cual se introduce una señal PWM de 2000us.
# La opción "b" entra a un modo de prueba que permite probar el motor al introducir la velocidad en porcentaje de 0 a 100 %.
NOTA:
# Dentro de la opción "a" tenemos dos más:
Al introducir "c" asignamos como valor mínimo 700us.
Al introducir "d" asignamos como valor mínimo 1000us.
Con ello, podemos tener un rango mayor o menor de control de los motores y dependerá del modelo usado. El programa es el siguiente:
La demostración del uso del anterior programa se muestra en el siguiente video:
Autor:
Para este ejemplo usamos un motor brushless EMAX CF2822 que tiene las siguientes características:
# KV: 1200
# Potencia de salida: 140 W
# RPM/V: 1200
# Características según hélice:
* Hélice 10 x 5: 7100 RPM
* Hélice 10 x 4.7: 6100 RPM
# Corriente de consumo: 14.5 A
# Eficiencia máxima: 82%
# Peso: 39g
# Máxima corriente continua: 30 A
# BEC (Battery Eliminator Circuit): 2 A
# Resistencia: 0.005 ohm
# Fets: 12
# PWM: 8 kHz
# Temperatura de protección: 110 °C
El conjunto armado se compone de una hélice de 10 x 4.5 in, un soporte de motor de aluminio, un motor brushless, un ESC y un controlador Arduino.
# PIN 11 : Arduino UNO => SEÑAL : ESC (Cable blanco)
# GND : Arduino UNO => VCC : ESC (Cable rojo)
# 5V : Arduino UNO => GND : ESC (Cable negro)
# GND : Batería => GND : ESC (Cable negro)
# 11.1V : Batería => VCC : ESC (Cable rojo)
# ENTRADA BOBINADO : Motores (Cables negros) => SALIDA MOTOR : ESC (Cables azules)
Al momento de conectar el motor al ESC, debemos percatarnos conectar los cables centrales, la rotación dependerá de la posición que coloquemos los cables faltantes. El circuito de prueba se muestra a continuación:
El conjunto de hélice y motor se muestra en el siguiente esquema:
# La opción "a" entra a un modo de programación, en el cual se introduce una señal PWM de 2000us.
# La opción "b" entra a un modo de prueba que permite probar el motor al introducir la velocidad en porcentaje de 0 a 100 %.
NOTA:
# Dentro de la opción "a" tenemos dos más:
Al introducir "c" asignamos como valor mínimo 700us.
Al introducir "d" asignamos como valor mínimo 1000us.
Con ello, podemos tener un rango mayor o menor de control de los motores y dependerá del modelo usado. El programa es el siguiente:
/* PROGRAMA DE PRUEBA: ESC HW 30A CONEXION: PWM: Arduino Pin 11 GND: Arduino GND VCC: Arduino 5V El siguiente programa nos ayuda a configurar los driver ESC en modo default para poder usarlos con la funcion servo con dos distintos rangos. Seguir las instrucciones del menu. Despues de configurado el driver, se pueden hacer pruebas en vacio del motor. Autor: Renato H. http://beetlecraft.blogspot.pe/ El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor */ #include <Servo.h> // Libreria de manejo de servos Servo esc; // Construccion del objeto ESC usando la libreria Servo int valor_esc_max = 2000, valor_esc_min, por_esc; // Variables para configuracion del driver float valor_esc; // Variable de conversion de porcentaje a microsegundos char cabecera; // Variable void setup() { esc.attach(11); // ESC configurado para ser usado en el pin 11 Serial.begin(9600); // Inicializacion del puerto serial a 9600 bps // Menu inicial Serial.println("Programa de programacion default y prueba de driver ESC HW 30A"); Serial.println("Menu: "); Serial.println("a : Entrar al modo de programacion"); Serial.println("b : Entrar al modo de de prueba"); } void loop() { if (Serial.available()) { // Verificacion que el puerto serial recibe datos delay(10); cabecera = Serial.read(); // Lectura de la cabecera para ingresar al menu menu(cabecera); // Ingresando a la funcion del menu deseada while (Serial.available() > 0){Serial.read();} // Rutina de limpieza del buffer del puerto serial } } void menu(char menu_pointer){ // Rutina de menu switch (menu_pointer) { case 'a': esc.write(valor_esc_max); // Asignacion del valor minimo de 700 ms // Menu Serial.println("Ingresando al modo de programacion..."); delay(500); Serial.println("Encender la fuente o conectar la bateria"); delay(1000); Serial.println("Ingresar c para valor minimo de 700 ms"); delay(1000); Serial.println("Ingresar d para valor minimo de 1000 ms"); break; case 'c': valor_esc_min = 700; // Asignacion del valor minimo de 700 ms esc.write(valor_esc_min); // Programacion del valor minimo en el ESC // Menu Serial.print("Valor maximo: "); Serial.println(valor_esc_max); Serial.print("Valor minimo: "); Serial.println(valor_esc_min); Serial.println("Ingresar b para entrar a modo de prueba... "); break; case 'd': valor_esc_min = 1000; // Asignacion del valor minimo de 1000 ms esc.write(valor_esc_min); // Programacion del valor minimo en el ESC // Menu Serial.print("Valor maximo: "); Serial.println(valor_esc_max); Serial.print("Valor minimo: "); Serial.println(valor_esc_min); Serial.println("Ingresar b para entrar a modo de prueba... "); break; case 'b': // Menu Serial.println("Ingresar b con un valor de 0 a 100"); Serial.println("Ejemplo: b0 para 0%"); Serial.println("Ejemplo: b100 para 100%"); while (Serial.available()){ por_esc = Serial.parseInt(); // Lectura del porcentaje de velocidad deseado // Conversion del porcentaje al valor en microsegundos por interpolacion valor_esc = (valor_esc_max - valor_esc_min); valor_esc = valor_esc / 100; valor_esc = por_esc * valor_esc; valor_esc = valor_esc_min + valor_esc; // Menu Serial.print("ESC Porcentaje: "); Serial.print(por_esc); Serial.print(" || ECS Microsegundos: "); Serial.println(valor_esc, 0); Serial.println(" "); } esc.writeMicroseconds(valor_esc); // Escritura del valor deseado en el ESC break; } }
La demostración del uso del anterior programa se muestra en el siguiente video:
Autor:
:D Me ha sido de mucha ayuda!, poca informacion como esta, me gustaria aprender, mas acerca de como aprender a programarlo en vez de solo copiar el programa. Saludos.
ResponderEliminar