Hola,
He comprado un "Motor Brushless" y un ESC "Brushless Motor Speed Controller".
Me preguntaba si podia controlar este motor con Arduino.
Había pensado en utilizar un potenciometro y una Salida "Analogica" (PWM).
Seria posible?
Muchas Gracias
Hola,
He comprado un "Motor Brushless" y un ESC "Brushless Motor Speed Controller".
Me preguntaba si podia controlar este motor con Arduino.
Había pensado en utilizar un potenciometro y una Salida "Analogica" (PWM).
Seria posible?
Muchas Gracias
Nose como funcionan estos motores, pero seguro que si se pueda, igual tendrias que usar un puente en H si quieres que tb invierta el sentido o simeplemente un mosfet para que vaya mas o menos rapido.
Muchas Gracias,
En los típicos motores de Corriente Continua he utilizado un L293D y funciona a la perfección. Pero los motores Brushless creo entender que funcionan con corriente trifasica y por eso precisan de un (ESC)"Speed controller", del cual dispongo, pero aún así no sé si utilizando un potenciometro y una salida "Analogica"(PWM) podria controlar la velocidad. (El sentido de girno no necesito controlarlo).
Muchas Gracias
Entonces es mas fácil de hacer, supongo que el controlador ese tiene la entrada de corriente de la batería, los 3 cables para el motor y otra conexión de 3 cables que va al receptor, esta conexión tiene que tener: negro,rojo y otro blanco. El cable blanco es el que tiene que conectar a un pin PWM del arduino para controlar la señal. Luego para regularlo con un potenciómetro coloca una resistencia de 1k entre el positivo y uno de los extremos del potenciómetro, y al otro extremo lo conectas a masa (para hacer un divisor de tensión variable), luego el pin central del potenciómetro lo conectas a una entrada analógica del arduino. La resistencia de 1k es para que no se queme ya que los potenciómetros suelen tener 1/4 de vatio, y claro cuando estés en el extremo del positivo la resistencia sera menor y se quemara.
Espero haberte ayudado, si necesitas ayuda con el programa avisa, aunque es muy sencillo de hacer.
Muchísimas Gracias Togusha. La explicación es perfecta.
El motor me llegará en pocos días, lo probaré y te cuento.
Gracias de Nuevo.
Víctor.
Yo eso del potenciómetro y la resistencia de 1K "para que no se queme" no lo termino de ver. Vamos que si la ley de Ohm no la han cambiado últimamente y si lo que quieres tener es un tensión que varie entre 0 y 5V solo necesitas un potenciómetro: Un extremo a +5V, el otro a GND y el terminal central a la entrada analógica. El valor del potenciómetro puede ser de cualquier valor entre 1K y 10 K.
Victornillo, un motor Brushless + ESC se controla exactamente igual que un servo cualquiera, busca esta información y ya lo tienes...
complubot, es cierto no hace falta la resistencia de 1-10k, estaba pensando que al variar el potenciómetro varias los ohm y claro cuando este a a un valor de ohmios bajo se quemaría porque tienen muy pocos varios (1/4-1/2W)... pero no, entre +5v y 0v tiene los mismos ohmios, solo varia el del medio que ira dando diferentes voltios. Salu2
Muchas Gracias a todos!.
En cuanto me llegue el motor os cuento que tal!.
Víctor
Efectivamente se controla como un servo normal... o casi
Al encenderlo normalmente oirás unos pitiditos y debe estár al mínimo la señal (+-800ms) eso lo digo de memoria, compruébalo!
Si no tiene señal o lo tienes "acelerado" p.ej a 1500ms o bien no para de pitar esperando a que bajes el duty cycle, o bien se bloquea después de un par de intentos y tienes que apagar y volver a encender.(la mayoría hacen lo primero)
Esto es una protección que hay en aeromodelismo para que si por un descuido enciendes la emisora y el avión con el mando del gas en otra posición que no sea cero este no salga disparado.
También puede ser que la primera vez tengas que poner a fondo el acelerador (duty cycle al máximo) para que testee donde está el tope y que luego lo bajes para saber donde está el otro tope.
En el manual debería ponértelo.
saludos
Hola a todos!
Ya me ha llegado el Motor.
He provado un sketch y me va perfectamente tras un poco de investigación:
Con un potenciómetro y el típico circuito con salida "Analógica" (PWM) y el puerto serie, he visto que el motor hace el primer pito apartir de el valor 380 (desde 0 hasta 1023), y tras pitar tan solo empieza a rodar a partir de 450 (desde 0 hasta 1023). También he observado que si lo pongo a valor máximo, en menos de 4 segundos se detiene, aproximadamente por encima de 1000 (desde 0 hasta 1023). Deduzco que se para porque el ESC da voltages superiores a los nominales del motor. Puede ser?
El Sketch que os muestro da un valor de 380 durante los primeros 1,8 segundos(para que se prepare el ESC&Motor y tras este tiempo le doy el valor minimo para que empieze a girar. He hecho otros donde controlo la velocidad con un potenciometro, pero los primeros angulos de rotación del potenciometro no lo hacen girar.:
int potPin = 2; // Pin Entrada Analogico
int MotorPin = 11; // Pin Salida Analogico (PWM)
int val = 0; // Variable almacena el Valor del Potenciometro
float a = 4; // divide el valor del potenciometro entre 4. Se hace porque AnalogRead lee valores de entre 0 i 1023, mientras que analogWrite solo nos da valores de 0 a 255.
void setup() {
pinMode(MotorPin, OUTPUT); // Led de Salida
Serial.begin(9600);
}
void loop() {
val = analogRead(potPin); // Lee el valor del Potenciometro
if (millis() < 1500)
{
analogWrite(MotorPin, 380/4); // Enciende el led segun el valor del potenciometro/4
Serial.println("Preparando");
}
else if (millis() > 1500)
{
analogWrite(MotorPin, 450/4);
Serial.println("Rotando");
}
}
Alguien sabe como puedo hacer que mi valor actual del potenciometro 0 pase a ser 380 y el maximo 1000, es decir que el potenciometro solo coja valores entre 380 y 1000 en vez de entre 0 y 1023?
Con un Mapeo?
Muchas Gracias a todos!!!
valor = map(analogRead(potPin), 0,1023, 380,1000);
Por cierto, una cosa que no comentamos es que cuando conectas el esc a su batería por el cable positivo salen 5v, si conectas directamente como un servo estarías alimentando la placa con esos 5v y la placa estaría alimentando con 5v al esc, no se si esto puede darte una avería, supongo que debes conectar solo la masa y la señal
A ver si alguien que sepa mas de electricidad nos ilumina... no vaya a ser...
De todos modos y aunque soy novato con arduino, estuve "analizando"(si es que lo que yo hago se puede llamar así) el código y no veo por ningún sitio que estés haciendo la señal que necesita el servo (en este caso el ESC)
He probado ese código con un servo y lo único que me hace es un zumbido, señal de que la idem está mal.
Para que nos aclaremos, un servo o un ESC quieren una señal cada 20ms que esté a nivel alto durante aproximadamente y dependiendo del fabricante entre 1ms y 2ms, pero creo que no vale la señal pwm de arduino.
Si no me equivoco la señal pwm que da arduino si está al 50% daría el mismo tiempo a 1 que a 0 que vale para la intensidad de un led pero para el servo mmmm :-/
Gracias a todos!
Con este sketch, me funciona perfectamente desde el 0% del potenciometro al 100%:
int potPin = 2; // Pin Entrada Analogico
int MotorPin = 11; // Pin Salida Analogico (PWM)
float a = 4; // divide el valor del potenciometro entre 4. Se hace porque AnalogRead lee valores de entre 0 i 1023, mientras que analogWrite solo nos da valores de 0 a 255.
void setup() {
Serial.begin(9600);
pinMode(MotorPin, OUTPUT); // Led de Salida
}
void loop() {
int val = analogRead(potPin); // Lee el valor del Potenciometro
val = map(val, 0, 1023, 380, 1015);
analogWrite(MotorPin, val/a); // Enciende el led segun el valor del potenciometro/4
Serial.println(val);
}
Muchas Gracias a todos!
Es normal que cuando le de caña al motor (con una helice) durante unos 10 segundos, se caliente hasta el punto que cuesta cogerlo con la mano?
Muchas Gracias
No puede ser normal en solo 10s, y menos con la hélice que lo refrigera bastante.