Está en la página 1de 14

Instituto Politécnico Nacional

UPIITA

Proceso industrial elemental


Hugo Alejandro Jiménez Garcı́a
2MM4
Índice general

Introducción 2
Descripción del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Solución en diagrama de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Marco teórico 4
Memorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Puertos I/O en AVR y 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Solución con memoria AT28C256 5


Aplicación del Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Diseño del circuito y esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Solución con sistema mı́nimo 7


Aplicacion del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Diseño del circuito y esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Solución con AT89S52 9


Aplicación del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Diseño del circuito y esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Solución con ATMEGA8515 11


Aplicación del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Diseño del circuito y esquemático . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Conclusión 13

1
Introducción

Descripción del problema

V O LL AL

B1 B2
C
B
A
Tanque A

Figura 1: Sistema A

El sistema anterior debe ser controlado para reaccionar conforme a los siguientes casos.

Cuando no hay liquido en el tanque A se activan B1, B2 y la señal de vacı́o.

Al llegar el nivel a A sigue llenando con B1 y B2; la señal de vacı́o sigue activa.

Al llegar al nivel a B se apaga B2 y se activa la señal de optimo.

Al llegar al nivel a C se apaga B1 y se activa la señal de lleno.

Si un sensor superior se encuentra activo y los inferiores no, se apagan las bombas y
los señalamientos, dando paso a la alarma.

2
Solución en diagrama de flujo

Inicio

Sensores

Nuevo
Activos: B1 , B2 , V

Vacio
Activos: B1 , B2 , V

Optimo
Activos: B1 , O

Lleno
Activos: LL

Fallo
Activos: A

Figura 2: Algoritmo

3
Marco teórico

Memorias
La memoria es un circuito integrado de alta densidad puramente convinacional. Posee m
entradas llamadas Adress que van desde A0 hasta Am−1 , tiene n salidas llamadas Data que
van desde D0 hasta Dn−1 y tiene diversas señales de control que varian segun la variatne
tecnologica, pero que pueden ser CS (Chip select), OE (output enable). W E (output enable),
W/W (Read or write).

Puertos I/O en AVR y 8051


Los puertos I/O de un 8051 se configuran automáticamente según el requerimiento. Por
ejemplo

uint8_t C ;
uint8_t A ;

A =0 xFF ;

P1 = C ; // C o n f i g u r a el puerto como salida y escribe en este


A = P1 ; // C o n f i g u r a el puerto como una entrada y realiza la lectura del mismo

En cambio en un AVR como el ATMEGA8515 la configuración de los puertos I/O debe por
software. Los registros clave para la configuración de estos puertos son.

DDRn n refiriéndose al puerto. DDRA para el puerto A por ejemplo.

PORTn n refiriéndose al puerto. PORTA para el puerto A por ejemplo.

Para leer un puerto configurado como entrada en AVR, puede acudirse al registro PINn
correspondiente.

4
Solución con memoria AT28C256

Aplicación del Algoritmo


La colocación de los sensores A,B,C en las entradas A0,A1,A2 de una memoria EEPROM,
generara el acceso a una dirección en la memoria para cada evento posible del sistema A; en
tal dirección se encuentra guardado el estado del sistema correspondiente al caso (actuando
como una switch en programación). Los sensores se colocaran en estas entradas debido a que
de esta manera brindan acceso a direcciones continuas de memoria. Se tomaran en cuenta
las siguientes consideraciones:

Sensores activos en alto.

Actuadores activos en alto.

Programa
A2 A1 A0 D5 D4 D3 D2 D1 D0 Data

C B A AL LL O V B2 B1 HEX
0 0 0 0 0 0 1 1 1 07
0 0 1 0 0 0 1 1 1 07
0 1 0 1 0 0 0 0 0 20
0 1 1 0 0 1 0 0 1 09
1 0 0 1 0 0 0 0 0 20
1 0 1 1 0 0 0 0 0 20
1 1 0 1 0 0 0 0 0 20
1 1 1 0 1 0 0 0 0 10

Tabla 1: Codificación

Para la solución del problema por medio de memorias, se ha solicitado el uso de una memoria
AT28C256 que cumple el requisito de guardar palabras iguales o mayores a 6 bits. Esta
memoria posee direcciones de 15 bits.

5
Offset
00 01 02 03 04 05 06 07 08
Dir. base
0000H 07 07 20 09 20 20 20 10 FF
0010H FF FF FF FF FF FF FF FF FF

Tabla 2: Volcado de memoria

Formato Intel

:08000000070720092020201059
: 0 0 0 0 0 0 0 1FF

Diseño del circuito y esquemático

IOA[1..3] VCC
IOA[1..3]
U1 AT28C256
IOA1
A0 VCC
IOA2
A1 GND
IOA3
A2
A3
POT[1..2]
A4 POT[1..2]
GND
A5
U2 ULN2003
A6
POT1
A7 I/O0 I1 O1
POT2
A8 I/O1 I2 O2
IOB1
A9 I/O2 I3 O3
IOB2
A10 I/O3 I4 O4
IOB3
A11 I/O4 I5 O5
IOB4
A12 I/O5 I6 O6
A13 I/O6 I7 O7
A14 I/O7
IOB[1..2]
GND COM IOB[1..4]
WE
OE
CE

VCC
GND

VCC
GND

Figura 3: Etapa de control del sistema A

El Bus IOA corresponde a una tarjeta I/O representando los sensores A, B, C.


El Bus IOB corresponde a una tarjeta I/O para mostrar las señales de vacı́o optimo y
lleno ası́ como la alarma.
El Bus POT corresponde a una etapa de potencia para activar las bombas B1 y B2.
El uso de un buffer de colector abierto (ULN2003) permite la interfaz con actuadores
activados por mayor potencia. Igualmente adapta la señal de la memoria a las placas
de potencia e interfaz, ya que estas son activas en bajo.

6
Solución con sistema mı́nimo

Aplicacion del algoritmo


Por medio de un AT89S52 se leerá el estado de los sensores y se determinara el estado
necesario en el sistema. Para la aplicación del algoritmo solamente son necesarios dos puertos;
uno de lectura para los sensores y otro de salida para el sistema.

Programa
# define new 0 x00 // estados de los s e n s o r e s - Tabla 1
# define vacio 0 x01
# define optimo 0 x03
# define lleno 0 x07

# define kvacio 0 x07 // estados del sistema - Tabla 1


# define koptimo 0 x09
# define klleno 0 x10
# define kalarma 0 x20
# define kapagado 0 x00

# define Sal 0 x8000 // P e r i f é r i c o s


# define Sen 0 x8002

xdata char * Salida ; // A p u n t a d o r e s a memoria externa


xdata char * Sensores ;

code void main () {


Salida = Sal ;
Sensores = Sen ;
while (1){
switch (* Sensores ){ // lectura de s e n s o r e s
case new : * Salida = kvacio ; break ;
case vacio : * Salida = kvacio ; break ;
case optimo : * Salida = koptimo ; break ;
case lleno : * Salida = klleno ; break ;
default : * Salida = kalarma ; break ;
} // e s c r i t u r a en el sistema
}
}

Codigo 1: PIE con sistema mı́nimo

7
Diseño del circuito y esquemático

R1 R2 R3 R4 R5 R6
330 330 330 330 330 330

B1 B2 V O LL AL
SISTEMA MINIMO U9
9
COM
1 16
RST PA0 1B 1C
2 15
R10 PA1
3
2B 2C
14
RXD PA2 3B 3C
10k 4 13
TXD PA3 4B 4C
5 12
INT0 PA4 5B 5C
6 11
INT1 PA5 6B 6C
7 10
T0 PA6 7B 7C
T1 PA7
ULN2003A
P1.0 PB0
P1.1 PB1
P1.2 PB2
P1.3 PB3
P1.4 PB4
P1.5 PB5
P1.6 PB6
C1 P1.7 PB7 DSW1
OFF ON
6 1
XTAL1 PC0
5 2
1

XTAL2 PC1
15pF X1 PC2
4 3
Y3 PC3
DIPSW_3
C2 Y4 PC4
Y5 PC5 R7 R8 R9
2

Y6 PC6 10k 10k 10k


Y7 PC7
15pF

CCT001

Figura 4: Etapa de control con Sistema Minimo

El puerto PA corresponde a un periférico exclusivamente de salida en la dirección


0x8000.

El puerto PC corresponde a un periférico exclusivamente de entrada en la dirección


0x8002.

X1 es un cristal de 12MHz, C1 y C2 son capacitores con un valor de 15 a 33 pF.

8
Solución con AT89S52

Aplicación del algoritmo


Por medio de un AT89S52 se leerá el estado de los sensores y se determinara el estado
necesario en el sistema. Para la aplicación del algoritmo solamente son necesarios dos puertos;
uno de lectura para los sensores y otro de salida para el sistema.

Programa
# define new 0 x00 // estados de los s e n s o r e s - Tabla 1
# define vacio 0 x01
# define optimo 0 x03
# define lleno 0 x07

# define kvacio 0 x07 // estados del sistema - Tabla 1


# define koptimo 0 x09
# define klleno 0 x10
# define kalarma 0 x20
# define kapagado 0 x00

# define SENSORES P1 // s e n s o r e s en P1
# define SALIDAS P2 // salidas en P2

void init_var ();

void main () {
init_var ();
while (1){
switch ( SENSORES ){ // lecuta de los s e n s o r e s
case new : SALIDAS = kvacio ; break ;
case vacio : SALIDAS = kvacio ; break ;
case optimo : SALIDAS = koptimo ; break ;
case lleno : SALIDAS = klleno ; break ;
default : SALIDAS = kalarma ; break ;
// E s c r i t u r a en el sistema
}
}
}

void init_var (){


SALIDAS = 0;
}

Codigo 2: PIE con AT89S52


En este caso no es necesario configurar al microcontrolador, ya que la configuración de puertos
de salida se hace automáticamente.

9
Diseño del circuito y esquemático

IOA[1..3]
IOA[1..3]
U1 AT89S52

IOA1
P1.0 (T2) P0.0 (AD0)
IOA2
P1.1 (T2 EX) P0.1 (AD1)
IOA3
P1.2 P0.2 (AD2)
P1.3 P0.3 (AD3)
P1.4 P0.4 (AD4)
P1.5 (MOSI) P0.5 (AD5)
POT[1..2]
P1.6 (MISO) P0.6 (AD6) POT[1..2]
P1.7 (SCK) P0.7 (AD7)
U2 ULN2003
POT1
P3.0 (RXD) P2.0 (A8) I1 O1
POT2
P3.1 (TXD) P2.1 (A9) I2 O2
GND IOB1
P3.2 (INT0) P2.2 (A10) I3 O3
IOB2
P3.3 (INT1) P2.3 (A11) I4 O4
IOB3
P3.4 (T0) P2.4 (A12) I5 O5
IOB4
R1 P3.5 (T1) P2.5 (A13) I6 O6
VCC P1
P3.6 (WR) P2.6 (A14) I7 O7
P3.7 (RD) P2.7 (A15)
IOB[1..2]
COM IOB[1..4]

C1 RST ALE/PROG
mC
PSEN
J1
EA/VPP
C2
mP Cr1
XTAL1
XTAL2

C3
GND

Figura 5: Etapa de control con AT89S52

El Bus IOA corresponde a una tarjeta I/O representando los sensores A, B, C.

El Bus IOB corresponde a una tarjeta I/O para mostrar las señales de vacı́o optimo y
lleno ası́ como la alarma.

El Bus POT corresponde a una etapa de potencia para activar las bombas B1 y B2.

El uso de un buffer de colector abierto (ULN2003) permite la interfaz con actuadores


activados por mayor potencia. Igualmente adapta la señal de la memoria a las placas
de potencia e interfaz, ya que estas son activas en bajo.

El jumper J1 se conecta a VCC para que U1 trabaje como microcontrolador.

Cr1 es un cristal de 12MHz, C2 y C1 son capacitares con un valor de 15 a 33 pF.

El uso de un buffer de colector abierto (ULN2003) permite la interfaz con actuadores


activados por mayor potencia. Igualmente adapta la señal de la memoria a las placas
de potencia e interfaz, ya que estas son activas en bajo.

10
Solución con ATMEGA8515

Aplicación del algoritmo


Por medio de un ATMEGA8515 se leerá el estado de los sensores y se determinara el estado
necesario en el sistema. Para la aplicación del algoritmo solamente son necesarios dos puertos;
uno de lectura para los sensores y otro de salida para el sistema.

Programa
# define new 0 x00 // estados de los s e n s o r e s - Tabla 1
# define vacio 0 x01
# define optimo 0 x03
# define lleno 0 x07

# define kvacio 0 x07 // estados del sistema - Tabla 1


# define koptimo 0 x09
# define klleno 0 x10
# define kalarma 0 x20
# define kapagado 0 x00

# define SENSORES PINB // s e n s o r e s en Puerto B


# define SALIDAS PortA // salidas en Puerto A

void init_var (); // Iniciar v a r i a b l e s


void Congif (); // C o n f i g u r a r m i c r o c o n t r o l a d o r

void main () {
Congif ();
init_var ();
while (1){
switch ( SENSORES ){ // lecuta de los s e n s o r e s
case new : SALIDAS = kvacio ; break ;
case vacio : SALIDAS = kvacio ; break ;
case optimo : SALIDAS = koptimo ; break ;
case lleno : SALIDAS = klleno ; break ;
default : SALIDAS = kalarma ; break ;
} // E s c r i t u r a en el sistema
}
}
void Congif (){
DDRA = 0 xFF ; // Puerto A como salida
PORTA =0 xFF ;
DDRB = 0 x00 ; // Puerto B como entrada con r e s i s t e n c i a s de PULLUP
PORTB =0 x07 ;
}
void init_var (){
SALIDAS = 0 x00 ;
}

Codigo 3: PIE con ATMEGA8515

11
Diseño del circuito y esquemático

IOA[1..3] POT[1..2]
IOA[1..3] POT[1..2]
U?
U2 ULN2003
IOA1 POT1
PB0 (OC0/T0) PA0 (AD0) I1 O1
IOA2 POT2
PB1 (T1) PA1 (AD1) I2 O2
IOA3 IOB1
PB2 (AINT0) PA2 (AD2) I3 O3
IOB2
PB3 (AINT1) PA3 (AD3) I4 O4
IOB3
PB4 (SS) PA4 (AD4) I5 O5
IOB4
PB5 (MOSI) PA5 (AD5) I6 O6
PB6 (MISO) PA6 (AD6) I7 O7
PB7 (SCK) PA7 (AD7)
IOB[1..2]
COM IOB[1..4]
PD0 (RXD) PC0 (A8)
PD1 (TXD) PC1 (A9)
VCC GND
PD2 (INT0) PC2 (A10)
PD3 (INT1) PC3 (A11)
PD4 (XCK) PC4 (A12)
PD5 (OCA1) PC5 (A13)
R1 PD6 (WR) PC6 (A14)
P1
PD7 (RD) PC7 (A15)

XTAL1 PE0(ICP/INT2)
XTAL2 PE1(ALE)
C1 RESET PE2(OCIB)

GND ATMEGA8515

Figura 6: Etapa de control con ATMEGA8515

El Bus IOA corresponde a una tarjeta I/O representando los sensores A, B, C.

El Bus IOB corresponde a una tarjeta I/O para mostrar las señales de vacı́o optimo y
lleno ası́ como la alarma.

El Bus POT corresponde a una etapa de potencia para activar las bombas B1 y B2.

El uso de un buffer de colector abierto (ULN2003) permite la interfaz con actuadores


activados por mayor potencia. Igualmente adapta la señal de la memoria a las placas
de potencia e interfaz, ya que estas son activas en bajo.

12
Conclusión

Este problema tiene una estructura puramente selectiva, por ese motivo es posible so-
lucionarlo con componentes como la memoria (puramente conmutacionales). Puede notarse
ademas que la interfaz en todos los casos es la misma, mostrando que el control puede
realizarse por medio de una infinidad de elementos.
En algunos casos no es necesario el uso de las unidades funcionales de un microcontrolador
para la solución a un problema. En este caso la capacidad de los sistemas ocupados no es
aprovechada correctamente; incluso la memoria se encuentra mayormente vacı́a. EL beneficio
que se tiene es este caso es la posibilidad de extender el sistema, pero en caso de no ser esto
un requerimiento; lo masx recomendable seria buscar elementos más sencillos y baratos para
realizar el control.

13

También podría gustarte