Encoders ópticos. Parte I – Robot “Ranger” – Programación con mBlock en Scratch

En este post os queremos enseñar de una manera práctica los encoders ópticos que vienen en el robot Ranger. Si buscamos por internet podréis encontrar muchas definiciones y utilidades.

 

Un encoder óptico es un sensor que permite detectar el movimiento de rotación de un eje. De esta forma, podremos conocer el número vueltas gira nuestro motor.

¿y qué utilidad tiene esto? Principalmente, en proyectos de robótica, nos será de gran utlidad para controlar el movimiento de nuestro robot y saber de una manera más precisa donde se encuentra en cada momento.

Este encoder se encuentra junto al motor, y en el caso del ranger tenemos dos,  uno para cada rueda. Así que vamos a verlo de manera práctica

Si nos abstraemos del funcionamiento, y simplemente usamos los bloques en Scratch que lo usan, podemos aprenderlos de una manera práctica. Concretamente hablamos de estos bloques:

Los dos primeros bloques sirven para dar ordenes a cada encoder pero como podéis observar sólo nos permiten variar la velocidad o la potencia pero no nos sirven para indicarle cuantos grados debe girar.

Para ello se usan los siguientes dos bloques, marcados en el gráfico con un aspa roja. Ahí, como podéis ver, podemos indicar, aparte de la velocidad, los grados que debe de girar. La diferencia entre ambos es que con el primero podemos indicar lo que debe girar cada encoder por separado y con el otro, de cara a simplificar los programa conjuntamente, podemos realizar el movimiento que le indiquemos.

Objetivo

El reto que nos hemos propuesto es hacer que nuestro robot se mueva realizando un cuadrado de 1m de lado.

Para hacer un cuadrado, lo que haremos es ordenar ir hacía adelante al robot  en línea recta 1m, después le ordenaremos rotar 90º a la derecha y así sucesivamente 4 veces para finalmente parar.

Lo más importante antes de programarlo es conocer el robot que utilizaremos porque nos condicionará los valores que tenemos que darle a los encoders para lograr nuestro objetivo. En nuestro caso seguiremos con nuestro robot explorador, del que ya hemos hablado en otro post.  Si queréis hacer esta práctica, simplemente montando el modelo dash obtendremos el mismo comportamiento.

¿Cómo mover el robot hacia adelante 1m? : Movimiento Recto ( Hacia adelante o hacia atrás )

Para realizar el moviento recto, vamos a decir a cada rueda o a las dos a la vez utilizando el bloque conjunto, los grados que debe girar para recorrer la distancia de 1 metro. Lo primero que tenemos que saber es cuanto avanza nuestra rueda cuando da una vuelta completa ( 360º ). De ahí que sea clave el robot que hemos montado y el tamaño de las ruedas.

Cogemos un metro, una regla, y medimos el radio o el diámetro de nuestra rueda. En nuestro caso es de  6,4cm

Ya sabemos entonces lo que avanza el robot con cada vuelta, simplemente tenemos que calcular la longitud de la rueda, que como todos sabéis es 2 * PI * Radio ó  PI * Diámetro. Los cálculos los he hecho en el word para poder usar el editor de ecuaciones:

¿Cómo rotar el robot 90º a la derecha? 

Lo más importante a destacar es porqué rotamos y no giramos. Principalmente se debe a que a la hora de realizar cálculos para posicionar nuestro robot, es mucho más sencillo rotar que girar. Para rotar, cada motor-encoder girará en sentido contrario y con la misma velocidad, de manera que describirá un circulo cuyo diámetro es la longitud desde el eje de una rueda a la otra. Si lo hiciéramos girando nuestros cálculos se complicarían y de cara a los alumnos, este método ya es bastante instructivo.

Solución completa

Os dejo una posible implementación de nuestro reto. Veréis lo difícil que resulta en la práctica que el robot describa el cuadrado de una manera perfecta, cualquier variación hace que no sea tan preciso como imaginábamos durante la programación del código.

No hemos usado el bloque “repetir 4 veces” para que se vea más claro, pero la forma de programarlo es repetir 4 veces los 5 primeros bloques. Las esperas de 5 segundos son para asegurar que el robot ha realizado el movimiento. Es posible ajustarlo mucho más para que realice el cuadrado a mayor velocidad. Esta vez no era nuestro objetivo, de esta forma pretendo que veáis cómo se describe el movimiento en cada una de las posiciones.

Para el movimiento hacia adelante, hemos usado el bloque “run forward” que configura los dos encoders y para rotar, lo hemos hecho nosotros para indicarle claramente el sentido de giro y que la velocidad y ángulo sean exactamente las que deseamos. Aquí podéis ver que los hacemos girar en el mismo sentido pero esto se debe a que están colocados al revés y este sentido programado es el que hace que rotemos hacia la derecha 🙂

En el próximo tutorial  usaremos esto para hacer un juego práctico y divertido. Creo que os gustará 🙂

Por cierto, podéis dejar vuestros comentarios, sugerencias, dudas,… Muchas gracias. ¡¡Hasta el próximo!!

 


Deja tu comentario

Tu e-mail no será publicado. Los campos obligatorios son marcados con *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

0

Tu carrito