Вы находитесь на странице: 1из 9

22-7-2018

Automatización secuencial
Alumnos:
Juan Pérez

Matriculas:
161817
161507
161545

Carrera y grupo:
MTAA-6F

Profesor:
Oscar Pérez

Materia:
Microcontroladores

Unidad:
II

Escuela:
Universidad Tecnológica de Aguascalientes

Fecha de entrega:
22/07/18
Descripción:
Este proyecto se aplica en una mezcladora de agua en la cual se requiere un proceso que
consiste en llenar un recipiente de plástico con los dos tipos de agua. Cada llenado tiene una
duración aproximada de dos segundos. Este proceso se tiene que repetir 3 veces o sea en 3
recipientes diferentes. El proceso de describe a continuación:
1. Presionar el botón de arranque para dar marcha a la banda transportadora.
2. Una vez que la banda este en marcha el recipiente avanzará hasta que el sensor 1 lo
detecte y la banda se detenga, después la bomba 1 se enciende y hace un llenado por
2 segundos.
3. Al haber pasado los 2 segundos la banda se volverá a encender.
4. Una vez que el recipiente este en marcha de nuevo avanzara hasta que el sensor 2 lo
detecte y la banda se detenga, después la bomba 2 se enciende y hace un llenado por
2 segundos.
5. Al haber pasado los 2 segundos la banda se volverá a encender.
6. Una vez que el recipiente este en marcha de nuevo avanzará hasta que el sensor 3 lo
detecte y la banda se detendrá por tres segundos esto para que el operador tenga
tiempo para introducir un nuevo recipiente y retirar el que está lleno. En este momento
se encenderá un LED que significa el número de llenado que va.
7. Una vez que paso el lapso de los 3 segundos la banda se volverá a encender.
8. Este proceso se repetirá un total de 3 veces, a la tercera vez harán un parpadeo los
LED´s que significa que el proceso ha terminado y los tres recipientes han sido
llenados. Después de esto el sistema se reiniciará y estará esperando de nuevo el botón
de arranque.
Boceto:

Mapeo de entradas y salidas:


ENTRADAS
ARRANQUE PIN_B0
PARO PIN_B1
SENSOR 1 PIN_B2
SENSOR 2 PIN_B3
SENSOR 3 PIN_B4
SALIDAS
BANDA PIN_D0
BOMBA 1 PIN_D1
BOMBA 2 PIN_D2
LED 1 PIN_E0
LED 2 PIN_E1
LED 3 PIN_E2
GRAFCET:
Diagrama electrónico:

Código en PICC:
#include <18F4550.h>
#DEVICE ADC=8

//---------CONFIG1L
#FUSES PLL5 //Divide By 5(20MHz oscillator input)
#FUSES CPUDIV1 //No System Clock Postscaler
#FUSES USBDIV //USB clock source comes from PLL divide by 2

//---------CONFIG1H
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled

//---------CONFIG2L
#FUSES PUT //Power Up Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES VREGEN //USB voltage regulator enabled

//---------CONFIG2H
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT1 //Watch Dog Timer uses 1:1 Postscale

//---------CONFIG3H
#FUSES MCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOPBADEN //PORTB pins are configured as digital I/O on RESET
#FUSES CCP2C1 //Pin RC1 used for CCP2

//---------CONFIG4L
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES NODEBUG //No Debug mode for ICD

//---------CONFIG5L
#FUSES NOPROTECT //Code not protected from reading

//---------CONFIG5H
#FUSES NOCPB //No Boot Block code protection
#FUSES NOCPD //No EE protection

//---------CONFIG6L
#FUSES NOWRT //Program memory not write protected

//---------CONFIG6H
#FUSES NOWRTB //Boot block not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES NOWRTC //configuration not registers write protected

//---------CONFIG7L
#FUSES NOEBTR //Memory not protected from table reads

//---------CONFIG7H
#FUSES NOEBTRB //Boot block not protected from table reads

#use delay(clock=20000000)

#use fast_io(B)
#use fast_io(D)
#use fast_io(E)

//ENTRADAS
#define ARRANQUE PIN_B0
#define PARO PIN_B1
#define S1 PIN_B2
#define S2 PIN_B3
#define S3 PIN_B4

//SALIDAS
#define BANDA PIN_D0
#define BOMBA1 PIN_D1
#define BOMBA2 PIN_D2
#define LED1 PIN_E0
#define LED2 PIN_E1
#define LED3 PIN_E2

//ON´s y OFF´s
#define ON output_high
#define OFF output_low
#define ON2 output_low
#define OFF2 output_high

unsigned int16 T;
unsigned int8 c,c2;

void main()
{
//inicializacion
set_tris_b(0B11111111);
set_tris_d(0B11111000);
setup_adc_ports( AN0_TO_AN4 );
set_tris_e(0B11111000);

//GRAFCET
while(TRUE){
//------------------------------
E0:
OFF2(BANDA);
OFF2(BOMBA1);
OFF2(BOMBA2);
OFF(LED1);
OFF(LED2);
OFF(LED3);

T=0;
c=0;
c2=0;

while(true){
if(input(ARRANQUE)) break;
if(input(PARO)) goto E0;
}

//------------------------------
E1:
ON2(BANDA);

while(true){
if(input(S1)) break;
if(input(PARO)) goto E0;
}

//------------------------------
E2:
OFF2(BANDA);
ON2(BOMBA1);

T=0;
while(true){
delay_ms(10);
T++;
if(T==200) break;
if(input(PARO)) goto E0;
}

//------------------------------
E3:
OFF2(BOMBA1);
ON2(BANDA);

while(true){
if(input(S2)) break;
if(input(PARO)) goto E0;
}

//------------------------------
E4:
OFF2(BANDA);
ON2(BOMBA2);

T=0;
while(true){
delay_ms(10);
T++;
if(T==200) break;
if(input(PARO)) goto E0;
}

//------------------------------
E5:
OFF2(BOMBA2);
ON2(BANDA);
c++;

while(true){
if(input(S3)) break;
if(input(PARO)) goto E0;
}

//------------------------------
E6:

while(true){
if(c==1) goto E7;
if(c==2) goto E8;
if(c==3) goto E9;
if(input(PARO)) goto E0;
}

//------------------------------
E7:
ON(LED1);
OFF2(BANDA);

T=0;
while(true){
delay_ms(10);
T++;
if(T==300) goto E1;
if(input(PARO)) goto E0;
}

//------------------------------
E8:
ON(LED2);
OFF2(BANDA);
T=0;
while(true){
delay_ms(10);
T++;
if(T==300) goto E1;
if(input(PARO)) goto E0;
}

//------------------------------
E9:
ON(LED3);
OFF2(BANDA);

T=0;
while(true){
delay_ms(10);
T++;
if(T==300) goto E10;
if(input(PARO)) goto E0;
}

//------------------------------
E10:
OFF(LED1);
OFF(LED2);
OFF(LED3);
c2++;

T=0;
while(true){
delay_ms(10);
T++;
if(T==20){
if(c2<4) goto E11;
if(c2==4) goto E0;
}
if(input(PARO)) goto E0;
}

//------------------------------
E11:
ON(LED1);
ON(LED2);
ON(LED3);

T=0;
while(true){
delay_ms(20);
T++;
if(T==10) goto E10;
if(input(PARO)) goto E0;
}
}
}

Вам также может понравиться