Anda di halaman 1dari 3

REPORTE CONTROL DE

LLENADO DE TINACO
Microcontroladores Avanzados

4MV8
15 de diciembre de 2016

Andrade Sánchez Jesús Eduardo


Ruelas Sánchez Francisco Xavier
Control de Llenado Tinaco-Cisterna
1 SISTEMA TINACO-CISTERNA
Se necesita que cuando el tinaco tenga un nivel bajo de agua dentro se active la bomba conectada a la
cisterna, la cisterna cuenta con sensores de nivel en el caso de que el tinaco necesite ser llenado y la
cisterna no tenga agua protegerla de trabjar sin agua.

1.1 TABLA DE VERDAD DE TRABAJO DEL SISTEMA


Sensores Cisterna Sensores Tinaco Bomba
Nivel Bajo Nivel Alto Nivel Bajo Nivel Alto Salida
0 x x x 0
1 X 0 0 1
1 X 0 1 Error
1 X 1 0 X
1 x 1 1 0

 Si el sensor de nivel bajo de la cisterna se desactiva, significa que no hay agua por lo que el
sistema no funcionará.
 La bomba se energiza cuando el sensor de nivel bajo del tinaco se desactiva.
 Se apaga la bomba, cuando el sensor de nivel alto se activa.

En el codigo se utilizaron interrupciones externas para definir los casos en los que debe trabajar la
bomba. Estas interrupciones externas provienen de los impulsos generados por los sensores dentro del
tinaco y la cisterna.

1.2 ETAPA DE POTENCIA


Para activar la bomba se realizó una etapa de potencia con un relevador y un transistor Bc547.
El transistor es usado como interruptor para activar un relevador al cual está conectado a la bomba y a
su alimentación.

2 CODIGO
/*
* Tinaco.cpp
* Created: 14/12/2016 08:53:42 a. m.
* Author: fxrue
*/
#define F_CPU 4000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
int i=0;
ISR(INT0_vect){//Flanco de bajada detecta que esta vacio el tinaco, ENCIENDE la bomba
PORTC=0x01;
}
ISR(INT1_vect){//Flanco de subida detecta que esta lleno el tinaco, APAGA la bomba
PORTC=0x00;
}
ISR(INT2_vect){//Flanco de bajada detecta que no hay agua en la cisterna, APAGA bomba
PORTC=0x00;
}
int main(void)
{
cli();
DDRB=0x00;//entradas int2
DDRD=0x00;//entradas int0,int1
DDRC=0xFF;//salida
GICR|=(1<<INT0)|(1<<INT1)|(1<<INT2);//habilitamos las tres interrupciones
MCUCR|=(0<<ISC00)|(1<<ISC01)|(1<<ISC10)|(1<<ISC11);//int0 flanco de bajada(nivel bajo)
int1 flanco de subida(nivel alto)
MCUCSR|=(0<<ISC2);//int2 flanco de bajada (cisterna)
sei();
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");

while(1)
{
//TODO:: Please write your application code
}
}

Anda mungkin juga menyukai