Skip to content

VIDEO 15: Servos de rotación continua

Juan Gonzalez-Gomez edited this page Apr 10, 2018 · 20 revisions

Vídeo

Click to see the youtube video

Haz click en la imagen para ver el vídeo en Youtube

Descripción

Aprenderemos a manejar los servos de rotación contínua, modelo SM-4303R, con el controlador MotorBit. Y esto nos permitirá construir nuestro primer robot móvil: el icebot 0.1. Usaremos circuitos digitales sencillos para mover el robot

Colección

Academia-Jedi-HW-15.zip: Colección para este tutorial. Descargar e instalar

Contenido

Introducción

Los servos que hemos usado hasta ahora nos permiten fijar el ángulo de salida de su eje. Esto se denomina control por posición. Estos servos, además, tienen un tope mecánico que impide que giren más de 180 grados

Exiten otro tipo de servos, conocidos como servos de rotación contínua. Se controlan por velocidad en vez de por posición, y NO tienen topes mecánicos, por lo que pueden girar continuamente.

En realidad, funcionan como motores de corriente continua, con la ventaja de que la etapa de potencia está dentro del servo y su interfaz electrónica es igual que la de los servos tradicionales. Son muy útiles para construir tu primer robot móvil

Típicamente los servos de rotación contínua los obtenemos trucando los servos normales: quitando los topes y cambiando el potenciómetro por una resistencia fija, o fijando la posición del propio potenciómetro. En esta página puedes ver las diferentes formas de trucar un servo Futaba 3003. El caso 2 es el más interesante para la construcción de robots móviles

Los servos trucados se han utilizado muchísimo para construir pequeños robots móviles con fines educativos. Uno de los primeros en España fue el Microbot Tritt (Año 1996)

El Skybot (2004) tenía una estructura diferente, hecha a partir de piezas cortadas por láser, y también usaba Servos Trucados

El primer printbot móvil (Robot imprimible) fue el Miniskybot (2010), que heredó los servos trucados del Skybot

El trucaje de servos se ha estdo usando durante muchos años. Sin embargo, ya existen a la venta servos trucados, como por ejemplo el SpringRC SM-S430R que es el que usaremos en este tutorial

El servo SpringRC SM-S4303R

Usaremos el servo de rotación continua SpringRC SM-S430R. Lo puedes conseguir en muchas tiendas por internet, como por ejemplo en Bricogeek: Servo SM-4303R Bricogeek. Esto NO es un enlace patrocinado. Lo pongo aquí porque Bricogeek funciona muy bien, sin más

Como el resto de servos, viene con diferentes cabezas que se atornillas al eje de giro

Le colocamos la cabeza que queramos. En este tutorial yo le pondré la que tiene 4 brazos, que es la que usaremos para el colocar las ruedas del Icebot

Estos servos son los que se utilizan en muchos de los printbots libres, como el Renacuajo, Beetle o el Evolution

Beetle Renacuajo

El modelo 3D del servo SM-S4303R, hecho con FreeCAD 0.16, junto a todas sus cabezas, está disponible en la Biblioteca de piezas de FreeCAD

Accesorios impresos en 3D

Para trabajar con los servos SM-S4303R desde nuestro panel de corcho*, tenemos estas piezas imprimibles en 3D. En este tutorial usaremos 2 servos, por lo que es útil imprimir 2 soportes, de cualquiera de las dos versiones

Pieza Descripción
Soporte para servo SM-4303R en vertical. Soporte pequeño para colocar el servo en el cocho en posición vertical
Soporte para servo SM-S4303R. Inclinado Colocación del servo SM-S4303R en posición inclinada

El controlador MotorBit

Los servos de rotación continua, a todos los efectos, se comportan como motores de corriente continua clásicos. Empezaremos por el controlador más simple posible: MotorBit. Nos permite llevar el motor a 3 estados: giro en sentido horario, giro en sentido antihorario y parado. Cuando se mueve, siempre lo hará a su máxima velocidad. No podemos establecer otra

Necesitamos por tanto usar 2 bits de control. En el controlador Motorbit, uno de los bits controla si el motor está activo o no (On/off) y el otro el sentido de giro (horario/antihorario)

El funcionamiento del controlador MotorBit se detalla en la siguiente tabla de verdad. Cuando el bit de encendido/apagado (on) está a 0, el motor se encuentra parado, con independencia del valor que tenga el bit de dirección. Cuando el bit de on está a 1, el motor estará girando, y su sentido de movimiento dependerá el del valor del bit de dirección: Cuando está a 1 gira en sentido horario, y cuando está a 0, lo hace en el antihorario

Ejemplo 1: Control con dos pulsadores

Empezaremos por el circuito más sencillo: un controlador MotorBit cuya salida está conectada a un servo (D0) y sus entradas a dos pulsadores (D13 y D11) que nos permiten cambiar los bits de control manualmente. Esto nos servirá para experimentar y comprobar cómo funciona. Los pulsadores están conectados a dos LEDs externos para ver visualmente el estado de los bits de control

El montaje es el siguiente

El servo se puede alimentar directamente desde el USB del ordenador, pero para evitar los picos de arranque he conectado una pila de 9v

Para crear el circuito de ejemplo, instalamos la colección Academia-Jedi-HW-15.zip y seleccionamos el componente MotorBit, que se encuentra en Varios/Motor/SM-S4303R/Motorbit

Lo colocamos:

Establecemos las conexiones y construimos el siguiente circuito. También lo podemos cargar directamente desde Archivos/Ejemplos/1-Ejemplo/1-Motor-pulsadores

Lo cargamos en la placa para probarlo. Lo podemos ver en funcionamiento en este vídeo de Youtube:

Click to see the youtube video

Calibrando el servo

Al probar el servo con el ejemplo 1, podría ocurrir que cuando el bit de on está a 0, y por tanto el motor debería estar parado, se mueva ligeramente en un sentido u otro. Para corregirlo, y lograr que está totalmente parado, los servos SM-S4303R disponen de un potenciómetro para calibrar esta posición de reposo. Se encuentra situado en la cara del servo que está encima del cable

Con un destornillador de estrella, y con el servo conectado al ejemplo 1 (pero sin apretar ningún pulsador), giramos ligeramente este potenciómetro hasta que el servo se quede totalmente parado. Ya lo tendremos calibrado

Ejemplo 2: Moviendo dos servos

En este segundo ejemplo moveremos dos servos en direcciones contrarias. Con un interruptor seleccionamos el sentido de la marcha, y con el pulsador haremos que se muevan (El interruptor simula una palanca de cambio, de dos marchas, adelante y atrás, y el pulsador el acelerador). Es el paso previo para tener todo listo para construir nuestro primer robot

El montaje es el siguiente:

Y el circuito de prueba este:

Se han colocados dos controaldores MotorBit, uno para cada servo. Para conseguir que giren en direcciones opuestas usamos una puerta NOT entre las entradas de dirección de ambos controladores. El pulsador está conectado directamente a los bits de on de ambos controladores. De esta forma, al apretarlo comienzan a moverse los motores

En este vídeo en youtube se puede ver su funcionamiento

Click to see the youtube video

El robot ICEbot

Usando dos servos de rotación continua ya podemos construir nuestro primer robot móvil: el Icebot 0.1

Es un robot de tipo diferencial, en el que cada motor acciona una rueda de forma independiente: un servo para la rueda derecha y otro para la izquierda

Construyendo el Icebot 0.1

Las instrucciones para montar el icebot así como el listado de material lo puedes encontrar en este enlace

En esta foto se resumen todos los materiales necesarios para construir la versión 0.1 del icebot

Y en esta otra se puede ver un despiece, para hacer una idea de dónde va cada pieza

Movimientos del robot

Al ser un robot de tipo diferencial, las dos ruedas son independientes, cada una controlada por un servo. Cada rueda puede estar en tres estados: parada, girando en sentido horario o girando en sentido antihorario. Combinando estos estados de las ruedas, conseguirmos un total de 8 movimientos diferentes para el robot, que son 9 si contamos el estado de reposo

En los movimientos tipo arco, sólo hay una rueda moviéndose, mientras que la otra está parada. Lo que se consigue es un giro cuyo centro es la rueda que está parada

Vamos a fijarnos en el movimiento de avance. Ambas ruedas, derecha e izquierda, se están movimiento

Si nos fijamos en la rotación de las ruedas, la rueda izquierda está girando en sentido antihorario y la derecha ... en ¡sentido horario! Las ruedas están rotando en sentidos opuestos. Esto es debido a que los servos están colocados en simetría de espejo. Si tomamos los servos en la posición en la que están rotando y los giramos para ponerlos en posición vertical, podemos apreciar que realmente los motores giran en sentidos contrarios

En 1 el icebot está avanzando, con las dos ruedas rotando. En 2 hemos dejado sólo los servos con las ruedas, que continúan rotando. Y en 3 se han girado los servos 90 grados para ponerlos en posición vertical, mientras continuaban girando. Podemos ver cómo el derecho gira en sentido horario y el izquierdo en antihorario

Tabla de verdad de movimientos

En la siguiente tabla de verdad se resumen todos los movimientos posibles y los valores de los bits del controlador MotorBit para conseguirlos

Ejemplo 3: Adelante

En este ejemplo moveremos el Icebot hacia adelante. Primero consultamos los valores en la tabla de verdad, para saber qué bits hay que activar para lograr ese movimiento: el servo derecho tiene que girar en sentido horario por lo que se ponen a uno su bit de dirección (dir) y encendido (on). El servo izquierdo lo tiene que hacer en setido contrario, por lo que su bit de dirección se pone a 0 y el de encendido a uno

El circuito en Icestudio es el siguiente

En este vídeo de Youtube podemos ver al icebot en movimiento

Click to see the youtube video

Ejemplo 4: Secuencia: Adelante - Stop

En este ejemplo haremos que el robot siga una secuencia simple: avanzar durante 1 segundo y pararse durante otro segundo. Luego se repite cíclicamente. El circuito es similar al del ejemplo 3, pero ahora el bit de encendido está controlador por un corazón. El sentido de giro de los motores lo dejamos fijo para que el robot vaya hacia adelante. Mirando la tabla de verdad vemos que cuando los bits de encendido están a 0, el robot está detenido, con independencia del valor de los bits del sentido de giro

En este vídeo de Youtube podemos ver al icebot en movimiento

Click to see the youtube video

Ejemplo 5: Adelante con pulsador

El ejemplo 5 es similar al 4, pero ahora el robot avanza cuando un pulsador externo, conectado a D13, está apretado, y se para al soltarlo

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicios propuestos (23 BitPoints)

Ver los detalles de los ejercicios y las entregas en el menú Archivos/Ejemplos/2-Ejercicios de la colección de este tutorial

Resumen:

  • Ejercicio 1 (Total 3 Bitpoints): Motor en 4 estados

Hacer que un servo de rotación continua realice la siguiente secuencia de movimientos, que se repiten cícliclamente:

Parado - Giro en sentido horario - Parado - Giro en sentido Antihorario

Cada estado debe durar 2 segundos. Así, estará 2 segundos parado, dos segundos girando en sentido horario, 2 segundos parado, 2 en sentido antihorario... (y se vuelve a comenzar)

Usar sólo los componentes que hemos aprendido hasta ahora, y que son los que están en esta colección

Consejo: Fijarse en los valores que deben tomar los dos bits de control del servo en los diferentes estados y usar corazones y tortugas para reproducir la secuencia

  • Ejercicio 2 (Total 5 Bitpoints): Dos Motores en 4 estados, alternativamente

Modificar el ejercicio 15.1 para que la misma secencia se reproduzca en dos servos, alternativamente. Primero el servo 1 debe realizar la secuencia: parado, giro horario, parado, giro antihorario y después el servo 2. Esta secuencia se repite indefinidamente

Consejo: Usar un multplexor 2:1 para cada entrada on de los controladores de los servos.

  • Ejercicio 3 (Total 10 Bitpoints): Icebot: Adelante - Giro derecha

Construir el icebot 0.1. Hacer que avance durante 2 segundos, y gira
hacia la derecha durante 2 segundos (con movimiento en arco). Esto se
repite indefinidamente

Consejo: En esta secuencia, el motor izquiero siempre está activado y girando en el mismo sentido

Video de cómo se mueve el robot con la solución de este ejercicio:

Click to see the youtube video

  • Ejercicio 4 (5 Bitpoints). Ejercicio Libre. Premiar la creatividad. Entregar por redes sociales o github: Pantallazos, enlaces, vídeos, etc...

Ejercicios entregados

Josep Montoliu i Sanahuja (klarojms)

Ejercicio 1

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 2

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 3

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 4 (Libre)

  • Todos los movimientos posibles del Icebot con el controlador MotorBit

  • Vídeo en Youtube:

Click to see the youtube video

Jose López

Ejercicio 1

Ejercicio 2

Ejercicio 3

Federico Coca

Ejercicio 1

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 2

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 3

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 4

  • Vídeo en Youtube:

Click to see the youtube video

Autor

Licencia

Créditos y agradecimientos

Enlaces

Preguntas frecuentes

  • ¿Dónde puedo conseguir la placa Icezum Alhambra?

Pueden conseguir una desde Alhambrabits

  • ¿Dónde puedo comprar material electrónico?. Hay muchos sitios. Uno muy bueno es Bricogeek

  • ¿Cómo aprendo a manejar github?

Hay mucha información en internet. En su momento hice este Tutorial: Github y FreeCAD para enseñar a manejarlo. Los ejemplos están hechos con ficheros de FreeCAD, sin embargo, lo que se enseña es genérico. También vale para las entregas de los ejercicios del tutorial de Electrónica digital para makers

  • Los pulsadores de la Icezum Alhambra no me funcionan

Eso es debido a que se han metido restos de flux y no hacen buen contacto. En el apartado ¡No me funcionan los pulsadores! del Tutorial 9 se indica cómo solucionarlo fácilmente

  • ¿Dónde puedo encontrar más información sobre las señales PWM?

Echa un vistazo a este post de Rincón Ingenieril sobre el tema

  • He conectado un pulsador externo pero no me funciona. He hecho un circuito para conectar el botón con un led, y al apretar se enciende el LED, pero luego no se apaga. NO funciona bien

Los pulsadores externos que se conecten a los pines de 5v de la Alhambra (D0 - D13) tiene que llevar una resistencia de pull-up o pull-down con valores entre 460 ohm y 2K. Típicamente usamos 1K. Esto hace que los conversores de nivel se configuren como entradas y que el pulsador funcione correctamente. Puedes encontrar más información En este enlace

Es un servo muy usado y muy estándar. Si buscar por internet encontrarás muchos sitios donde los vendes, a diferentes precios. Aquí en España se puede conseguir muy fácilmente a través de BricoGeek: Servo SM-4303R Bricogeek y también en Iberobotics: Servo SM-4303R Iberobotics

  • Parece ser que los servos Futaba 3003 se pueden trucar para convertirlos en rotación continua. ¿Conoces algún tutorial sobre como hacerlo?

El Futaba 3003 es uno de los servos que típicamente se han trucado para construir robots móviles con ellos. Robots como Tritt, El Skybot o el Miniskybot los utilizan. Existen muchísimos tutoriales para hacerlo. En esta página puedes encontrar todas las formas de trucarlos. El que recomendamos es el caso 2

Clone this wiki locally