Ejercicio Integrador 2024 - Control de Robot Diferencial
Sitio: | Facultad de Ingeniería U.Na.M. |
Curso: | Computación ET-344 |
Libro: | Ejercicio Integrador 2024 - Control de Robot Diferencial |
Imprimido por: | Invitado |
Día: | miércoles, 22 de enero de 2025, 14:01 |
Descripción
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.
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.
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:
- En el menú Herramientas(Tools), seleccionar Placa(Board), Arduino Nano
- Menú Herramientas, Procesador(Processor), ATmega328(Old Bootloader)
- 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.