0% encontró este documento útil (0 votos)
3 vistas10 páginas

Control de Periféricos en Robot Móvil NXT

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas10 páginas

Control de Periféricos en Robot Móvil NXT

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ROBOTICA I

LABORATORIO 6

CONTROL DE PERIFIFERICOS
ROBOT MOVIL

GRUPO “B”

ESTUDIANTE:
SAMUEL EDGAR GOMEZ GERONIMO

Docente:ING. Erick Benitez Gareca

Cochabamba 17/5/2025
Gestión l – 2025
1) Competencia a Desarrollar:

• Conocimiento del kit educacional LEGO MINDSTORMS.


• Conocimiento de los sensores y actuadores que dispone LEGO.
• Sintaxis de comandos para programar el sistema

2) Marco Teórico

• Robot LEGO MINDSTORMS(NXT):


Los robots LEGO MINDSTORMS NXT son una plataforma de robótica educativa desarrollada por
LEGO en colaboración con el MIT. Estos robots permiten a los estudiantes aprender conceptos
de programación, electrónica y mecánica de una manera interactiva y divertida.
El cerebro del robot LEGO MINDSTORMS NXT es el bloque NXT, un microcontrolador que cuenta
con un procesador de 32 bits, puertos de entrada y salida para conectar sensores y motores, y
una pantalla LCD. Además, el kit incluye varios sensores como de tacto, de sonido, de luz y de
ultrasonido, así como tres motores eléctricos.

Figura 1. Robot LEGO MINDSTORMS(NXT) (LEGO, 2009)


Algunas de las aplicaciones típicas de los robots LEGO MINDSTORMS NXT incluyen la
construcción de robots móviles, robots seguidores de línea, robots evitadores de obstáculos y
robots que realizan tareas específicas como empujar objetos o recoger y transportar elementos.
(Group, 2006)
• Control PID:
La función nMotorPIDSpeedCtrl de RobotC utiliza un control PID (Proporcional-Integral-
Derivativo) para mantener una velocidad constante de los motores del robot. El control PID es
un algoritmo ampliamente utilizado en el control de sistemas, que combina tres acciones
diferentes para lograr un control preciso (Åström & Hägglund, 2006):
o Acción proporcional (P): Esta acción es proporcional al error entre la velocidad actual y
la velocidad deseada. Ayuda a corregir rápidamente las desviaciones de la velocidad.
o Acción integral (I): Esta acción acumula el error a lo largo del tiempo y lo utiliza para
reducir el error en estado estacionario. Esto ayuda a eliminar cualquier desviación
persistente de la velocidad deseada.
o Acción derivativa (D): Esta acción predice el comportamiento futuro del error y ajusta la
salida en consecuencia. Esto ayuda a amortiguar las oscilaciones y mejorar la estabilidad
del sistema.
• Sensor de luz :
El sensor de luz de LEGO MINDSTORMS NXT es un componente clave para la percepción del
entorno por parte del robot. Este sensor permite al robot detectar y medir la cantidad de luz
presente en su entorno, lo que puede ser útil para diversas aplicaciones, como seguimiento de
líneas, detección de obstáculos y reconocimiento de colores. (Baum, 2007)
El sensor de luz NXT utiliza un fotodiodo para convertir la luz incidente en una señal eléctrica
que puede ser procesada por el bloque NXT. La señal de salida del sensor varía en función de la
intensidad de la luz, lo que permite al robot medir y responder a los cambios en la iluminación
de su entorno

3) Materiales

MATRIALES Y EQUIPOS
Ítem Denominación Cantidad Unidad
1 LEGO MINDSTORMS 1 Pza

2 COMPUTADORA 1 Pza

3 CABLE RJ12 PARA LEGO 1 Pza

INSUMOS
Ítem Denominación Cantidad Unidad
1 Circuito 1 Pza

4) Procedimiento de desarrollo de la Practica:

Usando el robot LEGO MINDSTORMS NXT se realizara la programación del robot en primera instancia
con ayuda del software de LEGO MINDSTORMS para verificar el correcto funcionamiento del mismo la
pista será la siguiente :
Figura 2. Circuito a realizar

El trayecto del robot deberá ser el siguiente: pasa por la primera línea vuelve al inicio del inicio pasa por
la primerea línea y la suprime llega a la segunda línea y vuelve al inicio.

5) Tablas y Resultados

• Código :
#pragma config(Sensor, S1, touch, sensorTouch)
#pragma config(Sensor, S2, sound, sensorSoundDB)
#pragma config(Sensor, S3, light, sensorLightActive)
#pragma config(Sensor, S4, sonar, sensorSONAR)
#pragma config(Motor, motorB, rightMotor, tmotorNXT, PIDControl, driveRight, encoder)
#pragma config(Motor, motorC, leftMotor, tmotorNXT, PIDControl, driveLeft, encoder)
//*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//

int ref = 40; // Valor de luz que representa el color negro


int c = 0;
long tiempoInicio; // Definir tiempoInicio como variable global

void rotar180Grados() {
// Rotar 180 grados
motor[motorB] = 50; // Motor derecho hacia adelante
motor[motorC] = -50; // Motor izquierdo hacia atrás
wait1Msec(1500); // Ajusta el tiempo según sea necesario para completar la rotación
motor[motorB] = 0; // Detener motor derecho
motor[motorC] = 0; // Detener motor izquierdo
}

void adelante() {
motor[motorB] = 50; // Motor derecho hacia adelante
motor[motorC] = 50; // Motor izquierdo hacia adelante
tiempoInicio = nPgmTime; // Guardar el tiempo de inicio

while (true) {
int sensorluz = SensorValue[light]; // Leer el valor del sensor de luz
if (sensorluz < ref) { // Si el valor del sensor es menor que el umbral
motor[motorB] = 0; // Detener motor derecho
motor[motorC] = 0; // Detener motor izquierdo
c++;
break; // Salir del bucle
}
}
}

task main() {
// Mover hacia adelante
if (c == 0) {
adelante();
long tiempo = nPgmTime - tiempoInicio; // Calcular el tiempo de avance
rotar180Grados();
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(tiempo); // Usar wait1Msec en lugar de delay
rotar180Grados();
motor[motorB] = 0;
motor[motorC] = 0;

}
if (c == 1) {
adelante();
adelante();
long tiempo = nPgmTime -2*tiempoInicio; // Calcular el tiempo de avance
rotar180Grados();
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(tiempo); // Usar wait1Msec en lugar de delay
rotar180Grados();
}
if (c == 3) {
adelante();
adelante();
adelante();
long tiempo = nPgmTime -2*tiempoInicio; // Calcular el tiempo de avance
rotar180Grados();
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(tiempo); // Usar wait1Msec en lugar de delay
rotar180Grados();
}
if (c == 6) {
adelante();
adelante();
adelante();
adelante();
long tiempo = nPgmTime -2*tiempoInicio; // Calcular el tiempo de avance
rotar180Grados();
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(tiempo); // Usar wait1Msec en lugar de delay
rotar180Grados();
}
if (c == 10) {
adelante();
adelante();
adelante();
adelante();
adelante();
long tiempo = nPgmTime -2*tiempoInicio; // Calcular el tiempo de avance
rotar180Grados();
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(tiempo); // Usar wait1Msec en lugar de delay
rotar180Grados();
}
}

Resultado:
Figura 4. Resultados del segundo circuito

6) Cuestionario:
• Desarrolle el diagrama de flujo del programa empleado para la solución de la práctica.

Inicio
Vuelve
Vuelve

Detectar umbral
Si de luz no

Regresa al Avanza a
inicio delante

• Describa los pasos para verificar el estado de funcionamiento de los sensores en el ladrillo del
LEGO MINDSTORMS NXT y EV3
R: Para verificar el estado de funcionamiento de los sensores en el ladrillo del LEGO
MINDSTORMS NXT y EV3, se deben seguir los siguientes pasos:
o Encienda el LEGO MINDSTORMS NXT o EV3.
o Acceda al menú principal del ladrillo.
o Seleccione la opción "Sensores" o "Entradas".
o Verifique que los sensores conectados al robot estén siendo detectados y muestren los
valores correspondientes.
o Pruebe los sensores moviendo o activando los objetos que están conectados a ellos para
asegurarse de que están funcionando correctamente.
o Si algún sensor no está siendo detectado o no muestra los valores esperados, revise las
conexiones y la configuración del sensor.
• Describa brevemente las posibles aplicaciones del practica realizada.

R: las aplicaciones podrían ser las siguientes:

o Utilizando los sensores del LEGO MINDSTORMS NXT o EV3 para detectar obstáculos,
seguir líneas, medir distancias, etc. Todo para realizar movimientos autónomos
controlados
o Ayudar al aprendizaje del funcionamiento de los sensores básicos
o Desarrollar juegos o aplicaciones interactivas

7) Conclusiones:

En el laboratorio se pudo ver que al momento de realizar el recorrido se tiene que configurar un buen
PID y un contador para que el robot no pierda su trayectoria recta ya que eso será clave para calcular el
Angulo del giro para que vuelva a repetir una y otra vez, para el segunda parte al tratarse de diversos
cálculos y no considerar los valores de cada curva el robot perdía la trayectoria que le configuramos por
lo que no se pudo realizar de manera adecuada y fallaba .

8) bibliografía
Åström, & Hägglund. (2006). Advanced PID control. ISA-The Instrumentation, Systems, and Automation
Society. Obtenido de Advanced PID control. ISA-The Instrumentation, Systems, and Automation Society.

Baum. (2007). Definitive guide to Lego Mindstorms. Apress. Obtenido de Definitive guide to Lego
Mindstorms. Apress.

Group, L. (2006). LEGO MINDSTORMS NXT: The mayan adventure. Wiley Publishing. Obtenido de LEGO
MINDSTORMS NXT: The mayan adventure. Wiley Publishing.

LEGO. (2009). LEGO MINDSTORMS. Obtenido de LEGO MINDSTORMS: [Link]


es/service/building-instructions/8547

9)Anexos :

También podría gustarte