invernadero

MICROCONTROLADORES PARA CONTROL DE VARIABLES INVERNADERO POR: LUIS ALBERTO DESALES GUZMAN INGENIERIA MECATRONICA Introdu

Views 215 Downloads 1 File size 208KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

MICROCONTROLADORES PARA CONTROL DE VARIABLES INVERNADERO POR: LUIS ALBERTO DESALES GUZMAN INGENIERIA MECATRONICA Introducción: En la industria muchas veces en importante controlar o monitorear dispositivos dedicados a una tarea en especifico, por ejemplo medir temperatura en una caldera, medir presión en una tubería, medir pH en un reactor, controlar válvulas, motores o sistemas de refrigeración etc., esto nos lleva a tener que disponer de varios dispositivos, los cuales para que funcionen de manera adecuada, deben de estar en sincronía y así evitar posibles fallas en algún proceso, por lo general siempre habrán dispositivos maestros que gestionen acciones de control en dispositivos esclavos dedicados a una tarea especifica. En esta práctica se hace uso de una red de microcontroladores enlazados mediante la norma RS-485, esta norma es un sistema de transmisión diferencial que permite tener una comunicación bidireccional de hasta 32 equipos en un bus de datos común, y que permite la transmisión a gran distancia y a gran velocidad. El objetivo es diseñar una red de microcontroladores teniendo un microcontrolador maestro conectado a una PC vía RS-232 y conectado además a una red de dos microcontroladores

con

una conexión

basada en

la

norma

RS-485,

cada

microcontrolador esclavo atenderá a un dispositivo. El microcontrolador 1 leerá la información proveniente de un PPI, al cual se conecta un dip-switch en su puerto A, mientras que el esclavo 2 leerá la información proveniente de un teclado ver figura 1, por ultimo la PC podrá leer la información contenida en cada microcontrolador.

PC RS-232 C-DS80C320 MAESTRO

C-AT89C51 ESCLAVO 1 DIP-SWITCH

RS-485

C-AT89C51 ESCLAVO 2 TECLADO

Figura 1. Diagrama a bloques de la red de microcontroladores

La comunicación con la PC y el microcontrolador maestro se realiza mediante el protocolo de comunicación RS-232, en el cual se invierten y amplifican los niveles lógicos ttl, así por ejemplo para un cero lógico ttl se tendrá a la salida del RS-232 un voltaje entre +3 y +15 volts de c.d. y para un uno lógico ttl se tendrá un se tendrá a la salida del RS-232 un voltaje entre -3 y -15 volts de c.d. esta comunicación se denomina serie, por que los datos se envían bit a bit, por un solo alambre, para ello se cuenta con un protocolo de comunicación, el cual indicara al receptor cual es el inicio del datos con un bit de start y el final con un bit de stop, se puede agregar también el bit de paridad, como una forma de verificación de los datos recibidos, este protocolo se presenta de forma gráfica en la figura 2.

Figura 2. Formato de transmisión serie. La diferencia entre la norma RS-232 y la norma RS-485 es que la primera realiza transmisión y recepción de datos con referencia a tierra, es decir su comunicación en desbalanceada, además de ser un la comunicación punto a punto, mientras que como se menciono anteriormente la RS-485 realiza sus funciones de comunicación de forma balanceada no referida a tierra, lo cual hace que sea inmune al ruido y soportar comunicación multipunto. Material: Microcontrolador DS80C320 Latch 74HC573N EEPROM AT28C64 SN74LS08 (AND’s) SN74LS04(NOT) MAX232 Cristal de 11.0592 MHz Resistencias valores Decodificador 74LS138 Circuito integrado manejador de teclado matricial 72C922

Teclado matricial de 4X4 teclas con ocho líneas. Microcontrolador AT89C51 Dip-switch de 8 lineas Circuito integrado PPI-8255 Circuito integrado DS3569 Se procedió con el ensamble del circuito mostrado en la figura 3, en el cual se tiene un microcontrolador DS80C320 como maestro, que dispone de dos puertos seriales, en los cuales en primer puerto estará dedicado a la comunicación con la PC y el segundo puerto a la comunicación con los microcontroladores esclavos. .

1 6 2 7 3 8 4 9 5 D B10

U 31

. U 32 13 8 11 10

.

1n

1 3 4 5 2 6

. 1n

. . . 1n

R 1 IN R 2 IN T 1 IN T 2 IN C C C C V V

1 1 2 2 + -

R 1O U T R 2O U T T1O U T T2O U T

12 9 14 7

+ + -

2 2 2 2 2 2 2 2

1 2 3 4 5 6 7 8

1 1 1 1 1 1 1 1

0 1 2 3 4 5 6 7

29 30

P P P P P P P P

2 2 2 2 2 2 2 2

.0 .1 .2 .3 .4 .5 .6 .7

/A /A /A /A /A /A /A /A

8 9 1 1 1 1 1 1

P P P P P P P P

3 3 3 3 3 3 3 3

.0 .1 .2 .3 .4 .5 .6 .7

/R XD 0 /T XD 0 /IN T 0 /IN T 1 /T 0 /T 1 /W R /R D

P P P P P P P P

0 1 2 3 4 5

/A /A /A /A /A /A /A /A

D D D D D D D D

0 1 2 3 4 5 6 0

P 1 .0 /T 2 P 1 .1 /T 2 E X P 1 .2 /R XD 1 P 1 .3 /T XD 1 P 1 .4 /IN T 2 P 1 .5 /IN T 3 P 1 .6 /IN T 4 P 1 .7 /IN T 5

PSEN ALE

XTA L1 XTA L2

M A X2 32 .

0 .0 0 .1 0 .2 0 .3 0 .4 0 .5 0 .6 0 .7

EA R ST

1 n.

D S80C 320

1 11 2 3 4 5 6 7 8 9

. 39 38 37 36 35 34 33 32

74H C 573 O C C 1D 2D 3D 4D 5D 6D 7D 8D

1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q

U 30 1 1 1 1 1 1 1 1

9 8 7 6 5 4 3 2

10 9 8 7 6 5 4 3 25 24 21 23 2

1 2 3 4 5 6 7 8

20 22 27

19 18

A T28C 64B_P A A A A A A A A A A A A A

0 1 2 3 4 5 6 7 8 9 10 11 12

I/O I/O I/O I/O I/O I/O I/O I/O

0 1 2 3 4 5 6 7

R D Y /B

1 1 1 1 1 1 1 1

1 2 3 5 6 7 8 9

1

C E O E W E

1 1. . 3 0 7 M H z

U 28

31 9

.

.V C C . 1K

.

.

VC C S1 .

0.

1uF

U 34 4 3 2

D I

R O

D E R E

I/O A I/O B

1 6 7

TX_E S C LA V O S R X_ E S C A V O S

D S36F 95

.

Figura 3. Diagrama esquemático del sistema maestro Se continúo con la realización de los circuitos para los microcontroladores esclavos, a continuación se muestra el diagrama esquemático del esclavo1, ver figura 4.

U 37

0 1 2 3 4 5 6 7

30 29

2 .0 /A 2 .1 /A 2 .2 /A 2 .3 /A 2 .4 /A 2 .5 /A 2 .6 /A 2 .7 /A

8 9 1 1 1 1 1 1

P P P P P P P P

3 .0 /R XD 3 .1 /TXD 3 .2 /IN T 0 3 .3 /IN T 1 3 .4 /T0 3 .5 /T1 3 .6 /W R 3 .7 /R D

P P P P P P P P

0 1 2 3 4 5

0 0 0 0 0 0 0 0

A L E /P R O G PSEN

.0 .1 .2 .3 .4 .5 .6 .7

/A /A /A /A /A /A /A /A

D D D D D D D D

0 1 2 3 4 5 6 7

P P P P P P P P

1 1 1 1 1 1 1 1

.0 .1 .2 .3 .4 .5 .6 .7

3 3 3 3 3 3 3 3

1 2 3

VC C

6 4

VC C

19 18 17 16 15 14 13 12

. . . 33nF .

3 3 3 3 3 2 2 2

VC C

31 9

4 3 2 1 0 9 8 7

5 36 9 8 35 6

15 14 13 12 11 10 9 7

0 1 2 3 4 5 6 7

. 33nF .

.

74H C 573

19 18

XTA L1 XTA L2

Q Q Q Q Q Q Q Q

AT89C 51

U 38 G 2BY Y A Y B Y C Y Y G 1 Y G 2AY

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

E A /V P P R ST

5

9 8 7 6 5 4 3 2

1 2 3 4 5 6 7 8

1 1 1 1 1 1 1 1

P P P P P P P P

U 36 D D D D D D D D

0 1 2 3 4 5 6 7

R D W R A0 A1 R ESET C S

U 39 4

74H C 138

3 2

D I

R O

D E R E

I/O A I/O B

1 6 7

tx rx

P P P P P P P P

A A A A A A A A

0 1 2 3 4 5 6 7

P P P P P P P P

B B B B B B B B

0 1 2 3 4 5 6 7

P P P P P P P P

C C C C C C C C

0 1 2 3 4 5 6 7

4 3 2 1 4 3 3 3

0 9 8 7

1 1 2 2 2 2 2 2

8 9 0 1 2 3 4 5

1 1 1 1 1 1 1 1

4 5 6 7 3 2 1 0

370

16 15 14 13 12 11 10 9

1 2 3 4 5 6 7 8

O C C 1D 2D 3D 4D 5D 6D 7D 8D

.

1 2 3 4 5 6 7 8

2 2 2 2 2 2 2 2

1 11 2 3 4 5 6 7 8 9

16 15 14 13 12 11 10 9

U 35

S W D IP -8

8255

D S36F95

Figura 4. Diagrama esquemático del esclavo 1. Finalmente se presenta el diagrama del microcontrolador esclavo 2 en la figura 5. D3

U 40 2 2 2 2 2 2 2 2

1 2 3 4 5 6 7 8

1 1 1 1 1 1 1 1

0 1 2 3 4 5 6 7

30 29

P P P P P P P P

2 2 2 2 2 2 2 2

.0 .1 .2 .3 .4 .5 .6 .7

/A /A /A /A /A /A /A /A

8 9 1 1 1 1 1 1

P P P P P P P P

3 3 3 3 3 3 3 3

.0 .1 .2 .3 .4 .5 .6 .7

/R XD /T X D /IN T 0 /IN T 1 /T 0 /T 1 /W R /R D

0 1 2 3 4 5

A L E /P R O G PSEN

P P P P P P P P

0 0 0 0 0 0 0 0

.0 .1 .2 .3 .4 .5 .6 .7

/A /A /A /A /A /A /A /A

D D D D D D D D

0 1 2 3 4 5 6 7

P P P P P P P P

1 1 1 1 1 1 1 1

.0 .1 .2 .3 .4 .5 .6 .7

XTA L1 XTA L2 E A /V P P R ST

3 3 3 3 3 3 3 3

9 8 7 6 5 4 3 2

D0 D1 D2

1 2 3 4 5 6 7 8 19 18 31 9

100uF 100uF . . .

.

Y1 Y2 Y3 Y4

OSC X1 KEYB X2 DA X3 OE X4 74C922 U 45A 1

.

33nF

2

1

0

7

6

5

4

B

A

9

8

F

E

D

C

TECLADO MATRICIAL

74LS04

.

VC C

2

3

C 15 33nF .

1 1 .0 3 7 M H z

.

AT89C 51 U 44 4 3 2

D I

R O

D E R E

I/O A I/O B

1 6 7

tx rx

D S36F95

Figura 5. Diagrama esquemático del segundo esclavo.

A continuación se enlistan los programas para el microcontrolador maestro y los microcontroladores esclavos. ;programa de maestro de comunicación con una PC por el puerto serial cero ;y comunicación serial con los microcontroladores esclavos vías puerto serie 1 ;DEFINICION DE LAS DIRECCIONES DE NUEVOS REGISTROS SCON1 EQU 0C0H ;CONTROL PARA EL PTO. SERIAL 1 SBUF1 EQU 0C1H ;BUFFER DE DATOS PARA EL PTO.SERIAL 1 RCAP2L EQU 0CAH ;REG. PARA RECARGA DEL BYE BAJO DEL TIMER 2 RCAP2H EQU 0CBH ;REG. PARA RECARGA DEL BYE ALTO DEL TIMER 2 TL_2 EQU 0CCH ;REG. CONTADOR DEL BYTE BAJO DEL TIMER2 TH_2 EQU 0CDH ;REG. CONTADOR DEL BYTE ALTO DEL TIMER2 WDCON EQU 0D8H ;REGISTRO DE CONTROL DEL WATCHDOG ;DEFINICION DE LAS DIRECCIONES DE BITS TR2 EQU 0CAH ;HABILITACION DEL TIMER 2 RI1 EQU 0C0H ;BANDERA X INT.D’RECEPCION DEL PORT.SERIAL 1 TI1 EQU 0C1H ;BANDERA X INT.D’TRANSMICION DEL PORT.SERIAL 1 REN1 EQU 0C4H ;BIT D´HABILITACION DEL PORT.SERIAL 1 SM21 EQU 0C5H ;BIT 2 PARA EL MODO DEL PORT.SERIAL 1 SM11 EQU 0C6H ;BIT 1 PARA EL MODO DEL PORT.SERIAL 1 SMOFE EQU 0C7H ;BIT 0 PARA EL MODO DEL PORT.SERIAL 1 ES1 EQU 0AEH ;BIT PARA HABILITAR EL PORT.SERIAL 1 RB8_1 EQU 0C2H TB8_1 EQU 0C3H ;*********** VECTOR DE ATENCION A LA INTERRUPCION DEL PUERTO SERIE 0*********** DEFSEG SER0,START=23H; VECTOR DE INTERRUPCION PUERTO SERIE SEG SER0 ; **************** Vector de atención del puerto serie 1 DEFSEG SER1,START=3BH ;DEFINE LA DIRECCION DEL VECTOR DE COM.SERIAL 1 SEG SER1 AJMP SERIE1 ;************************* VECTOR DE ATENCIÓN AL RESET **************************** DEFSEG RST,START=00H; VECTOR DE INTERRUPCION DEL RESET SEG RST AJMP INICIO; SALTA A ETIQUETA ; ********************* VECTOR DE ATENCIÓN A LA INTERRUPCIÓN EXTERNA 0 *************** DEFSEG INT,START=03H; VECTOR INTERRUPCION EXTERNA 0 SEG INT ; AJMP INTER0 ;********************* DEFINICION DEL SEGMENTO PRINCIPAL *************************** DEFSEG PROGPRIN,START=50H ;DEJA LIBRES LOS VECTORES DE INTERRUCION SEG PROGPRIN INICIO: ;***** CONFIGURACION DEL PUERTO SERIAL 0 y 1 PARA COMUNICARSE CON La PC ************** ; ORL SCON,#050H ; ;SERIAL 0 EN MODO 1, Y HABILITA LA RECEPCION ;CONFIGURACION DEL TIMER 1 MOV TMOD,#020H MOV TH1,#0FDH ; MOV TL1,#0FDH ; ANL PCON,#07FH ; ANL WDCON,#07FH SETB EA

;MODO 2(AUTORECARGA) DEL TIMER1 VALOR PARA RECARGA 9600 BPS VALOR PARA RECARGA 9600 BPS SMOD PUESTO A 0, PARA NO DOBLAR LA VEL DEL PTO.0 ;SMOD PUESTO A 0, PARA NO DOBLAR LA VEL DEL PTO.1 ;HABILITA INTERRUPCIONES

SETB ES ;HABILITA INT. SERIAL 0 SETB ES1 ;HABILITA INT. SERIAL 1 SETB TR1 ;PONE EN MARCHA TIMER1 CLR p1.1 ;siempre recibe ;**************************************** BEGIN: ANL SCON,#0EFH ANL SCON1,#0EFH MOV DPTR,#MSG1 ;DESPLIEGA EL MENSAJE DE BIENVENIDA ACALL TRANS_PC MOV DPTR,#MSG2 ;DESPLIEGA SEGUNDO MENSAJE ACALL TRANS_PC MOV DPTR,#MSG3 ;DESPLIEGA TERCER MENSAJE ACALL TRANS_PC MOV DPTR,#MSG4 ;DESPLIUEGUA CUATRO MENSAJE ACALL TRANS_PC SETB SCON.4 ;HABILITA RB8 SETB SCON1.4 ;HABILITA RB8 OP1: CJNE A,#’1’,OP2 MOV A,#’G’ ;IDENTIFICADOR MICRO ESCLAVO 1 MOV SBUF1,A ;COMIENZA A TRANMITIR POR SERIAL 1 ACALL DELAY ;LLAMA A REARDO MOV DPTR,#MSG5 MOV A,R2 ;PASA EL CONTENIDO DE R2 AL ACUMULADOR MOV SBUF,A ;TRANSMITE EL CONTENIDO DEL ESCLAVO 1 A LA PC ACALL DELAY CLR A AJMP OP1 ;REGRESA A OP1 OP2: SETB P1.1 CJNE A,#’2’,OP1 MOV A,#’H’ ;IDENTIFICADOR MICRO ESCLAVO 2 MOV SBUF1,A ACALL DELAY MOV DPTR,#MSG6 ACALL TRANS_PC MOV A,R2 MOV SBUF,A ACALL DELAY CLR A AJMP OP1 ;************** RUTINA PARA ATENCION DEL PUERTO SERIAL 1 ************************* ;****************COMUNICACION CON LOS ESCLAVOS *********************************** SERIE1: JNB TI1,RECIBE CLR TI1 CLR P1.1 RETI RECIBE: JNB RI1,RECIBE CLR RI1 MOV A,SBUF1 MOV R2,A RETI ;************** RUTINA PARA ATENCION DEL PUERTO SERIAL 0 ************************* ;****************COMUNICACION CON LOS ESCLAVOS *********************************** SERIE0: JNB TI,RECIBE0 CLR TI

;SI NO ES TRANSMISIÓN SALTA A RECIBE ;LIMPIA TI

RETI RECIBE0: JNB RI,RECIBE0 CLR RI MOV A,SBUF MOV R2,A RETI TRANS_PC:

TXPC_END:

;RETORNA ;SI NO ES RECEPCIÓN VUELVE A CHECAR RI ; LIMPIA RI ;MUEVE EL CONTENIDO DE SBUF AL ACUMULADOR ;Y RESPALDALO EN R2 ; REGRESA

CLR A ; LIMPIA ACUMULADOR PARA INICIAR EN CERO MOVC A,@A+DPTR JZ TXPC_END ;ES CERO, ENTONCES FIN DE LA CADENA MOV SBUF,A TRANSMITE EL ACUMULADOR A LA PC ACALL DELAY AJMP TRANS_PC REGRESA AL LOOP CLR A ;LIMPIA ACUMULADOR RET

;MENSAJES DESPLEGADOS EN LA PC CON HIPERTERMINAL MSG1: MSG2: MSG3: MSG5:

DB ‘MANIPULACION DE 2 MICROCONTROLADORES ESCLAVOS’,0DH,0AH,0 DB ‘TECLEE LA OPCION DESEADA’,0DH,0AH,0 DB ‘1. ESCLAVO 1 (PPI)’,0DH,0AH,0 DB ‘VALOR EN ESCLAVO 1: ‘,0DH,0AH,0

DELAY: MOV R0,#0FFH DELAY2: MOV R1,#0FFH DJNZ R0,DELAY2 RET END

Programa para el microcontrolador esclavo 1. ;************PROGRAMA PARA LOS ESCLAVOS DE LA RED DE MICROCONTROLADORES********************** ;*********************** ESCLAVO 1 conectado al PPI ************************************************************** DEFSEG RST,START=00H ;VECTOR DE INTERRUPCION DEL RESET DEFSEG INT,START=03H ;VECTOR INTERRUPCION EXTERNA 0 DEFSEG SERIE,START=23H ;VECTOR DE INTERRUPCION PUERTO SERIE SEG RST AJMP INICIO SEG SERIE AJMP SERIE0 SEG INT ; AJMP INTER0 DEFSEG PROGPRIN,START=30H ;DEJA LIBRES LOS VECTORES DE INTERRUCION SEG PROGPRIN INICIO: ORL SCON,#50H ANL PCON, #7Fh MOV TMOD, #20h SETB EA SETB ES SETB TR1 CLR P1.0 ACALL CONTROL

;HABILITA DS3659 COMO RECEPTOR ; CONFIGURA PPI PA COMO ENTRADA LOS DEMAS COMO

; SALIDAS ;**************************************** INI:

PPI:

CJNE A,#'G',INI ACALL PPI ACALL DELAY SETB P1.0 MOV A,R2 MOV SBUF,A AJMP INI

;COMPARA EL IDENT. DEL ESC. 2 CON G ; LLAMA A PPI

MOV DPTR,#6000H MOVX A,@DPTR

;HABILITA PPI DESDE 6000H ;LEE EL CONTENIDO DEL PUERTO A DEL PPI Y PASA AL AC.

; CONFIGURA DS3659 COMO TRANSMISOR ;MUEVE R2 AL AC. ;TRANSMITE EL AC. POR EL P. SERIE

RET CONTROL: MOV DPTR,#6003H ;APUNTA A LA PALABRA DE CONTROL DEL PPI A0=A1=1 MOV A,#90H ;PALABRA DE CONTROL PA ENTRADA PB Y PC SALIDA MOVX @DPTR,A ;ENVIA PALABRA DE CONTROL AL PPI RET ;************** RUTINA PARA ATENCION DEL PUERTO SERIAL 0 ************************* ;****************COMUNICACION CON LOS ESCLAVOS *********************************** SERIE0: JNB TI,RECIBE0 CLR TI clr p1.0 RETI

;ES TRANSMISION? SI ES REC. SALTA A RECIBE0 ;LIMPIA TI ;CONF. DS3659 COMO RECEPTOR

RECIBE0: JNB RI,RECIBE0 CLR RI MOV A,SBUF RETI

;ES RECEPCION? ;LIMPIA BANDERA DE RI ;PASA EL CONTENIDO DE SBUF AL AC.

DELAY: MOV R0,#0FFH DELAY2: MOV R1,#001H DELAY3: DJNZ R1,DELAY3 DJNZ R0,DELAY2 RET

;DELAY

END

Programa del microcontrolador esclavo 2. ;IDENTIFICACION CON '01 EN PC Y ‘H’ EN LA RED conectado a el tecldo matricial' ;******************************************************************************* ;******************************************************************************* DEFSEG RST,START=00H ;VECTOR DE INTERRUPCION DEL RESET DEFSEG INT,START=03H ;VECTOR INTERRUPCION EXTERNA 0 DEFSEG SERIE,START=23H ;VECTOR DE INTERRUPCION PUERTO SERIE SEG RST AJMP INICIO SEG SERIE AJMP SERIE0 SEG INT AJMP INTER0 SEG PROGPRIN INICIO: ORL SCON,#50H

ANL PCON, #7Fh ;Clear SMOD bit for port 0 MOV TMOD, #20h ;Timer 1: Mode 2 (8-bit reload) MOV TH1, #0FDH ;Reload value for 9600, SMOD = 0 SETB PS ;BIT ALTO DE PRIORIDAD PARA PUERTO SERIE SETB IT0 ;SE ACTIVA /INTO POR FLANCO DESCENDENTE SETB EA SETB ES SETB TR1 SETB EX0 ;ACTIVA BIT DE INT. DE /INT0 ;**************************************** SETB P1.0 CLR P1.1 ;CONF. DS3659 COMO RECEPTOR INI: CJNE A,#'H',INI ;COMPARA LA PALABRA DE IDENT. DEL ESCLAVO 1 ACALL DELAY ;LLAMA A RETARDO SETB P1.1 ;HABILITA TRANSMISION EN EL DS3659 MOV SBUF,A ;ENVIA TRANSMISION DE DATOS AL MASTER AJMP INI ; SERIE0: JNB TI,RECIBE0; CLR TI; CLR P1.1; RETI;

SI NO ES TRANMISION ENTONCES VE A RECIBE0 LIMPIA REGISTRO TI CONFIGURA DS3659 CON RECEPTOR RETORNO DE INT.

RECIBE0: JNB RI,RECIBE0;

ES RECEPCION?

MOV A,SBUF; RETI;

EN CONT. DE LA RECEPCION AGUARDALO EN EL AC.

DELAY: MOV R0,#0FFH DELAY2: MOV R1,#001H DELAY3: DJNZ R1,DELAY3 DJNZ R0,DELAY2 RET

;RETARDO

INTER0: CLR P1.0 MOV A, P0

;HABILITA /CS DEL MANEJADOR CI74C922 ;LEE EL PUERTO 0 Y GUARDA EN A

SETB P1.0 RETI

Nota: Se conectaron dispositivos perifericos a los microcontroladores