SERVO

¿Qué es un servo de rotación continua?

potenciometro

Un servomotor de rotación continua es más grande que el miniservo y su funcionamiento se parece al de un motor convencional. Este servo no se detiene en una posición sino que puede girar en un sentido continuamente, de ahí su nombre. Uno de sus usos más frecuentes es utilizar dos servos para mover las ruedas de un PrintBot, como el Renacuajo el Beetle.

o el Evolution.

En general usaremos los servos de rotación continua en distintos robots y mecanismos. ¿Quieres aprender a utilizarlos?

Necesitarás:

  1. 1 x ZumBloq Servo rotación continua
  2. Una placa controladora ZUM BT 328 o compatible con Arduino UNO
  3. Un cable USB
servocontinuo

Empecemos:

Ejemplo 1

Programar un servo de rotación continua para que gire en sentido horario, se detenga y gire en sentido antihorario.

Vamos a aprender cómo programar el servo de rotación continua para que gire en uno u otro sentido y también para que se detenga, para ello conectaremos el servo al pin digital 11.

ZUM-10

Aunque el servo tenga muchas posiciones, y por tanto el primer pensamiento sea pensar que debería ser conectado a un pin analógico, este es controlado por nuestra placa ZUM a través de un pin digital y mediante un tren de pulsos o PWM, de momento es un poco complicado de explicar, así que lo veremos más adelante, ten solo presente que el servo debemos conectarlo a uno de los pines digitales.

¡Realicemos el programa!

ejemploservocontinua

Observa bien el programa y el bloque del servomotor. Lo primero que tienes que configurar, como siempre, es el pin al que has conectado el servo, en este caso el pin digital 11. Dentro del bloque tienes un selector que te permite seleccionar el sentido de giro, horario, antihorario o detener el servo, por último tienes una pestaña llamada pausa que establece cada cuánto tiempo se le va a decir al servo que debe seguir girando. Si has hecho todo bien tu servomotor girará en sentido horario un segundo, se detendrá otro, y volverá a girar, esta vez en sentido antihorario, otro segundo.

¡Espera un momento! ¡Me estás engañando! ¡Esto no gira en sentido horario! ¡Está mal! ¿Dónde está el número del servicio técnico?

¡Tranquilo! En realidad lo que está sucediendo es lo siguiente: El sentido de giro de los servos NO se mira desde arriba, sino desde la parte inferior del servo. ¿Por qué así? Porque a la hora de programar printbots con ruedas, es mucho más intuitivo para decidir en que sentido queremos que avance o gire nuestro robot.

Después de haber aprendido a utilizar tantos componentes y… ¡pudiendo ahora mover cosas! estarás deseando crear una máquina que ponga la lavadora y saque a pasear al perro. ¡Poco a poco! ¿Por qué no pruebas, ahora que sabes cómo utilizar un servo continuo, a construir un zootropo? ¡Te aseguro que te divertirás!

15 comentarios

  1. No entiendo el significado de la ‘Pausa’ . En el texto se dice que fija cada cuento tiempo se le dice al servo que debe seguir girando, lo que parece indicar que el servo necesita que le recuerden la orden de seguir girando. Si en el esquema anterior se introduce en la entrada ‘Pausa’ el valor 1000 en lugar de 30 y se eliminan los bloques ‘Esperar’, el resultado es el mismo.

    El servo siempre gira a velocidad constante. ¿Como se le puede hacer variar la velocidad?. He probado conectándolo al pin 3, que acepta el funcionamiento PWM, y escribo en ese pin un valor analógico variable entre 0 y 255.La tensión de salida varía de 0 a 5 V, pero el servo gira siempre a la misma velocidad

  2. Julián Caro

    Buenos días jacasti.

    Muchas gracias por tu apreciación.

    Efectivamente, el efecto de la pausa del bloque de servos de rotación continua es el mismo que el de una espera normal. De hecho, si observas la pestaña código situada arriba a la derecha, podrás observar como ámbos son la misma función delay. Por lo que puedes usar la pausa como una espera directamente. Aunque nosotros siempre recomendamos hacer una pausa de poco tiempo, como 30 ms, y realizar tu mismo la pausa grande con el bloque esperar.

    En cuanto a cómo controlar la velocidad de tu servo. Un servomotor no tiene exactamente el mismo funcionamiento que un motor DC. En el caso de un motor de corriente continua, podras controlar su velocidad tal cómo dices.

    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 encuentres la velocidad a la que desees moverte.

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

    Un saludo

    1. Hola:
      Me he animado a preguntarle una duda de la que no encuentro respuesta en ningún sitio y tiene que ver con una frase que escribe. Cuando dice: “… nosotros siempre recomendamos hacer una pausa de poco tiempo, como 30 ms” refiriéndote a los servos de rotación continua, ¿cuál es el motivo de esta recomendación? He visto esto en muchos proyectos de bitbloq sin entender el porqué.

      Gracias

  3. Hola!
    Soy profesor de Tecnología, tenemos el libro de la editorial Teide en 1º de la ESO y con la nueva ley de educación estamos analizando libros … y nos hemos decidido por seguir con Teide, pero los nuevos, que nos gustan.
    Mi duda es la siguiente….nosotros tenemos la placa Arduino UNO R3 y estamos utilizándola mediante el IDE de Arduino….previamente hemos dado Processing….si ahora apostamos por los nuevos libros de Teide……hablan contínuamente de la placa ZUM y de bitbloq para realizar programación y proyectos… He realizado algunas pruebas y la placa de Arduino se puede programar con bitbloq… vamos que parecen compatibles……., pero ¿son compatibles los sensores y actuadores que se distribuyen para las placas?…

    1. Julián Caro

      Hola Juan Carlos

      Tanto nuestra propia placa, la bq Zum, como sus sensores son totalmente compatibles con Arduino y libres. Eso significa que puedes utilizar cualquiera de nuestros sensores y actuadores con una placa Arduino sin ningún problema. Lo único que tendrás que hacer es conectar cables tipo “jumper” o cables unifilares a los pines de cada sensor para poder utilizarlos junto con placas Arduino.

      bitbloq es totalmente compatible con las placas Arduino, por lo que podrás utilizarlo para programar en ellas.

      En el equipo educativo de bq estamos trabajando duro para ofreceros contenido y apoyo al profesorado que realmente os sea de utilidad. Para cualquier duda o sugerencia puedes dirigirte a la siguiente dirección de email:

      educacion@bq.com

      Un saludo

      1. Gracias por contestar!!!!
        Pues tomo nota del correo…para futuros problemas o dudas..
        Una duda….. bitbloq solo funciona online???
        Otra… si quiero que un motor de c.c. (no servo) cambie de sentido de giro en la placa Arduino Uno he de conectar un driver… en la placa zum también? .. o puedo conectar el motor a dos salidas y enviar 1,0…. y 0,1 para que cambie de sentido de giro…. o incluso puedo conectarlo entre dos salidas analógicas y enviando diferentes tensiones con analogWrite (salida pwm, 0-255) controlar su velocidad……
        Gracias y saludos,

        1. Julián Caro

          Hola Juan Carlos. La placa ZUM funciona siguiendo los mismos principios que cualquier otra placa Arduino, pero con distintas especificaciones. Te dejo los datos de la placa Zum en caso de que desees saberlas:

          http://www.bq.com/es/placa-zum-bt

          Por supuesto que puedes conectar un motor DC y regular su velocidad tal como comentas. Pero tendrás que tener en cuenta la intensidad que consume el motor y su voltaje. Al igual que Arduino en muchas ocasiones necesitarás un driver. Por supuesto la placa zum es compatible con los drivers el mercado y tambien con las propias shield de Arduino.

          Un saludo

  4. Buenos días,

    Acabamos de recibir el printbot evolution y mi hijo y yo estamos empezando a comprobar el funcionamiento de la placa ZUM con cada uno de los componentes electrónicos incluidos con el producto, según las instrucciones de los mini-tutoriales como este y a través de la plataforma Bitbloq. Por cierto, enhorabuena por la cantidad de material explicativo que tenéis en la Web.

    El caso es que tras probar con éxito el control del “LED D13″, hemos empezado con los servos de rotación continua y lo cierto es que tras abrir el programa, compilarlo y cargarlo correctamente en la placa, ninguno de los dos servos se mueve en absoluto, ¿?. Hemos confirmado con el log de BitBloq que la compilación y la carga son correctas, que el PIN digital del programa se corresponde con aquel en el que hemos “pinchado” el componente, pero no hay manera de que funcione.

    Cualquier idea al respecto será bienvenida, porque no quiero que se pierda esa motivación e ilusión inicial que veo con el producto. ¿Es posible que algún elemento esté defectuoso?

    Gracias por adelantado y un saludo.

    1. Julián Caro

      Buenos días Antonio.

      Muchas gracias por tus ánimos, intentamos proporcionaros la mayor cantidad de contenidos posibles para que podáis transmitir la ilusión a nuevos inventores.

      Respecto al problema que comentas con los servos. ¿cual es el programa que has cargado en la placa? ¿El programa del siguelineas o el que se observa en la entrada? En el caso de que hayas cargado el programa que se observa en la entrada, y los servos no se muevan, por favor comprueba en orden las siguientes cosas:

      -Comprueba que el botón rojo en la placa ZUM está en la posición de encendido ON y no en OFF. Este botón no desactiva la placa por completo, si no que corta la alimentación de los pines para que los motores no se muevan mientras estás programando.

      -Alimenta la placa a través del portapilas y no por usb. A veces cuando conectamos un gran número de componentes el ordenador no es capaz de enviar toda la energía que estos necesitan para moverse.

      -Carga el ejemplo que se observa en esta entrada y observa si se mueve el motor o no.

      -En el caso de que no se muevan, puede que los motores no estén calibrados, este vídeo aunque esté pensado para el robot renacuajo te ayudará a calibrarlos en un momento: http://youtu.be/krCLMx88gvc

      -SI nada de esto funciona por favor escribe a support-bitbloq@bq.com para que te ayuden lo más rápido posible.

      ¡Y no perdáis la ilusión! La tecnología, a pesar de que nos esforzamos mucho por que sea perfecta, nunca es perfecta, nunca aprenderás algo nuevo sin haberte tropezado unas cuantas veces.

      Un saludo

      1. Perfecto Julián,

        Era exactamente el primer punto, no teníamos en ON el botón de encendido de la placa. Tiene todo el sentido la existencia de esta opción para poder desarrollar con comodidad. A partir de ahí, tuvimos que calibrar uno de ellos y todo correcto… continuamos con la experiencia.

        Muchas gracias por tu rápido, eficaz y eficiente soporte.Un saludo.

  5. Buenos días,
    regalamos los pasados reyes Mi Primer Kit de Robótica y el PrintBot Recanuajo a nuestro hijo. Le gustó mucho el regalo pero, por distintas razones, no intentó hacer nada con él hasta ahora. Y ahora que lo intenta, el primer problema con el que nos encontramos es que los servos no funcionan. Aunque no sea la misma placa, entiendo que tú podrías ayudarnos y que, a lo mejor, nuestro problema es compartido con alguien más.
    Hemos probado a cargar el programa original para el Renacuajo y nada. Probamos con la calibración de los servos, intentando descalibrarlos para que se movieran, y nada. Nuestra placa no tiene un switch on/off, tiene uno de 3,3/5v y un pulsador. Cuando alimentamos la placa, el servo (ahora ya sólo probamos con uno para hacerlo funcionar) funciona unos ms (un giro de unos 10 grados, 15 como mucho) y se para, haciendo lo mismo cada vez que accionamos el conmutador 3,3v/5v, en un sentido u otro. El pulsador no tiene efecto.
    Agradeceríamos cualquier sugerencia.
    Muchas gracias y un saludo.

    1. Julián Caro

      Hola Gema

      Lo primero es conseguir que tu hijo no se desanime, la tecnología a veces es un poco cabezona y no funciona a la primera, pero cuando conseguimos sobreponernos a dichos problemas y empieza a funcionar la satisfacción es muy grande.

      Si no me equivoco estaís usando una placa Freeduino. Te recomiendo que siempre mantengas el switch en 5V.

      Por otro lado ¿estás probando el uso de los motores con la placa alimentada directamente por un cable USB? Puede que la placa no tenga suficiente energía para hacerlos girar. Te recomiendo que la alimentes directamente utilizando el portapilas, a ver si así los motores se mueven.

      Si usando el ejemplo sencillo no funciona bien, puede que haya algún problema con tus servomotres o tu placa no sea capaz de darles la suficiente energía. Por lo que probablemente habría que sustituirlos.

      Si ese es el caso escribe a soporte.3d@bq.com contándoles el problema, intentarán solucionarlo lo más pronto posible.

      ¡Animo! Espero que vuestro robot se mueva muy muy pronto.

      Un saludo

      1. Sí. Tenemos el Renacuajo montado entero: alimentado con su pack de pilas nuevecitas. Aunque ya había leído tu post anterior, dónde ya comentaba este tema de las pilas, ni se me habría ocurrido alimentarlo a través del usb: se supone que tiene que caminar autónomamente siguiendo una línea!
        Todavía teníamos esperazas de que fuera una chorrada que hacíamos mal, pero me temo que habrá que sustituirlos.
        Escribiremos a soporte siguiendo tus instrucciones.
        Muchas gracias y un saludo.

        1. Buenos días Julián,
          sólo decir que con las ideas que nos dio soporte, hemos hecho funcionar al siguelíneas. El problema estaba en el código!
          Muchas gracias y un saludo!

          1. Julián Caro

            Hola Gema.

            Me alegra mucho que el problema se haya solucionado tan rápido.

            ¡Disfrutad de la aventura!

            Un saludo

Los comentarios están cerrados.