Anuncio TOP B1 Mensaje

Colapsar

Anuncio TOP B4 Mensaje (Mobile)

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.

Giro servo 360º incontrolado.

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Giro servo 360º incontrolado.

    Muy buenas,
    estoy haciendo un proyecto con 2 servomotores de rotación continua, pero no consigo manejarlos a mi antojo, es decir, da igual los grados que ponga que giran los que quieren.
    No sé si sera el modelo: son servos DM-S0090D. Adjunto una foto para que veais el modelo tambien.
    Por otro lado os adjunto la programacion básica que utilizo para hacerme con ellos, pero que no hay manera:
    Código:
    #include <Servo.h> //Libreria para Servomotores
    
    Servo Servo_1;  
    
    int Angulo = 0;    // Variable que contendra el angulo de giro del servo
    
    void setup() 
    { 
      Servo_1.attach(3);  // Definir el pin (3) que se utilizara para el control del servo
    } 
    
    void loop() 
    { 
      for(Angulo= 0;Angulo < 180; Angulo += 1)  //Incrementar de 1 en 1 el angulo que va de 0° hasta 180°
      {                                  
        Servo_1.write(Angulo);                  // Decirle al Servo_1 que se mueva los grados que estan en la variable angulo
        delay(15);                              // Esperar 15 ms para que el servo alcance la posicion
      } 
      delay(500);                                //Esperar 500 ms 
      for(Angulo = 180; Angulo>=1; Angulo-=1)    // Decrementar de 1 en 1 el angulo que va de 180° hasta 0°
      {                                
        Servo_1.write(Angulo);                   // Decirle al Servo_1 que se mueva los grados que estan en la variable angulo
        delay(15);                              // Esperar 15 ms para que el servo alcance la posicion
      } 
      delay(500);                        //Esperar 500 ms 
    }

    Imagen: https://www.luisllamas.es/wp-content...-DM-S0090D.png
    Archivos Adjuntos

  • #2
    Estas seguro que puedes realizar control de angulo con este motor ?

    https://www.luisllamas.es/controlar-...a-con-arduino/
    Editado por última vez por lluisot; https://www.infoplc.net/foro/member/8-lluisot en 18 dic 17, 21:09:08.

    Comentario


    • #3
      es un servo de 360º... en teoría si deberia...

      Comentario


      • #4
        Te has leído el enlace? Te pongo un copy paste...

        ------------

        Controlar un servo de rotación continua con Arduino
        10 agosto, 2016
        arduino-servo-rotacion-continua
        ¿Qué es un servo de rotación continua?

        Un servo de rotación continua es una variante de los servos normales, en los que la señal que enviamos al servo controla la velocidad de giro, en lugar de la posición angular como ocurre en los servos convencionales.

        Otra diferencia con los servos convencionales, que tienen un rango limitado de movimiento de 0 a 180º, es que un servo de rotación continua puede girar 360 grados en ambos sentidos de forma continua.

        Las características y el control de un servo de rotación continua son similares a los de un servo convencional De hecho es posible modificar un servo para convertirlo en rotación continua simplemente eliminado los topes internos y sustituyendo el potenciómetro interno por dos resistencias iguales. No obstante, el rendimiento será inferior a un servo de rotación continua comercial.

        Muchos modelos de servo de rotación continua incluyen un potenciómetro de calibración que permite ajustar con precisión el punto neutro, es decir, el punto en el que el servo no gira en ninguno de los sentidos (siendo otra ventaja de usar un motor comercial en lugar de un servo convencional modificado).

        Los servos de rotación continua, al igual que los servos convencionales, admiten tensiones de alimentación de entre 4,8V a 7,2V. También al igual que sus hermanos incorporan un reductor interno por lo que, en general, proporcionan un alto par y baja velocidad máxima, en torno a 1-2 rpm.

        El control de un servo de rotación continua es idéntico al de un servo convencional, sólo varía el significado de la señal de control, que en lugar de transformarse en ángulo de posición se interpreta como velocidad angular, en ambos sentidos de giro.

        arduino-servo-rotacion-continua-funcionamiento

        Los servos de rotación continua son una forma sencilla de conseguir un motor con control de velocidad, sin tener que añadir dispositivos adicionales como controladores o encoders como ocurre en el caso en el caso de motores DC o paso a paso, ya que el control está integrado en el propio servo.

        La principal desventaja de los servos de rotación continua es que sacrificamos el control de posición. Si queremos con precisión el ángulo girado tendremos que añadir un encoder.

        Lamentablemente, pese a lo que podríamos pensar, tampoco disponemos de un control preciso de la velocidad de giro dado que la respuesta del sistema es fuertemente no lineal respecto a la entrada del servo. Si queremos un control de velocidad preciso deberemos calibrar el motor y corregir la señal enviada al servo, o nuevamente recurrir a añadir encoders.

        arduino-servo-rotacion-continua-control

        Los servos de rotación continua son una opción sencilla para construir robots de tamaño pequeño o mediano, especialmente cuando implican el movimiento de varias ruedas como en robots con omniwheel o mecanum wheel. También son útiles en otros sistemas donde necesitemos controlar de forma sencilla la velocidad de giro, como una plataforma para un escáner 3D.
        Precio

        En general, los servos de rotación continua son algo más caros que sus homólogos convencionales. Por ese motivo puede que decidamos

        Como ejemplos de servo de rotación continua, tenemos el DM-S0090D, un servo de rotación continua de 9g, similar al servo SG90. Tiene un coste de 3,1€ (casi el doble que el SG90). Las características del DM-S0090D son,

        Tensión: 3.7V ~ 6.0V
        Torque: 1.5kg.cm (4.8V) a 1.6kg.cm (6V)
        Velocidad: 0.10 seg/60º (4.8V) a 0.08 seg/60º (6.0 v)
        Dimensiones: 22.9 x 12 x 22.5mm
        Peso: 9g
        Precio 7€

        arduino-servo-rotacion-DM-S0090D

        En un tamaño superior, tenemos el servo SM-S4306R y otros modelos de la misma familia, que son que son similares en características y dimensiones al MG-996R. En el caso del SM-S4306R las características son,

        Tensión: 4.8V ~ 6.0V
        Torque: 5kg•cm (4.8V) a 6.2kg•cm (6V)
        Velocidad: 0.17 seg/60º (4.8V) a 0.13 seg/60º (6V)
        Dimensiones: 40 x 19 x 43mm
        Peso: 44g
        Precio: 3.70€

        arduino-servo-rotacion-SM-S4306R

        Los otros modelos de la familia del SM-S4306R tienen características similares pero distinto par. Así, el SM-S4309R tiene un par de 7.9kg·cm (4.8V) a 8.7kg·cm (6V) y el SM-S4315R un par de 14.5kg·cm (4.8V) a 15.4kg·cm (6V).

        Por último, veréis que también se venden servos modificados, como el SG90 o el MG996R. Como hemos dicho, incluso podemos modificar nosotros mismos estos servos. Sin embargo el rendimiento suele ser inferior a los servos de rotación continua, y carecen del potenciómetro para calibrar el punto neutro, por lo que tendremos algún tipo de deriva.
        Esquema de montaje

        La conexión es idéntica a la de un servo convencional. Alimentamos el servo aplicando una tensión de 4,8 a 7,2V. Excepto en el caso de servos muy pequeños, lo normal es que Arduino no disponga de potencia suficiente para accionar el servo, y deberemos usar una fuente de tensión externa.

        arduino-servo-rotacion-continua-montaje

        Por otro lado conectamos el pin de señal a una salida digital de Arduino.

        arduino-servo-rotacion-continua-conexion
        Al usar varias fuente de tensión recordar poner siempre en común todos los GND. De lo contrario podríais dañar algún componente.
        Ejemplos de código

        Como hemso dicho, el control de un servo de rotación continua es idéntico al control de un servo convencional, la única diferencia es el comportamiento del servo, que en el caso de un servo de rotación continua variará la velocidad en lugar de la posición.

        por tanto, usamos la librería “servo.h”, incorporada en el IDE Standard, que nos permite controlar hasta 12 servos en Arduino Uno/Nano, y hasta 48 en Arduino Mega.

        El siguiente ejemplo hace variar la velocidad del servo de rotación continua entre servo parado, servo al 100% de velocidad en un sentido, y servo al 100% en el sentido contrario, manteniendo cada velocidad 1.5 segundos.

        #include <Servo.h>

        Servo myservo; // crea el objeto servo

        int vel = 0; // velocidad del servo

        void setup() {
        myservo.attach(9); // vincula el servo al pin digital 9
        }

        void loop() {
        //servo parado (equivalente a angulo 90º)
        vel = 90;
        myservo.write(vel);
        delay(1500);

        //servo 100% CW (equivalente a angulo 180º)
        vel = 180;
        myservo.write(vel);
        delay(1500);

        //servo 100% CCW (equivalente a angulo 0º)
        vel = 0;
        myservo.write(vel);
        delay(1500);
        }
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26

        #include <Servo.h>

        Servo myservo; // crea el objeto servo

        int vel = 0; // velocidad del servo

        void setup() {
        myservo.attach(9); // vincula el servo al pin digital 9
        }

        void loop() {
        //servo parado (equivalente a angulo 90º)
        vel = 90;
        myservo.write(vel);
        delay(1500);

        //servo 100% CW (equivalente a angulo 180º)
        vel = 180;
        myservo.write(vel);
        delay(1500);

        //servo 100% CCW (equivalente a angulo 0º)
        vel = 0;
        myservo.write(vel);
        delay(1500);
        }
        ------------------
        saludos

        Comentario


        • #5
          Sí, lo he leído. Y el problema es que no hace caso para ningun angulo que pongas en la programación.

          Comentario

          Anuncio Footer B3 Mensaje

          Colapsar

          Anuncio Footer B5 Mensaje (Mobile) 300x600

          Colapsar
          Trabajando...
          X