motor Brushless con Arduino

Buenas, tengo un grave problema, me propuse realizar un proyecto de drone para mi instituto, ya tengo la mayor parte lista, pero tengo un problema a la hora de controlar los motores cuento con ESC de 30a de la marca hobbypower y motores MT2204 II , el problema es que a la hora de que los motores deberian de arrancar lo hacen pero no en un solo sentido, se mueven hacia un lado y hacia el otro,(derecha e izquierda). alguien sabe como solucionarlo o que hacer. Estoy trabajando con arduino y control mediante bluetooth.

primero lo que te recomiendo que sujestes muy bien el motor, aunque parece un motor pequeño puede
causarte mas de un susto , ni hablar si esta con la helice.

. lo que pasa que el Esc , tiene un modo de calibracio o activacion, que te confirma con un pitido, y luego le envias otro pulso para hacer variar la velocidad.

como no esta calibrado por eso se empieza a mover para lod dos sentidos, con un grado de libertad.

MUcho cuidado!!!

#include<Servo.h>

Servo ESC; //Crear un objeto de clase servo

int vel = 1000; //amplitud del pulso


void setup()
{
 //Asignar un pin al ESC
 ESC.attach(9);
 
 //Activar el ESC
 ESC.writeMicroseconds(1000); //1000 = 1ms
 //Cambia el 1000 anterior por 2000 si
 //tu ESC se activa con un pulso de 2ms
 delay(5000); //Esperar 5 segundos para hacer la activacion
  
 //Iniciar puerto serial
 Serial.begin(9600);
 Serial.setTimeout(10);
  
  
}


void loop()
{
 if(Serial.available() >= 1)
 {
   vel = Serial.parseInt(); //Leer un entero por serial
   if(vel != 0)
   {
     ESC.writeMicroseconds(vel); //Generar un pulso con el numero recibido
   }
 }
}

:o

primero quiero agradecer por la ayuda,
segundo gracias por las sujerencias esta bien sujeto jeje, es lo unico que esta bien creo…
tercero, probe con el codigo que dejaste y con ese solo queda en un pitido permanente y no arranca nunca.

Como tienes echas las conexiones del ESC, motor y arduino

Bateria directo al ESC y este al motor, pin 9 señal y gnd tierra. La conexion esta correcta segun he investigado.

https://youtu.be/qWm64v3NTls

Aqui el link de un video que subi mostrando mi problema

|500x292

Ahora q lo veo al codigo esta medio raro. Proba esto y Juga un poco con el tiempi hasta q escuches dos Pitidos de confirmacion.

#include Servo ESC1;


void setup() {

ESC1.attach(9); //Adds ESC 

ESC1.write( 30); // proba ahi el tiempo

delay(5000); // 5 segundos esperar

}

void loop() {
ESC1.write( 30); //  velocidad entre 0-255

delay(10);
}

Naruto128 sigo muy agradecido por tu ayuda pero aun no funciona, los pitidos no son el problema, el problema es el giro del motor.
probe con tu codigo y me dan los pitidos pero no gira.

el codigo que he estado utilizando es el siguiente:

#include <Servo.h>//Incluye la libreria Servo que nos ayudara a controlar los ESC
Servo mot;  //Declara objetos tipo servo
Servo mot2;
Servo mot3;
Servo mot4;


const int pinServo = 9; //Pines de salida digital
const int pinServo2 = 10;
const int pinServo3 = 11;
const int pinServo4 = 12;


int angulo;          //valor para controlar la velocidad
int pulsoMin = 1000; //para estos ESC configura el ancho de pulso minimo y maximo
int pulsoMax = 2000;


void setup() {
 mot.attach(pinServo, pulsoMin, pulsoMax); //configura las porpiedades que tendra cada motor
 mot2.attach(pinServo2, pulsoMin, pulsoMax);
 mot3.attach(pinServo3, pulsoMin, pulsoMax);
 mot4.attach(pinServo4, pulsoMin, pulsoMax);
 
 
}

void loop(){


   
 angulo=0;          //da el pulso inicial para que el ESC pueda arrancar de manera segura
 mot.write(angulo);    
 mot2.write(angulo);  
 mot3.write(angulo);  
 mot4.write(angulo);
 delay(4000);

  angulo=80; 
        //este valor puede variar de 0 para detener los motores 180 para maxima potencia
   mot.write(angulo);    
   mot2.write(angulo);  
   mot3.write(angulo);  
   mot4.write(angulo);
   delay(3000);


  
 }

los pitidos los hace correctos 3 pitidos y un pitido largo y luego los motores lo unico que hacen es esto:

Esto esta mal.

angulo=0;          //da el pulso inicial para que el ESC pueda arrancar de manera segura
 mot.write(angulo);    
 mot2.write(angulo);  
 mot3.write(angulo);  
 mot4.write(angulo);
 delay(4000);


Es solo para armar los motores. Una sola vez.
Pon lo en setup.


Y este delay es mucho ponele 5
delay(3000);

Pues los pitidos de confirmacio no se eschuchan

Mirate esto . Ed mi video lo hice hace bastante tiempo.

https://m.youtube.com/watch?v=Qc2Tw4GFJGo

El motor lo que hace por medio de pulsos q le envias po arduino , es encender y apagar, por supuesto que por la inercia continus moviendoce. Cuando mas rapido son los pulsos mas rapido Anda. Si le pones un delay de 3 segundos no puede hacet ese trabajo.

Naruto128 no puedes responder 3 o 4 veces seguidas. EDITA y agrega/modifica lo que gustes. Para que pedirte que respetes las normas no? Bueno, espero que tengas buenas vacaciones!!

gersonibarra2017: Buenas, tengo un grave problema, me propuse realizar un proyecto de drone para mi instituto, ya tengo la mayor parte lista, pero tengo un problema a la hora de controlar los motores cuento con ESC de 30a de la marca hobbypower y motores MT2204 II , el problema es que a la hora de que los motores deberian de arrancar lo hacen pero no en un solo sentido, se mueven hacia un lado y hacia el otro,(derecha e izquierda). alguien sabe como solucionarlo o que hacer. Estoy trabajando con arduino y control mediante bluetooth.

Proyecto ambicioso, si los hay.

No te metas en problemas vos solo, podés comenzar con 4 motorcitos brushed, los mejorcitos son los 8520, fácilmente identificables porque tienen 8,5mm de diámetro por 20mm de longitud, si son de buena marca mejor.

No necesitás un ESC para manejarlos, con una simple interface para motores de CC es suficiente, onda L29X.

Hay más datos, pero no quiero llenarte de ellos todos juntos, vamos de a poco.

Abrazos!