Está en la página 1de 7

UNIVERSIDAD PRIVADA DEL VALLE

FACULTAD DE INFORMÁTICA Y ELECTRÓNICA Evaluación


INGENIERÍA EN BIOMEDICA
CAMPUS TIQUIPAYA

ROBOTICA
Informe de Práctica de Laboratorio N°4

CONTROL DE SENSORES

GRUPO “A”

Estudiante: Crespo Torrico Emanuel B.

Carrera: Ing. Biomédica


Docente: Ing. Elías Chávez
1

Cochabamba 07 de noviembre del 2021


Página

Gestión II-2021
PROGRAMAS CONTROL DE PERIFERICOS
ASIGNATURA: Robótica
TEMA Control de Sensores
Elemento de Robot Lego
estudio
Plataforma de RobotC VirtualWord
emulación virtual
Fecha 27/10/2021

1. Marco teórico

#define dist1 y dist2 este comando define sirve para definir una variable para el sensor ultrasónico

#define umbral_1 y umbral_2 define las variables para el sensor de luz

While Mientras se cumpla la condición funcionara el código interno que está en el ciclo.

SetSensorLight(IN_x) activa el sensor de luz, indicando su puerto al cual se conecto

OnFwd(OUT_xx,velocidad) / OnFwdSync(OUT_xx,velocidad, proporcion) Acciona un motor

Off(OUT_xx) Desactiva los puertos seleccionados que se le menciona dentro.

SetSensorLowspeed(IN_x) activa el sensor ultrasónico en el puerto conectado

OnRev(OUT_x, velocidad) rotación inversa de un motor a una velocidad determinada

2. Resultados de Laboratorio Virtual

Programación en la plataforma BRICX CC


Obstacle Course

Para completar este desafío, programe el robot para avanzar hacia la pared usando el sensor táctil, siga el curso de seguimiento
de línea usando el sensor de luz, llegue al área de calibración (zona con un libro verde) usando el sensor de sonda y finalmente
viaje a la meta. Su robot no debe golpear ningún obstáculo ni cruzar las líneas de límite de desafío.

Código usado:
#define dist1 15
#define dist2 50
2

#define umbral_1 53
Página

#define umbral_2 53
task main ()
{
SetSensorLowspeed(IN_2); //para inicializar el sensor ultrasonico
if(SensorUS(IN_2)>dist1){
OnFwdSync(OUT_AC, 50, 0);
while(SensorUS(IN_2)>dist1);
Off(OUT_AC);
OnRev(OUT_C, 50);
}

Wait(1000);
SetSensorLight(IN_1);
OnFwd(OUT_AC, 50);
Wait(1500);

while (SensorUS(IN_2)>dist1){
if(Sensor(IN_1)<umbral_1)
{
Off(OUT_C);
OnFwd(OUT_A,50);
}
else if(Sensor(IN_1)>umbral_1)
{
Off(OUT_A);
OnFwd(OUT_C,50);
}
if(Sensor(IN_1)==umbral_1)
{
Off(OUT_AC);
OnFwdSync(OUT_AC,50,0);
}
}

Off(OUT_AC);
OnFwdSync(OUT_AC, 50, 0);
Wait(1000);
Off(OUT_AC);

if(Sensor(IN_1)>umbral_2)
{
OnFwdSync(OUT_AC, 50, 0);
}
else
{
Off(OUT_A);
OnFwd(OUT_C,50);
}
}
3
Página
3. Cuestionario

4. Conclusiones y recomendaciones

• Se recomienda previamente verificar el nivel de batería del robot a usar, para luego no tener
problemas de funcionamiento
• Se recomienda verificar los puertos a los cuales están instalados los sensores y motores.
• Se recomienda verificar el valor de umbral y de distancia que se usara para así tener un mejor
rendimiento al momento de la realización de la practica
• Se pudo observar que a medida que la luz ambiente iba bajando el valor del umbral debía ser
modificado para poder realizar correctamente la práctica.
• Se pudo realizar de manera sencilla el código para el funcionamiento correcto de la práctica
• Se pudo observar que el sensor de proximidad a ciertas distancias mínimas tiene un fallo de
reconocimiento, para eso se recomienda ver el manual de usuario del modelo del brick que se
está usando.

5. Bibliografía
• Anote la dirección web o el libro de donde extrajo el contenido del marco teórico. Componentes del
lego Mindstorm NXT 2.0 . Revisado: 06 de noviembre de 2021. Recuperado:
http://cefire.edu.gva.es/pluginfile.php/190596/mod_imscp/content/1/componentes_del_lego_mindstorm
s_nxt_20.html
• Ramírez, K. Escuela de Ciencias de la Computación e Informática. Revisado: 06 de noviembre de
2021. Recuperado:
https://www.kramirez.net/Robotica/Material/Presentaciones/LEGOMindstorms_NXT20.pdf
• Benedettelli, D. Programming LEGO NXT Robots using NXC. 7 de junio de 2007. Recuperado de:
NXC_tutorial.pdf (sourceforge.net)
4

• Programming LEGO NXT Robots using NXC. Visto: 06 de noviembre de 2021. Recuperado de:
Página

http://rbs.felk.cvut.cz/files/Prezentace_NXC.pdf
UNIVERSIDAD PRIVADA DEL VALLE
EXAMEN PREVIO

Estudiante: Crespo Torrico Emanuel B. Fecha: 27 / 10 / 2021


Carrera: IBI Asignatura: Robótica Grupo: A
Docente: Ing. Chávez Elías Laboratorio: T-9
Practica N0: 4 Título de la Practica: Control de Sensores
Firma Estudiante: Firma Docente:

Obstacle Course
Para completar este desafío, programe el robot para avanzar hacia la pared usando el sensor táctil, siga el curso de seguimiento
de línea usando el sensor de luz, llegue al área de calibración (zona con un libro verde) usando el sensor de sonda y finalmente
viaje a la meta. Su robot no debe golpear ningún obstáculo ni cruzar las líneas de límite de desafío.

Código usado:
#define UMBRAL 50
#define Obstaculo1 15
#define Obstaculo2 30
task main ()
{
//primer tramo
SetSensorLowspeed(IN_2);
OnFwdSync(OUT_AC,50,0);
while(SensorUS(IN_2)>Obstaculo1);
Off(OUT_AC);

//hacia linea
OnFwd(OUT_A,100);
Wait(800);
OnFwdSync(OUT_AC,50,0);
Wait(1200);
Off(OUT_AC);
//seguidor de linea
SetSensorLight(IN_4);
while(SensorUS(IN_2)>Obstaculo2)
{
if(Sensor(IN_4)<UMBRAL)
5

{
Página

Off(OUT_C);
OnFwd(OUT_A,40);
}
else
{
Off(OUT_A);
OnFwd(OUT_C,40);
}
}
Off(OUT_AC);
//posicionamiento 1
SetSensorLight(IN_4);
OnFwdSync(OUT_AC,80,0);
while(Sensor(IN_4)>UMBRAL);
{
RotateMotorEx(OUT_AC,60,920,20,true,true);
Wait(1000);
}
}

RVW Grand Challenge


DESCRIPCIÓN:
El robot móvil debe cumplir la trayectoria descrita en el mapa adjunto.

6
Página
Código usado:
task main()
{
repeat(9)
{
SetSensorLight(IN_4);
OnFwdSync(OUT_AC,80,0);
while(Sensor(IN_4)>LINEA);
{
}
}
//media vuelta
RotateMotorEx(OUT_AC,60,920,20,true,true);
Wait(2200);
//adelante
OnFwdSync(OUT_AC,80,0);
Wait(3000);
// 1/2 vuelta izq
RotateMotorEx(OUT_AC,60,920,-20,true,true);
Wait(1000);
// 1/2 vuelta der
RotateMotorEx(OUT_AC,60,920,20,true,true);
Wait(1000);
//adelante
OnFwdSync(OUT_AC,80,0);
Wait(1500);
//media vuelta
RotateMotorEx(OUT_AC,60,920,-20,true,true);
Wait(2200);
//fin
OnFwdSync(OUT_AC,80,0);
Wait(5000);
}

7
Página

También podría gustarte