MINISERVO

¿Qué es un miniservo?

miniservo ¡Que no te engañe su tamaño! ¡Adorarás a estos pequeñines!

Un miniservo es un pequeño motor que es capaz de girar entre 0 y 180 grados,o lo que es lo mismo, la mitad de una circunferencia. En muchos de los inventos y actividades que os proponemos se utilizan los miniservos para realizar multitud de acciones, desde controlar las pinzas del printbot beetle a controlar a los fantásticos erizos bailones.

Importante:
Siempre que utilices servos y miniservos, recuerda alimentarlos mediante el portapilas, recibirán mucha más energía a la hora de moverse. 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 prográmalos 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.

Lo interesante de los miniservos es que nosotros decidimos a que posición o ángulo se moverá. A continuación realizaremos un par de ejemplos para que aprendas a utilizarlo. ¡A trabajar!

Necesitarás:

  1. 1 x ZumBloq Miniservo
  2. 1 x ZumBloq Sensor de luz (LDR)
  3. Una placa controladora ZUM BT 328 o compatible con Arduino UNO
  4. Un cable USB
miniservobitblq

¿Tienes todo? Empecemos:

Ejemplo 1

Mover un Miniservo a los ángulos 0,45,90,135 y 180 grados

¡Suena muy complicado! ¡Pero no lo es! Mover el miniservo al ángulo que tu desees es tremendamente sencillo ¡veámoslo! Lo primero será conectar el miniservo al pin digital 10.

Una vez realizado el programa deberemos ir a la pestaña de bitbloq servos y seleccionar el primero de sus bloques, aquel que tiene la opción de escribir un ángulo entre 0 y 180 grados.

Como hemos dicho, queremos que el servo se mueva primero al ángulo 0º hasta 180º, pasando por 45º, 90º y 135º. El programa quedará de la siguiente manera:

Ejemplo 1 miniservo

El programa repite el mismo bloque para mover el miniservo a cada ángulo. Recuerda que debes seleccionar un valor del ángulo entre 0 y 180 grados, si no, el servo siempre girará o a 0º, o a 180º. Hemos dejado un tiempo de 1000 ms (1 segundo) entre orden y orden para que al servo le dé tiempo a llegar al ángulo deseado.

Es conveniente que le pongas alguno de los cabezales de plástico al miniservo, si no te será difícil ver cómo se mueve a cada posición.

Ejemplo 2

Crear un medidor de luz con el sensor de luz y el miniservo

En este ejercicio vamos a variar el ángulo del miniservo dependiendo del valor que nos dé el sensor de luz, es decir, indicaremos la intensidad de la luz moviendo el ángulo del miniservo . Para ello puedes colocarle al miniservo un cabezal que haga las veces de aguja. ¡Vamos a medir la luz!

Para ello tendrás que conectar los componentes de la siguiente forma:

ZUM-A0-10

¡Un momento! Antes de que vayas hacia abajo de la pantalla para ver cómo se hace… ¡Inténtalo tú mismo! Ya sabes manejar el sensor de luz, mapear sus valores y controlar un miniservo así que ¡baja sólo cuando tengas la solución! Recuerda que el sensor de luz te da valores entre 0 y 500.

reloj-de-arena-10375

¿Lo conseguiste? Seguramente hayas hecho algo así:

ejemplosensordeluzminiservo

Como el sensor de luz da valores entre 0 y 500, y el miniservo solo puede moverse entre 0 y 180 grados, es importante convertir esos valores, mapearlos. Una vez que están mapeados podemos usar directamente la variable que los contiene, luz, para controlar el miniservo e indicar de forma analógica la cantidad de luz que recibe el sensor.

Viendo estos ejemplos en movimiento uno se da cuenta de que… ¡Tiene el poder! Puedes hacer que el miniservo se mueva a la posición exacta que tu desees en cada momento, si lo sumas a otros mecanismos… ¡Las posibilidades son infinitas!

8 comentarios

  1. Hola me estoy volviendo loco intentando mover los servos de rotación continua juntos ,lo que quiero conseguir es avanzar , retroceder con mi aparato. me gustaría que alguien me diera una pista ya que por mucho que lo intento no lo consigo, una ayudita por favor

    1. Julián Caro

      Hola Jose

      En este link puedes encontrar como mover los servos de rotación continua.

      El servo de rotación continua tiene un bloque especializado para él:

      servo100

      Programa ambos servos tal cual aparece en la imagen teniendo en cuenta el pin donde has conectado cada uno.

      Para avanzar usando un printbot recuerda que cada motor va a girar en una dirección. Por ejemplo, si el motor de tu derecha se mueve en sentido antihorario, el motor de tu izquierda deberá moverse en sentido horario. En el caso de querer retroceder es la misma idea con los sentidos cambiados.

      ¡Animo! ya veras como muy pronto tus servos se mueven como tu quieres. Si tienes cualquier pregunta no dudes en comentárnoslo.

  2. Hola ,antes de nada agradeceros el magnifico trabajo y los buenos ratos que pasamos mi hijo y yo investigando con bitbloq.Y ahora la pregunta ¿como podríamos lograr un giro más lento de los servos de rotación continua.Gracias

    1. Julián Caro

      Hola Carlos.

      Controlar la velocidad de un servo de rotación continua es un poco complicado. Los servos de rotación continua son servos normales a los que se les ha modificado sus límites. De forma que cuando le decimos: muévete a 180 grados, gira en un sentido de forma indefinida intentando alcanzar los 180 grados (¡pero nunca los alcanza!) y si le decimos ve a 0 grados, ocurre lo mismo pero en sentido contrario. La velocidad en un servo de rotación continua no es lineal por lo que lo mejor que puedes hacer es experimentar con ella hasta tener un valor que te guste. Puede experimentar con la velocidad y sentido de giro de los servos de rotación continua usando el bloque que normalmente usamos para los miniservos:

      bloqueservocontinuo

      Prueba a poner el motor a 180, y luego a 0. El motor se moverá en una u otra dirección. Ahora ponlo a 90 grados. Si está bien calibrado el motor se parara. Si pones por ejemplo 100 o 120 grados, el motor se moverá a baja velocidad en una dirección, si por el contrario pones 80 o 70 se moverá lentamente en la dirección opuesta. Ve probando valores hasta que encuentre la velocidad a la que desees moverte.

      Si tienes cualquier otra pregunta, no dudes en decírnoslo.

      Un saludo

  3. He adquirido un panel LCD BQ. He intentado hacerlo funcionar con vuestras instrucciones, pero no lo he conseguido.

    Creo que es problema de la pantalla, porque aunque se ilumina, no aparece el texto, y parpadea la retroiluminación. ¿que puedo hacer?

    Gracias y saludos

    1. Julián Caro

      Hola Ivan

      Sigue estos pasos:

      -Mira la pantalla por la parte trasera y asegurate de que el interruptor negro este puesto hacia abajo, es decir en la posición “IIC”. Vuelve a cargar el programa a la placa, ahora debería funcionar.

      -Si tras hacer esto la pantalla no muestra bien el mensaje y sigue parpadeando, puedes utilizar un destornillador de estrella para ajustar el potenciómetro trasero (justo al lado del interruptor).

      Si aún así sigues teniendo dificultades por favor escribe a:

      soporte.3d@bq.com

      Un saludo

  4. Hola…no entiendo por qué en el ejemplo ejemplo anterior hay que usar el segundo bloque mapear “largo” y no sirve el primero, si total es decirle que los valores de la variable (¿de 0 a 500 no está ya “metido” en la variable?) pasen a ser valores entre 0 y 180. La verdad es que al programar, en la solución que aparece en el ejemplo sí se mueve un ángulo determinado y cuando lo hago con el otro bloque (el corto) se mueve también pero con menos recorrido, como hasta 90 como mucho. No lo entiendo.
    Gracias.

    1. Julián Caro

      Buenos días Candelas.

      El primer bloque de mapear, el que menos opciones te ofrece, está diseñado para mapear por defecto desde 0 a 1023 al rango que tu pongas , de 0 a 180 en este caso.

      Como hemos dicho, nuestro sensor de luz debido a como está construido tiene un rango aproximado entre 0 y 500. Por lo que si usas el primer bloque no estarás haciendo una buena transformación entre ámbos rangos y te sucederán cosas como la que has observado.

      Por eso, en el caso del sensor de luz, usamos el segundo bloque, que te permite hacer una transformación de 0 a 500 a 0 a 180. Con lo que asignas cada posible valor del sensor de luz al movimiento de tu miniservo.

      Puedes encontrar más información sobre el funcionamiento de los bloques mapear en:

      http://diwo.bq.com/programando-los-bloques-matematicos/

      Cualquier duda o pregunta, ya sabes donde estamos.

      Un saludo

Los comentarios están cerrados.