UNIVERSIDAD PRIVADA DEL VALLE
FACULTAD DE INFORMÁTICA Y ELECTRÓNICA Evaluación
INGENIERÍA EN ELECTRONICA
CAMPUS TIQUIPAYA
Informe de Práctica de Laboratorio N°6
CONTROL DE
PERIFÉRICOS EN ROBOTS
MÓVILES
GRUPO “A”
Estudiante: Marcos Kevin Villafuerte Ramallo
Carrera: Ing. Mecatrónica
Materia: ROBÓTICA
Docente: Ing. Elias Chavez
Gestión: I-2024
Fecha de presentación: 22 de mayo del 2024
1
Página
CONTROL DE PERIFÉRICOS EN ROBOTS MÓVILES
1. Marco teórico
Pantalla LCD
NXT:
Resolución: 100 x 64 píxeles
Color: Monocromática (blanco y negro)
Tamaño: 1.5 pulgadas
Consumo de energía: Bajo, adecuado para dispositivos portátiles
alimentados por baterías AA.
Interfaz: Conectada directamente al microcontrolador del ladrillo NXT.
Características adicionales: La pantalla puede mostrar texto, números y gráficos
básicos.
Consumo de energía: Eficiente, adecuado para el uso con batería
recargable de Li-ion.
Tipo: Pantalla LCD monocromática.
EV3:
Resolución: 178 x 128 píxeles
Color: Monocromática (blanco y negro)
Tamaño: 2.8 pulgadas
Interfaz: Integrada en el ladrillo EV3, controlada por el microcontrolador ARM9.
Características adicionales: Capacidad para mostrar gráficos, texto y símbolos
personalizados.
SPIKE Prime:
Resolución: 5 x 5 matriz de LEDs
Color: RGB (colores múltiples)
Interfaz: Integrada en el Hub SPIKE Prime, controlada por el microcontrolador ARM
Cortex-M4.
Características adicionales: La matriz de LEDs se utiliza principalmente para mostrar
patrones de colores y estados del robot.
Motores
2
NXT:
Página
Tipo: Motor servomotor
Torque: Aproximadamente 4.5 N·cm
Velocidad: Hasta 170 RPM
Sensor de Rotación: Encoders integrados, precisión de 1 grado
Interfaz: Conexión directa al ladrillo NXT, controlado por un puerto dedicado.
EV3:
Tipo: Motor grande y motor mediano
Motor Grande:
Torque: Hasta 40 N·cm
Velocidad: Hasta 160-170 RPM
Sensor de Rotación: Encoders integrados, precisión de 1 grado
Motor Mediano:
Torque: Aproximadamente 8 N·cm
Velocidad: Hasta 240-250 RPM
Sensor de Rotación: Encoders integrados, precisión de 1 grado
Interfaz: Conexión a través de puertos designados en el ladrillo EV3, controlados por el
microcontrolador ARM9.
SPIKE Prime:
Tipo: Motores grandes y motores medianos
Motor Grande:
Torque: Aproximadamente 18 N·cm
Velocidad: Hasta 115 RPM
Sensor de Rotación: Encoders integrados, precisión de 1 grado
Motor Mediano:
Torque: Aproximadamente 8 N·cm
Velocidad: Hasta 390 RPM
Sensor de Rotación: Encoders integrados, precisión de 1 grado
Interfaz: Conexión a través de puertos en el Hub SPIKE Prime, controlados por el
microcontrolador ARM Cortex-M4.
LEGO. (2006). LEGO Mindstorms NXT User Guide. LEGO Group.
LEGO. (2013). LEGO Mindstorms EV3 User Guide. LEGO Group.
3
Página
LEGO. (2019). LEGO Education SPIKE Prime User Guide. LEGO Group.
Martyn, J. (2012). The LEGO Mindstorms NXT 2.0 Discovery Book: A Beginner's Guide to
Building and Programming Robots. No Starch Press.
Bagnall, B. (2014). Maximum LEGO EV3: Building Robots with Java Brains. Variant Press.
2. Resultados de Laboratorio Virtual
Programación en la plataforma BRICX CC
Utilizando el robot móvil LEGO MINDSTORMS (Prototipo armado con sensores y actuadores)
para completar el laboratorio, programe el robot en BRICX CC para que se mueva desde la
ubicación de inicio a cada línea y regrese al inicio. El robot móvil debe moverse a la primera
línea, regresar al inicio, moverse a la segunda línea, regresar al inicio, etc. Mientras hace esto, el
robot también debe almacenar el número de líneas que ha cruzado en una variable y mostrar ese
número en la pantalla LCD del ladrillo del robot móvil.
Código usado:
#define UMBRAL 45
inline void avanzar(int potencia=50)
{
Off(OUT_AC);
SetSensor(IN_1, SENSOR_ROTATION);
ClearSensor(IN_1);
SetSensor(IN_3, SENSOR_ROTATION);
ClearSensor(IN_3);
OnFwdSync(OUT_AC,potencia,0);
return;
}
inline void retro(int potencia=50)
{
Off(OUT_AC);
4
SetSensor(IN_1, SENSOR_ROTATION);
Página
ClearSensor(IN_1);
SetSensor(IN_3, SENSOR_ROTATION);
ClearSensor(IN_3);
OnRevSync(OUT_AC,potencia,0);
return;
}
task main ()
{
SetSensorLight(IN_4);
for (int i=1; i<=5; i++)
{
avanzar(40);
for (int j=1; j<=i; j++)
{
Wait(1000);
while(Sensor(IN_4) > UMBRAL);
Wait(200);
}
retro(40);
for (int j=1; j<=i; j++)
{
Wait(1000);
while(Sensor(IN_4) > UMBRAL);
Wait(200);
}
}
Off(OUT_AC);
}
Realizar un video que muestren el proceso de movimiento del robot y su finalización en la
plataforma STREAM, añada el link junto al presente documento.
labo6.mp4
https://univalleedu-my.sharepoint.com/personal/vrm2018940_est_univalle_edu/_layouts/15/
stream.aspx?id=%2Fpersonal%2Fvrm2018940%5Fest%5Funivalle%5Fedu%2FDocuments
%2Flabo6%2Emp4&referrer=StreamWebApp%2EWeb&referrerScenario=AddressBarCopied
%2Eview%2E17c84d1c%2D15c7%2D4127%2Da979%2Db09b3ea4460e
Fotografías de inicio, etapa intermedia y fin del recorrido del robot móvil.
5
Página
Página 6
3. Conclusiones
el proyecto consistió en la programación de un robot para superar etapas
progresivas, cada una con una distancia creciente a recorrer. Aunque el
abombamiento de la superficie presentó un desafío, el robot fue capaz de
completar todas las etapas de manera exitosa, demostrando la eficacia del
diseño y la programación aplicados. En la primera fase, el robot debía
alcanzar la primera línea y regresar. En la segunda fase, tenía que cruzar la
primera línea y luego regresar, incrementando gradualmente la distancia en
cada etapa según lo establecido en el programa.
4. Cuestionario
1. Desarrolle el diagrama de flujo del programa empleado para la solución de la práctica.
[Inicio] |
v
[Inicializar UMBRAL a 45] |
v
[Configurar motores: motor_pair.pair(motor_pair.PAIR_1, port.D, port.C)] |
v
[Definir funciones: avanzar(potencia), retroceder(potencia), detener(), esperar_sensor(),
mover_grados(grados, potencia)] |
v
[Iniciar función principal: main()] |
7
V
Página
[Ciclo for i de 1 a 5] | v [Guardar posición inicial: posicion_inicial =
motor_pair.get_position(port.D)] |
v
[Llamar a avanzar(200)] | v [Ciclo for j de 0 a i-1] |
V
[Esperar 1 segundo] | v [Llamar a esperar_sensor()] |
V
[Esperar 200 ms] | v [Llamar a avanzar(200)] |
V
[Esperar 500 ms] |
V
[Fin del ciclo for j] |
V
[Llamar a detener()] |
V
[Llamar a mover_grados(-posicion_inicial, 200)] |
v
[Ciclo for j de 0 a i-1] |
V
[Esperar 1 segundo] |
v
[Esperar 200 ms] |
v
[Llamar a esperar_sensor()] |
V
[Fin del ciclo for j] |
v
[Llamar a detener()] |
v
[Fin del ciclo for i] |
V
[Llamar a detener()] |
v
[Imprimir "Termino!!"] |
v
[Fin]
2. Describa los pasos para verificar el estado de funcionamiento de los sensores en el
ladrillo del
LEGO Mindstorms NXT
Paso 1: Encender el ladrillo NXT
8
Asegúrate de que el ladrillo NXT tenga baterías cargadas o esté conectado a una fuente de
Página
energía.
Presiona el botón de encendido para iniciar el ladrillo NXT.
Paso 2: Acceder al menú de sensores
Una vez encendido, utiliza los botones de navegación (izquierda, derecha, arriba, abajo) para
desplazarte por el menú principal.
Selecciona la opción "View" (Ver) y presiona el botón de selección (centro) para acceder al
menú de visualización de sensores.
Paso 3: Seleccionar el tipo de sensor
Dentro del menú "View", selecciona el tipo de sensor que deseas verificar (por ejemplo,
sensor táctil, sensor de luz, sensor ultrasónico, etc.).
Cada tipo de sensor conectado a los puertos (1, 2, 3, 4) del ladrillo NXT aparecerá en el
menú.
Paso 4: Verificar la lectura del sensor
Una vez seleccionado el sensor, el ladrillo NXT mostrará la lectura en tiempo real del sensor
correspondiente.
Manipula el sensor para verificar que los valores cambien adecuadamente (por ejemplo,
presiona el sensor táctil o aproxima un objeto al sensor ultrasónico).
Paso 5: Confirmar el funcionamiento correcto
Asegúrate de que las lecturas del sensor sean coherentes con las acciones realizadas. Si el
sensor no responde o muestra lecturas erráticas, verifica las conexiones y prueba con otro
sensor para descartar fallas del ladrillo.
LEGO Mindstorms EV3
Paso 1: Encender el ladrillo EV3
Asegúrate de que el ladrillo EV3 tenga baterías cargadas o esté conectado a una fuente de
energía.
Presiona el botón de encendido para iniciar el ladrillo EV3.
Paso 2: Acceder al menú de sensores
Una vez encendido, utiliza los botones de navegación (izquierda, derecha, arriba, abajo) para
desplazarte por el menú principal.
Selecciona la opción "Port View" (Vista de Puertos) y presiona el botón de selección (centro)
para acceder al menú de visualización de sensores.
Paso 3: Seleccionar el puerto del sensor
Dentro del menú "Port View", verás los puertos de sensores (1, 2, 3, 4) y los dispositivos
conectados a cada puerto.
Selecciona el puerto al que está conectado el sensor que deseas verificar.
Paso 4: Verificar la lectura del sensor
Una vez seleccionado el puerto, el ladrillo EV3 mostrará la lectura en tiempo real del sensor
conectado.
Manipula el sensor para verificar que los valores cambien adecuadamente (por ejemplo,
mueve el sensor de color sobre diferentes superficies o aproxima un objeto al sensor
ultrasónico).
Paso 5: Confirmar el funcionamiento correcto
Asegúrate de que las lecturas del sensor sean coherentes con las acciones realizadas. Si el
sensor no responde o muestra lecturas erráticas, verifica las conexiones y prueba con otro
sensor para descartar fallas del ladrillo.
3. Describa brevemente las posibles aplicaciones de la practica realizada.
9
Monitoreo de Cultivos: El robot puede avanzar y retroceder entre hileras de cultivos
Página
para monitorear el estado de las plantas, identificar plagas, enfermedades o condiciones
del suelo, y luego moverse a la siguiente hilera.
Inspección de Líneas de Producción: El robot puede utilizarse para inspeccionar líneas
de producción en fábricas. Avanza a lo largo de una sección de la línea de producción,
verifica el estado de los productos o maquinaria, y luego retrocede para repetir el proceso
en la siguiente sección.
Gestión de Inventarios: En almacenes, el robot puede moverse entre pasillos,
verificando y actualizando el estado de los inventarios, detectando y reportando artículos
fuera de lugar o faltantes.
Patrullaje Autónomo: En instalaciones de seguridad, el robot puede patrullar áreas
avanzando y retrocediendo entre líneas marcadas, detectando intrusos o condiciones
anómalas
10
Página