Problema con servo MG996R

Buenas, voy a intentar explicar mi problema con la mayor cantidad de información posible. Como proyecto de fin de grado estoy haciendo un tanque que se controla por bluetooth (módulo HC-06) a través de una app en el móvil (bluetooth serial controller). Los servos los quiero para controlar el giro de la torreta y el del cañón. He conseguido hacer funcionar el servo SG90 pero no tiene suficiente fuerza, así que he optado por probar con el MG996R. El problema viene cuando lo programo con arduino. He buscado muchas formas de hacerlo, con el mismo programa que el SG90 no hace lo mismo y tiene los mismo 3 cables que sirven para exactamente lo mismo.
He probado el ejemplo del servo potenciómetro que viene en arduino y en vez de moverse a la posición que le digo con el potenciómetro lo que hace es regular la velocidad... He puesto un transistor BC547 para amplificar la corriente y también he conectado por el barrel a una fuente metiéndole 10V por si era la alimentación por USB, pero tampoco.
Ya no se que más intentar, replico lo que hace todo el mundo en videos y blogs con el mismo modelo de servo y a ellos les funciona perfectamente pero a mi no... Puede ser que el servo esté estropeado? Os dejo debajo uno de los códigos que uso que funciona solo con el SG90. Cuando en la app pulso el boton "derecha" se manda el numero "110" para que vaya hacia la derecha y a una velocidad que yo he calculado.


  #include <Servo.h>
    Servo myservo;
    int pos = 0;
    int state;
    void setup() {
      Serial.begin(9600);
      //while (!Serial);
      //Serial.println("-------------------------");
      //Serial.println("ARos is loading....");
      //delay(1000);
      //Serial.println("ARos loaded succesfully");
      //Serial.println("-------------------------");
      myservo.attach(9);
      /* Serial.println("calibrating servo...");
      for (pos = 0; pos <= 180; pos += 1)
        myservo.write(0);
      delay(1000);
      myservo.write(180);
      delay(1000);
      myservo.write(90);
      delay(1000);
      Serial.println("servo calibrated");
      Serial.println("-------------------------");
      Serial.println("Comand input online, write command to perform action");
      Serial.println("-------------------------");*/

    }

    void loop() {

      for (pos = 0; pos <= 180; pos += 1)
        if (Serial.available())
        {
          int state = Serial.parseInt();
          if (state < 10)
          {
            Serial.print(">");
            Serial.println(state);
            Serial.println("cannost execute command, too low number");
          }
          if (state >= 10 && state < 170)
          {
            Serial.print(">");
            Serial.println(state);
            Serial.print("turning servo to ");
            Serial.print(state);
            Serial.println(" degrees");
            delay(100);
            while (state == 70) {  
                myservo.write(70);
                delay(200);
                while(state==90){
                myservo.write(90);  
                state = Serial.parseInt();
                }
                
                delay(200);
                state = Serial.parseInt();
                Serial.print("servo izq");
                Serial.println(state);              
            }
            while (state == 110) {  
                myservo.write(110);
                while(state==90){
                myservo.write(90);  
                state = Serial.parseInt();
                }
                Serial.println(state);
                state = Serial.parseInt();
                Serial.println(state);
                Serial.println("servo der");
                Serial.println(state);          
            }
            while (state == 90) {
              myservo.write(90);
              state = Serial.parseInt();
              Serial.print("servo stop");
              Serial.println(state);
              
            }
          }
        }
    }

Si el servo se mueve como motor entonces no compraste un servo, sino lo que llaman un servo de movimiento continuo y claramente no es lo que buscas.
Deberás mirar bien lo que compraste porque te equivocaste.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.