Ejercicio Integrador 2024 - Control de Robot Diferencial

Site: Facultad de Ingeniería U.Na.M.
Course: Computación ET-344
Book: Ejercicio Integrador 2024 - Control de Robot Diferencial
Printed by: Guest user
Date: Wednesday, July 3, 2024, 6:34 AM

Description

Ejercicio de integración de conceptos de la asignatura Computación.


1. Objetivos

En el ejercicio Integrador, el grupo deberá escribir el código de las clases necesarias para generar el desplazamiento del Robot Diferencial. Por otra parte deberán generar el código necesario para realizar la actividad solicitada a cada grupo. Para la tarea se usará en entorno de programación Arduino IDE.

Es posible que sea necesario revisar bibliografía, hojas de datos y de hecho cursar asignaturas correspondientes al próximo año para comprender en detalle el funcionamiento del equipo que están utilizando. Por lo que no se pretende que sean capaces de explicar al detalle el funcionamiento del hardware o el microcontrolador, simplemente deben seguir la consignas para elaborar el programa que se pide y en caso de que surjan dificultades solicitar la colaboración de los docentes.



2. Introducción

Para realizar los programas necesarios para generar desplazamientos, primeramente se ofrece algo de información acerca de equipo con el que deberán trabajar.


2.1. Pesentación del Robot Múltiplo N6 MAX

El Robot Multiplo N6 MAX con fines educativos diseñado y ensamblado por la desparecida empresa RobotGroup. Se trata de un sistema equipado por motores que mueven dos ruedas, una a cada lado del mismo, y una tercera "loca" que se acomoda a la posición y trayectoria impuesta por el desplazamiento.

Además cuenta con un conjunto de sensores que utilizaremos, entre ellos:

Sensores Infra-Rojos capaces de detectar diferentes reflejos del suelo donde se posicionan.

Sensor  Ultra Sónico capaz de medir la distancia hasta un objeto.

Entre otros que no utilizaremos.

Robot Múltiplo N6

Además de contar con un conjunto de pilas para alimentar el funcionamiento de los motores y el Arduino cuando este último no está conectado a la PC

2.2. Conexiones generales.

El robór cuenta con una placa de control. A la cual se conecta todos los elementos, como motores, sensores y otros.

En la siguiente imagen se pueden identificar los conectores.

Los conectores S0 a S5 están previstos para se usados como "entradas analógicas", es decir entradas de las que pueden obtenerse valores entre 0 255 o 0 y 1024, que guardan alguna proporcionalidad, en el mejor de los casos, o al menos correlacionados de alguna manera con una magnitud física que pueda medir un sensor. Sin embargo pueden configurarse como entradas o salidas digitales.

Por otra parte se encuentran las conexiones D9 a D13 los cuales pueden ser utilizados como entrada o salida de propósito general.


DEBE TENERSE EN CUENTA QUE LA CORRIENTE (CARGA) QUE PUEDEN SOPORTAR ESTAS ENTRADAS O SALIDAS ES MUY LIMITADA.

Cada una de estas entradas y/o salidas de la placa, así como algunos componentes internos, están conectadas al Arduino siguiendo la siguiente conexión lógica:



2.3. Senores Infra Rojos

Se cuenta con dos conjuntos de sensor y led infrarrojos, encapsulados en una pieza con la denominación comercial CNY70. 

Estos están orientados a buscar cambios en el reflejo de de la luz que emite el led y es recibida por el es receptor. Donde este último ofrece una señal analógica que guarda relación de proporcionalidad con la reflexión de la superficie bajo estos.


2.4. Receptor infrarojo para control

El robot N6 trae montado un receptor del tipo KY022 capaz de recibir los comandos enviados por un control remoto tipo TV que puede usarse para recibir comandos de funcionamiento. 

Para ello debe realizarse la interpretación de las tramas.

2.5. Sensor ultra sónico

El robot cuenta con un dispositivo compuesto por un emisor y receptor de ondas ultrasónicas. Se trata de un sensor de distancias HC-SR04 que cuenta con la electrónica apropiada para controlar el par de transductores. 

La función del conjunto se basa en emitir un pulso de ondas ultrasónicas que al rebotar en un objeto retornan hasta el receptor permitiendo calcular la distancia a la que se encuentra el objeto. 

Micropython: Usando el sensor HC-SR04 | profe Tolocka

Para poder gestionar el funcionamiento de este dispositivo se deberá utilizar la biblioteca NewPing.h especialmente dedicada a esto.


2.6. Configurar el Entorno de programación

Para realizar el programa deben utilizar el Adruino IDE, para ello deben conectar el Robot mediante el cable USB y configurar:

  1. En el menú Herramientas(Tools), seleccionar Placa(Board), Arduino Nano
  2. Menú Herramientas, Procesador(Processor), ATmega328(Old Bootloader)
  3. Escoger el puerto COM que corresponde al Arduino.

2.7. Conexiones de motores

Para la conexión de los motores, debe utilizarse los conectores M0 y M1, los cuales poseen una etapa adicional entre entre el Arduino y estos puntos de conexión. La función de esta etapa es manejar la corriente necesaria para el funcionamiento de los motores.


La figura muestra un diagrama de bloques que simboliza el funcionamiento. Se observa que este bloque esta formado por el circuito integrado L298p que es un Doble Puente H. Que es capaz de manejar los dos motores de manera independiente. Permitiendo seleccionar el sentido de giro y habilitar las salidas de manera independiente.

Para ello se utilizan las siguientes conexiones:

Donde se muestran las señales que deben tenerse en cuenta para conseguir que ambos motores en ambos sentidos, alternando los estos altos y bajos D0 y D1 y con una señal analógica sobre ENABLE que permite modular la velocidad de cada motor respectivamente.

Por ejemplo, con la combinación

MotorX_D0 = Alto

MotorX_D1 = Bajo

MotorX_Enable= [ 0:255]

el motor gira en un Sentido

MotorX_D0 = Bajo

MotorX_D1 = Alto

MotorX_Enable= [ 0:255]

El motor gira en sentido opuesto






3. Operando el Robot

Para realizar el control y la lectura de sensores se ofrece información acerca de cada uno de los dispositivos a utilizar.

3.1. Control de ruedas

Para el manejar las ruedas del robot se utiliza un técnica denominado PWM, mediante la cual es posible conseguir que la tensión media varíe. Para ello debe utlizarse la función analogWrite() podrán encontrar un ejemplo de uso en el menú archivo -> ejemplos -> analog -> analog write y escribir un valor entre 0 y 255 en cada una de las salidas que se corresponden con las ruedas.

3.2. Lectura de un potenciometro

Para leer la posición de un potenciómetro se debe leer el valor analógico que se recibe en la entrada correspondiente. Para esto deberá utilizar en la función analogRead también encontrará códigos que ejemplifican su uso dentro de los ejemplos del IDE Arduino.

Esta función devolverá un valor entre 0 y 1023, proporcional al valor. 

 

3.3. Lectura de líneas

Para utilizar los sensores de línea, formados por el emisor y receptor infrarojo también entregan un valor variable dependiendo del reflejo de la zona donde se posiciona. Para la lectura del estado de estos sensores, también se debe leer el valor analógico que se recibe en la entrada asociada al sensor. Sin embargo en este caso no existe una relación lineal entre los estados y deberá establecer bandas o zonas de valores donde puede afirmase la detección de la línea o por el contrario descartar la presencia de ésta.

3.4. Sensor ultrasonido

En este caso la operación del sensor es bastante mas compleja, ya que se realiza la excitación del emisor y la recepción de la detección del rebote de señal se utiliza un solo puerto del microcontrolador. Para ello deberá utilizar la biblioteca NewPing podrá encontrar información en la sección Single Pin Sketch de la página: bitbucket.org/teckel12/arduino-new-ping/wiki/Home

4. Actividades

Cada grupo debe escribir el programa que sea capás de desarrollar la actividad específica.

4.1. Desplazamientos Rectos

Se debe controlar el robot para que sea capás de mantener una trayectoria en línea recta, aplicando la compensación mediante un potenciómetro a conectar en una de las entradas analógicas.

Generar un desplazamiento formando un cuadrado.

4.2. Seguir una línea

Programar al robot para que pueda seguir una línea marcada en la superficie por la cual se desplaza.

Debe ser capaz de resolver un cruce.

4.3. Mantener en movimiento

El robot debe moverse dentro de una zona delimitada por una línea o un borde. Al llegar hasta el límite, debe volver y buscar otra trayectoria para seguir avanzando.

4.4. Esquivar obstáculo

El robot debe desplazarse hasta encontrar un obstáculo en su trayectoria, entonces debe esquivarlo intentando volver a la trayectoria inicial.  

4.5. Contar Marcas.

El robot debe desplazarse por una línea de trazos y detenerse al cabo de 2, 4 o 5 tramos que se seleccionan mediante una llave externa.

4.6. Mantener distancia

El robot se desplaza hasta que encuentra un obstáculo y luego mantiene la distancia con este a medida en que se mueve.