Mal giro de motor brushles

Hola muy buenas noches a todos

Haber les comento, tengo un problema con el giro de uno de mis motores, la cosa es, que este motor antes funcionaba bien, pero ahora no:flipo::flipo:, es alucinante pero si, el tema es que el motor si no gira a mas de 20 % del gas, todo genial, pero en el momento que le doy 20,01 % del gas, este solo funciona durante 4 segundos luego se apaga y deja de funcionar hasta que le vuelvo a meter el programa, otra de las cosas que me pasan con el mismo motor, es que cuando le doy mas del 20% este empieza a girar super mal, a trompicones, con muy poca potencia, el mismo corrige su giro cada 0,5 sg, es impresionante es como si estubiera poseido xd, (me lo tomo a risa por no llorar por que llego dias encerrado intentando que funcione), eh mirado por algun foro buscando mucho, y eh encontrado que podia ser mala conexion en los 3 cables que salen del ESC con lo 3 cables del motor lo eh revisado eh soldado los 3 cables del motor a los de el ESC y nada hace lo mismo o se apaga a los 4 segundos o se pone a dar trompicones y a ir super mal, siempre pasa una de esas dos cosas,, eh calibrado los ESC de la misma forma que los otros 3 motores qeu funcionan ala perfeccion pero este no, tambien eh desmontado el motor, para ver si estaban los cables cortados o quemados o la bobina quemada o rota y nada no hay nada, nose qeu mas hacer ni probar la verdad, necesito ayuda , haber si alguien que lea esto y sepa como solucionarlo y me ayuda porfavor estoy desesperado.

Mi motor es A2212 1000Kv Brushless Outrunner Motor.

Gracias.

¿Has probado a intercambiar las posiciones de ese motor con otro de los que sí te funciona? Así verás dónde está el fallo.

si si lo he probado y el motor iba mal igualmente, el tema era que tenia 3 pelos cortado en la bobina interna, los solde y parece que el motor va bien, estoy teniendo algunos problemas, pero haciendo pruebas eh visto que no solo le pasa a ese motor, pero el tema es que antes con el mismo programa todo iba genial, ahora no, ahora alguno uno de los motores a a midad programa se revoluciona y se pone a todo gas( eso al principio solo pasaba con el que solde, pero haciendo pruebas tambien le a pasado a otro), entoces ya nose que hacer para areglarlo, y que no se acelere el solo.

Eh de mencionar que utilizo el dispositivo HC-06 para comunicar mi movil con el arduino mega2560 por Bluetooht.
de hay el

state y flag, es el pin de entrada de informacion del HC-06 para la comunicacion desde el movil con el arduino.

Os dejo el programa para ver si alguien me puede ayudar.

#include <Servo.h>
#include <Servo.h>
#include <Servo.h>

int state = 0;
int flag = 0;
Servo motor1;
Servo motor2;
Servo motor3;
void setup() {
motor1.attach(5);
motor2.attach(12);
motor3.attach(3);
arm();
Serial.begin(9600);
}
void loop() {

if(Serial.available() > 0){
state = Serial.read();
flag=0;
}
// if the state is 0 the led will turn off
if (state == ‘0’) {
motor1.write(30);
motor2.write(30);
motor3.write(30);
if(flag == 0){
Serial.println(“off”);
flag = 1;
}
}
// if the state is 1 the led will turn on
if (state == ‘1’) {
motor1.write(40);
motor2.write(40);
motor3.write(40);
if(flag == 0){
Serial.println(“encender”);
flag = 1;
}
}
if (state == ‘2’) {
motor1.write(45);
motor2.write(45);
motor3.write(45);
if(flag == 0){
Serial.println("mas ");
flag = 1;
}
}
if (state == ‘3’) {
motor1.write(50);
motor2.write(50);
motor3.write(50);
if(flag == 0){
Serial.println(“mas+”);
flag = 1;
}
}
if (state == ‘4’) {
motor1.write(55);
motor2.write(55);
motor3.write(55);
if(flag == 0){
Serial.println(“mas++”);
flag = 1;
}
}
if (state == ‘5’) {
motor1.write(60);
motor2.write(60);
motor3.write(60);
if(flag == 0){
Serial.println(“mas+++”);
flag = 1;
}
}
}
void arm() {
motor1.write(0);
delay(2000);
motor1.write(30);
delay(6000);
motor2.write(0);
delay(2000);
motor2.write(30);
delay(6000);
motor3.write(0);
delay(2000);
motor3.write(30);
delay(6000);
}

al motor que le suele pasar es el que esta en el pin 5, pero con este programa le pasa al que esta en el numero 12.

ayuda porfavor

por favor, usá un SWITCH CASE en vez de esa cosa fiera de IFs anidados

Buenas noches.

Lo primero decir que gracias a todos por vuestras contestaciones de verdad ;).

y en contestacion decir que probare con esa función y pondre mis resultados en este foro, asi que nos vemos en unos dias ajjajaajaj.

:))

Hola a todos muy buenas noches.

eh estado haciendo pruebas con la funcion SWITCH case, y la verdad no se por que pero no me funciona el codigo.

El codigo con la funcion SWITCH case , eh de deciros que mi objetivo es controlarlo desde el movil, y con el anterior programa con los if si que lo consegia , ponia el valor en el terminar de la aplicacion(0,1,2,3…9) y en funcion de lo que le ponia los motores hacian una cosa u otra, de hay la variable state, que es el pin donde este conectado el HC-06 para el bluetooth y asi comunicarse con el movil mediante una aplicacion,

#include <Servo.h>

int state = 0;

Servo motor1;
Servo motor2;
Servo motor3;
Servo motor4;
void setup() {
motor1.attach(11);
motor2.attach(9);
motor3.attach(5);
motor4.attach(3);
arm();
Serial.begin(9600);
}
void loop() {

switch (state) {// segun e leido aqui va la variable que utilizara para abrir cada caso en funcion de lo que ponga, pues eh puesto la variable state y nose por que no funciona
.
case 1:// este numero es el que yo le envio desde el movil para abrir este caso.
motor1.write(0);
motor2.write(0);
motor3.write(0);
motor4.write(0);
delay(10000);
//hacer algo cuando sea igual a 1
break;

case 2:

motor1.write(50);
motor2.write(50);
motor3.write(50);
motor4.write(50);
delay(10000);
break;

case 3:
motor1.write(70);
motor2.write(70);
motor3.write(70);
motor4.write(70);
delay(10000);
break;

default: // si no le envio nada que ejecute esto.
motor1.write(0);
motor2.write(0);
motor3.write(0);
motor4.write(0);
break;
}
}
void arm() { //La función de armado para los ESC
motor1.write(0);
delay(1000);
motor1.write(30);
delay(5000);
motor2.write(0);
delay(1000);
motor2.write(30);
delay(5000);
motor3.write(0);
delay(1000);
motor3.write(30);
delay(5000);
motor4.write(0);
delay(1000);
motor4.write(30);
delay(5000);
}
Podriais revisar el programa a ver si eh puesto algo mal o algo porfavor, gracias