Ejercicio: Coche robótico: salva-obstáculos

De Edutec Wiki
Saltar a: navegación, buscar

RTENOTITLE

Los componentes

Para esta práctica, necesitaremos unos cuantos componentes electrónicos. Os los explicamos a continuación:

RTENOTITLE La placa Arduino será lo que nos permitirá interactuar con los sensores y los actuadores desde S4A.
RTENOTITLE El sensor de infrarrojos es un dispositivo que envía luz infrarroja y detecta el rebote contra un objeto. De esta manera, es capaz de calcular la distancia a la que se encuentra este último.
RTENOTITLE El servomotor es capaz de convertir energía eléctrica en mecánica. El tipo que usaremos hoy da como resultado un movimiento rotatorio continuo y bidireccional (sentido horario o antihorario).
RTENOTITLE Para conectar los componentes en la placa, necesitaremos cables de prototipado. La ventaja de estos cables sobre los convencionales es que no necesitaremos soldarlos, ya que cuentan con conectores integrados.
RTENOTITLE La placa de prototipado está preparada para conectar los cables de prototipado y los diferentes componentes sin necesidad de soldadura. Esta placa en concreto, está preparada para acoplarse al Arduino directamente.

 

Esquema del circuito

Como podemos observar, tanto los sensores como los servomotores tienen 3 cables: uno rojo, uno negro y uno amarillo o blanco. Los cables rojos han de ir a 5V, los de color negro a GND y los amarillos a los pines desde donde queramos enviar (servos) o recibir (sensores) la señal. Por ejemplo, podemos conectar éstos últimos siguiendo la siguiente estructura:

Servomotor izquierdo pin digital 4
Servomotor derecho pin digital 8
Sensor infrarrojos izquierdo pin analógico 1
Sensor infrarrojos derecho pin analógico 0

 

Coche robotico 02.png

Probando sensores y servos

Una vez tenemos todo montado, conectaremos el cable USB al ordenador, arrancaremos S4A y en poco tiempo la placa deberia conectarse automáticamente. Si todo va bien, deberíamos ver como en la tabla de sensores aparece el nombre del puerto y los valores que leen los pines analógicos de la placa:

RTENOTITLE

 

Para saber que los sensores funcionan bien, debería cumplirse lo siguiente:

  • Objeto cercano (~5 cm): valores entre 600 y 700.
  • Objeto lejano (+30cm): valores entre 0 y 100.

Si está todo bien, podemos empezar a probar los servomotores. Buscaremos los bloques correspondientes en la categoría  Movimiento :

Coche robotico 04.png

 

Estos bloques están dedicados a servomotores de rotación contínua, que son los que usaremos con nuestro robot. Antes de usar el bloque de dirección, es aconsejable preparar la acción de parado, ya que si el robot se pone en marcha no tendremos manera de pararlo a tiempo. Usaremos el bloque que detecta si tocamos una tecla, de la categoria  Control :

Coche robotico 05.png

 

Podemos dejar la tecla espacio por defecto. Ahora añadiremos un par de bloques para parar el motor, poniéndole los pins correspondientes (4 y 8):

Coche robotico 06.png

 

Ahora si pulsamos la tecla Espacio veremos como aparece una línea blanca alredor del conjunto de bloques. Ahora podemos hacer lo mismo cogiendo otro bloque de detectar tecla cambiando la tecla por alguna de dirección (por ejemplo, la de flecha abajo) y usando los bloques de movimiento del servomotor:

Coche robotico 07.png

 

Si probamos a darle a la flecha abajo, el robot se mueve hacia atrás? Por qué no? En caso de que hayamos pensado que si los servomotores giran en el mismo sentido, el robot debería moverse hacia atrás o si nos hemos equivocado de sentido, hacia adelante, estamos equivocados. Al estar colocados en lados contrarios necesitan girar en sentidos opuestos para que el robot realice un movimiento recto y no un giro:

Coche robotico 08.png
Tenemos dos opciones: o corregimos el movimiento cambiando los sentidos, o aprovechamos y cambiamos la tecla fijándonos en el sentido que gira, el cual debería ser a la izquierda (la segunda opción parece más sencilla). Además también podemos aprovechar y duplicar dicho conjunto de bloques (click derecho > duplicar):
Coche robotico 09.png

 

Y luego cambiar debidamente tanto la tecla como los sentidos del movimiento:

Coche robotico 10.png

 

Una vez probados ambos movimientos, veamos como hacer que vaya también hacia delante y hacia atrás. Según la configuración de pines que hemos elegido (pin 4 para el servo izquierdo y 8 para el derecho) y la imagen que hemos visto anteriormente, para que vaya hacia atrás los sentidos deberían ser los siguientes:

Coche robotico 11.png

 

Y si funciona, podemos hacer como antes y duplicar para añadir el movimiento hacia adelante:

Coche robotico 12.png

 

Si todo funciona, ya tenemos nuestro programa de prueba de los servos:

Coche robotico 13.png

 

Movimiento del robot según los sensores

Una vez probado el funcionamiento tanto de los sensores como de los servomotores, podemos empezar a diseñar nuestro programa. Podemos empezar por algo sencillo por ejemplo, hacer que el robot gire a la derecha cuando el sensor izquierdo detecte un objeto, además de que se pare cuando deje de detectarlo. Para ello, como hemos de ejecutar una acción u otra dependiendo de una condición, necesitaremos el bloque si <> si no, además de un bucle por siempre para que esté ejecutando la comprobación continuamente:

Coche robotico 14.png

Y cual será la condición? Ya hemos visto antes como el valor que nos da un sensor aumenta a medida que la distancia con el objeto disminuye, por lo que hemos de colocar un objeto enfrente de uno de los sensores y fijarnos más o menos en que rango de valores se mueve. Por ejemplo, si colocamos la mano a unos 10 cm del sensor, éste nos debería dar un valor de 400 aproxidamente. Así pues, si queremos que el robot gire hacia la derecha cuando detecte algo en el sensor izquierdo (pin analógico 1) y siga recto cuando no detecte nada, la cosa quedaría mas o menos así:

Coche robotico 15.png

Probemos si funciona, y si es así, solo quedará añadir una segunda condición que para que compruebe si detecta un obstáculo en el sensor derecho en caso de que no lo detecte en el izquierdo:

Coche robotico 16.png