Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UPIITA
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
Conclusión 13
1
Introducción
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.
Al llegar el nivel a A sigue llenando con B1 y B2; la señal de vacı́o sigue activa.
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).
uint8_t C ;
uint8_t A ;
A =0 xFF ;
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.
Para leer un puerto configurado como entrada en AVR, puede acudirse al registro PINn
correspondiente.
4
Solución con memoria AT28C256
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
Formato Intel
:08000000070720092020201059
: 0 0 0 0 0 0 0 1FF
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
6
Solución con sistema mı́nimo
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
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
CCT001
8
Solución con AT89S52
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 SENSORES P1 // s e n s o r e s en P1
# define SALIDAS P2 // salidas en P2
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
}
}
}
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
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.
10
Solución con ATMEGA8515
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
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 ;
}
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
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.
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