Apuntes de Microcontroladores

viernes, 30 de noviembre de 2018

Examen Javier Plaza Ruiz 30/11/2018

Examen Práctico.

Ejercicio Propuesto por el profesor: 
El sistema que se intenta implementar con el Microcontrolador PIC 16F84A tiene como objetivo conseguir y logar el óptimo funcionamiento de una alarma.


Dicho proceso contiene 4 sensores, que son:
  • Sensor Puerta (SP)
  • Sensor Ventana (SV)
  • Sensor Techo (ST)
  • Sensor Sótano (SS)
Además de la Cerradura (C) de uno de los armarios del interior del inmueble.
Con esto se pretende poner una alarma en el interior del inmueble, para posibles robos en un futuro.
La alarma se activará cuando se active algún sensor y la cerradura esté habilitada (Cerradura=1).
Cuando la alarma esté habilitada (Cerradura=1), dispondremos de 20 segundos desde que cerramos la Cerradura (C=1) hasta que salimos de la habitación y cerramos la puerta.
Además, será exacrtamente igual al entrar, ya que dispone 20 segundos hasta abrir la cerradura. 

Si la persona tarda más de 20 segundos en cerrar la puerta o abrir la cerradura, la alarma se activará.

ORGANIGRAMA del proceso:




FICHERO FUENTE del programa en lenguaje C:


//Examen Práctico de Javier Plaza Ruiz 

//2º Automatización y Robótica Industrial

//Alarma en el interior de vivienda

/////////////////////////////////////////
// RA0 = Cerradura (C)
// RA1 = Sensor Puerta (SP)
// RA2 = Sensor Ventana (SV)
// RA3 = Sensor Techo (ST)
// RA4 = Sensor Sótano (SS)
// RB0 = Alarma activada
/////////////////////////////////////////

#include<16f84.h>
#use delay(clock=4000000) //Freacuencia de Trabajo con Cristal de Cuarzo
#use fast_io(A)
#use fast_io(B)
#byte port_b=6
#byte port_a=5

main()
{ //Inicio del cuerpo del programa del fichero fuente
port_a=0; //Ponemos a Nivel Bajo todos los pines del Puerto A
port_b=0; //Ponemos a Nivel Bajo todos los pines del Puerto B
set_tris_a(0xff); //Definimos como entradas todos los pines del Puerto A
set_tris_b(0x00); //Definimos como salidas todos los pines del Puerto B
while(1){ //entra de forma incondiconal en el Bucle Repetitivo
while(input(pin_A0)) //Cuando se active el Sensor Puerta y la Cerradura a 1.
{
while(input(pin_A2) || input(pin_A3) || input(pin_A4)) //Si se acciona alguno de los sensores
{
output_bit(pin_B0,1); //Activamos la alarma.
}
while(input(pin_A1)) // Cuando se active la Cerradura y el Sensor Techo a Nivel Alto.
{
delay_ms(15); //Temporización de 20 segundos
while(input(pin_A0))  // Cuando se active la Cerradura y el Sensor Sótano a Nivel Alto.
{
output_bit(pin_B0,1); //Activamos la alarma.
}
}
}
}
}


FICHERO FUENTE en lenguaje hexadecimal:

:1000000000308A00192800000F308400000803190E
:10001000182801308D008C018C0B0C288D0B0B28BF
:100020004A308C008C0B122800000000800B09283D
:10003000312884011F30830585018601FF3065006A
:1000400000306600051C372805192A2885192A283A
:10005000051E2C2806142428851C36280F308F00F6
:100060000428051C3528061431282C28222822288B
:0200700063002B
:00000001FF
;PIC16F84