-
Notifications
You must be signed in to change notification settings - Fork 83
VIDEO 15: Servos de rotación continua
Haz click en la imagen para ver el vídeo en Youtube
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
Academia-Jedi-HW-15.zip: Colección para este tutorial. Descargar e instalar
- Introducción
- El servo SM-4303R
- El robot ICEbot
- Ejercicios propuestos (23 Bitpoints)
- Ejercicios entregados
- Autor
- Licencia
- Enlaces
- Preguntas frecuentes
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
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
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 |
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
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:
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
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
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
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
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
En la siguiente tabla de verdad se resumen todos los movimientos posibles y los valores de los bits del controlador MotorBit para conseguirlos
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
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
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:
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:
- Ejercicio 4 (5 Bitpoints). Ejercicio Libre. Premiar la creatividad. Entregar por redes sociales o github: Pantallazos, enlaces, vídeos, etc...
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Todos los movimientos posibles del Icebot con el controlador MotorBit
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Juan González-Gómez (Obijuan)
- Repositorio con las colecciones de la Academia Jedi de Hardware
- BricoGeek. Tienda Friki donde comprar componentes electrónicos
- Repositorio de la Icezum Alhambra
- Documentación de la Icezum Alhambra: (PNG)(SVG)(PDF)
- Icestudio
- Monedas Bit imprimibles
- Printbot Beetle
- Ultimate Gripper
- Pinza paralela
- Robot Educativo Zowi
- Qué es PWM y para qué sirve. Entrada en el bloq de Rincón Ingenieril
- Repositorio de PCBPrints
- PCBPrint Alhambra-Button
- PCBPrint Alhambra Switch
- Soporte Icezum Alhambra
- Soporte para Servo Futaba 3003
- Puntero para servo Futaba 3003
- Clavijas de amarre para servos
- Tablero indicador binario para servo
- Fijador de esquinas
- Fijador de cables
- Fijador de placas
- Octopus passive buzzer, de Elecfreak
- Kit de sensores para Arduino. BricoGeek. Dentro del kit con 37 módulos, hay uno con zumbador
- Trucaje de un servo Futaba 3003
- Servo de rotación continua SM-4303R (en Bricogeek)
- ¿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
-
¿Donde puedo conseguir el switch que habéis usado en la PCBprint Alhambra switch? Es el mismo switch que se ha usado en la propio Icezum Alhambra (aunque la versión sin acodar). Los fabricantes los puedes encontrar en la lista de componentes de la propia icezum Alhambra. La referencia del componente en concreto es esta: Slide Switch, SPDT, On-On, Through Hole, WS-SLTV Series, 500 mA. Yo te recomiendo que uses la PCBprint de Diego Lale, que usa interruptores que puedes conseguir en Bricogeek: Mini-interruptor de 3 pines
-
¿Dónde puedo conseguir el servo de rotación continua SM-4303R?
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
- Electrónica digital para todos
- Poniendo en marcha Icestudio
- La Icezum Alhambra y otras placas con FPGAs libres
- Mi primer circuito. Encendiendo un led
- Colecciones en Icestudio
- Bombeando bits
- Manipulando bits: Puerta NOT
- Pines y LEDs externos
- Pulsadores y entradas
- ServoBit
- Puertas AND. Habilitando circuitos
- Interruptores y pulsadores externos
- Periféricos: Leds externos y zumbadores
- Mezclando circuitos: Multiplexor
- Servos de rotación continua
- Sensores de Infrarrojos
- Puertas Lógicas: OR
- Bloques con parámetros
- Circuitos combinacionales
- Buses y Números
- Mi primer bloque
- Circuitos combinacionales con varias salidas
- Mi primera colección
- Display de 7 segmentos
- Biestables y notificaciones
- Tiempo, tics y temporizadores
- Contando eventos
- Biestables de datos y cambio
- Registros y comparadores
- Puerto serie
- Despedida de la Temporada I