miniservo-2

¿Qué es un servomotor?

Un servomotor es un pequeño motor que es capaz de girar entre 0 y 180 grados. Lo interesante de los servomotores es que nosotros decidimos a qué posición o ángulo deben moverse. Durante el curso llamaremos a los servomotores miniservos para diferenciarlos de los servos de rotación continua, capaces de girar más de 180 grados.

transportador_miniservo-675x408
OJO

IMPORTANTE: Si utilizas muchos motores y el puerto USB puede que no haya suficiente energía para alimentarlos a todos. Siempre que utilices servomotores recuerda alimentarlos mediante el portapilas. Recibirán mucha más energía a la hora de moverse.

Manejando el miniservo

Vamos a hacer un pequeño ejercicio para averiguar cómo funciona el miniservo. Para ello ponle uno de sus cabezales y conéctalo a un pin digital. No te preocupes por la opción de Oscilador, le dedicaremos un post más adelante.

Queremos mover el miniservo a los ángulos 0º, 45º, 90º, 135º, 180º. Para ello utilizamos el bloque Mover y escribimos el ángulo al que deseamos que se desplace.

miniservo_ejemplo1 conexion_servomotor
OJO

IMPORTANTE: Todos los servomotores del mercado pueden experimentar vibraciones en los ángulos 0º o 180º. Esto se produce debido a las tolerancias de fabricación y puede acortar la vida de tu motor. Si tu servo vibra en estos ángulos programalos para moverse a un ángulo cercano como 5º o 175º para evitar dichas vibraciones. Recuerda ademas poner siempre un bloque Esperar tras mover un miniservo ya que si realizas cambios de dirección a gran velocidad puedes llegar a quemarlo. Una pequeña espera después de cada movimiento protegerá al miniservo de movimientos bruscos.

Controlando el miniservo utilizando un potenciómetro

Ahora que sabemos cómo utilizar el miniservo, vamos a probar a controlar su posición utilizando un potenciómetro

conexion_miniservo_potenciometro

¿Recuerdas el bloque mapear? Utilizamos el bloque mapear siempre que tenemos la necesidad de convertir una escala en otra distinta. Por ejemplo, en el caso del potenciómetro, éste da valores entre 0 y 1023, mientras que el miniservo solo puede moverse entre valores de 0 y 180. La solución más sencilla es mapear el valor del potenciómetro de 0-1023 a 0-180 para poder controlar correctamente el miniservo.


miniservo_ejemplo_2

Para realizar este programa deberás utilizar el bloque genérico del miniservo. Lo encontrarás en Componentes->Avanzados. En el primer hueco deberás poner el número de pin al que has conectado el miniservo o, tal como hemos realizado en otras ocasiones, la variable que almacena dicho número. En avanzados encontrarás dichas variables. ¡Mueve ahora el potenciómetro! Podrás controlar grado a grado la posición del miniservo.

Aún hay más

    A continuación te proponemos algunas ideas para seguir practicando:

  • Con el sensor de luz y el miniservo crea un medidor analógico de luz de forma que el miniservo se mueva a un ángulo u otro dependiendo de la luz recibida.
  • Crea un buscaluz para que tu placa solar busque siempre el ángulo ideal para absorber los rayos del sol.
  • Crea un semáforo con barrera utilizando varios LED y un miniservo.

¿Ganas de practicar más? ¡Mira el siguiente vídeo!


Los miniservos son ideales para crear multitud de máquinas y robots. Con los miniservos podrás controlar a qué ángulo se moverá un brazo, un engranaje, o cualquier otro mecanismo. Usa miniservos y controlarás tus inventos con total precisión.

9 comentarios

  1. Pingback: La potencia sin control… el miniservo | ...

  2. Hola. Veo que el tema de tutoriales de Bitbloq2 va despacio, pero además cuando publicais uno nuevo la información que suministrais es bastante escasa, dabaiis bastante más en los de Bitbloq original (1) Para las pocas opciones que tiene la ficha del servo ¿no podríais haber explicado ya lo que es eso del “oscilador”?.
    Muchas gracias.

    1. Julián Caro

      Hola JavierT

      Te pedimos disculpas por la lentitud de ciertas publicaciones. Intentamos que estén lo más pronto posible. Esta semana publicaremos unas cuantas más para que puedas avanzar.

      Nos sería de gran utilidad que nos explicaras, si es posible, que aspecto podriamos mejorar y que información echas de menos. Tratamos de que los post condensen todo lo necesario para introducirse en la programación de componentes sin tocar conceptos que no se han tratado previamente, por lo que puede parecer que abordamos menos conceptos ténicos. Valorariamos mucho que nos aportaras feedback al respecto para poder mejorar cada vez más.

      Respecto al oscilador. ¡Es un tema en si mismo! Es por eso que hemos decidido dedicarle un post individual. Hay muchos conceptos y componentes apasionantes que aún no hemos explicado, te pedimos un poco de paciencia para que cuando estén publicados, sean lo más interesantes y dinámicos posibles.

      Un saludo

  3. Buenos días, el post sobre el oscilador lo tienen ya colgado? no lo encuentro y me gustaría aprender un poco más sobre ello.

     

    GRacias!

    1. Julián Caro

      Buenos días Borja

      Si bien está programado como post futuro, todavía no ha salido ya que deseamos hacer cambios en la librería para mejorarla y que sea más sencilla y potente de utilizar de cara al usuario.

      Mientras tanto te dejo un ejemplo simple de cómo puedes utilizarla actualmente:

      Si a la hora de conectar el miniservo seleccionas la opción oscilador, su control, en vez de basarse en decirle a qué ángulo debe moverse, será decirle cuanto debe oscilar (como si fuera un péndulo) respecto de que grado.

      Así, el ejemplo más simple sería:

      ejemplo_oscilador

      Donde dices que servo debe oscilar, alrededor de qué ángulo, cuantos grados (amplitud total de la oscilación) y en que tiempo realiza una oscilación completa (un periodo, es decir, un giro a un lado y un giro al otro).

      Esta librería puede ser de gran utilidad en ciertos proyectos en los que quieres programar movimientos en los servos repetitivos. Por ejemplo, nuestro robot Zowi usa esta librería para realizar sus movimientos de piernas, ya que son movimientos mucho más continuos y suaves que con una programación tradicional.

      Como ya te hemos comentado, la librería sufrirá pequeñas modificaciones dentro de poco con el objetivo de hacerla aún más accesible, por lo que te pedimos un poco de paciencia.

      Un saludo

  4. Buenas tardes:

    Estoy empezando a usar el servo y tengo una duda. Si pongo varios giros como pones en tu primer ejemplo en la parte de “Loop” solo hace el primero. Si lo pongo en “Setup” si hace todos los giros.

    ¿Es normal?

    Un saludo

    1. Julián Caro

      Hola Manuel, no sé si entiendo muy bien tu duda. Creo que tu duda puede deberse a que estás utilizando un servomotor de rotación continua, en vez de el miniservo.

      Por otro lado, la función Setup es una función que solo se ejecuta una vez al iniciarse el programa. Mientras que la función Loop, se repetirá continuamente. Tiene sentido que en el loop gire continuamente, y el setup solo lo realice una vez, pero no lo contrario.

      Es un poco dificil ayudarte sin poder observar físicamente tu programación y tu servo moviéndose, si nos lo puedes hacer mostrar por algún medio podremos ayudarte mejor.

      Un saludo

  5. buenas, estoy intrigado con lo de los servos. Yo pensaba que se controlaban por PWM, porque entiendo que no hay otra manera de sacar, por simulación, un rango de valores más allá de 0 y 1 de un pin digital. Pero compruebo ahora que funciona igual en otros pines que los preparados para PWM. ¿Cómo es eso?

    1. Enrique Heredia

      Hola José, esto es posible ya que la librería que gestiona el uso de los servos (Servo.h) ya transforma el valor entero que pasamos (entre 0 y 180) al PWM correspondiente. Genera el PWM por software. Puedes simular un PWM tu mismo poniendo en HIGH y LOW cualquiera de los pines digitales, por ejemplo, si enciendes un LED, lo mantienes durante 500ms y lo apagas durante otros 500ms ya tienes un PWM de un pulso por segundo.
      ¡Un saludo!

Los comentarios están cerrados.