EXAMEN RESUELTO Sistemas Electrónicos Avanzados 28/06/96 Industriales Para el control de presión de un circuito oleohidráulico se utiliza una bomba accionada por un motor de alterna y un sensor de presión eléctrico. El motor se acciona con un regulador de alterna y la regulación se realizará manteniendo la presión constate a un valor de 0.5 Kg/cm2 (la presión máxima del sistema es de 1 Kg/cm2). Las características de los elementos son las siguientes: Motor: P=4 KW P VRMS I RMS COS Factor de potencia(cos )=0.8 Vnominal=220 v Velocidad nominal=3000 r.p.m. Sensor: Lineal Rango de presión: 01 Kg/cm2 Rango de tensión de salida: 02.5 v Si el circuito de control se implementa con un microcontrolador 80C537, se pide: 1. Diseñar la etapa de potencia, seleccionando los dispositivos de potencia más adecuados de entre los que se muestran en la tabla adjunta, y la etapa de disparo teniendo en cuenta los valores mostrados en ella. VRWM IT RMS/IT AV IGM tGT TRIAC 1 400 v 20 A 150 mA 70 ms TRIAC 2 400 v 7A 200 mA 100 ms TIRISTOR 1 400 v 9A 150 mA 20 ms TIRISTOR 2 600 v 12 A 200 mA 20 ms 2. Implementar la etapa de control con las siguientes especificaciones: - Memoria EPROM de 8 Kbytes situada en la posición 0000H y siguientes. - Memoria RAM de 32 Kbytes situada en la posición 8000H y siguientes. - Reloj en tiempo real (ICM7170) situado en la dirección 4000H y siguientes. - Visualizador LCD situado en la dirección 4080H y siguientes. El sistema debe almacenar en la RAM externa y visualizar en el display del LCD el valor de la presión cada segundo (realizando la temporizacióncon el RTC), y realizar el control de presión con un periodo de muestreo de 10 ms, (mediante utilización del Timer 1). El algoritmo de control realizará las siguientes acciones: si la presión aumenta en 0.1 Kg/cm2, el ángulo de disparo se incrementa en 18º (eléctricos) y viceversa. El ángulo de disparo correspondiente a 0.5 Kg/cm2 es de 90º. 3. Escribir el código fuente correspondiente a: 3.1. Inicialización del convertidor A/D y rutina de conversión (sin utilizar la interrupción A/D) teniendo en cuenta que la resolución de la medida debe ser menor de 10 mV. 3.2. Inicialización del temporizador de muestreo (Timer1) y rutina de servicio de la interrupción asociada. 3.3. Inicialización del ICM7170 y rutina de servicio de la interrupción asociada (Temporización cada segundo). 4. Realizar el flujograma del programa completo. AC M AC C Apartado 1) P VRMS I RMS cos I RMS P 4103 22.72W VRMS cos 2200.8 I m I RMS 2 3214 . A iT(t) I TAV I I 1 I m sen t dt m cos t 0 m 10.23A 2 0 2 I TAV 12A VRWM 600v ELEMENTO SELECCIONADO: TIRISTOR T2 1 3 2 1 2 3 2 1 N MOTOR AC T1 R 1 2 2 1N4007 1 VCC RTX 2 1 1N4007 VCC R1 80537 Q1 R2 PX Q2 R1 R2 Vcc VBEQ1 I BEQ1 5 0.6 1K1 4 10 3 VOUTPC VBEQ2 R TX I OUTMAX Vcc VCESat I CQ1 5 0.6 4K4 1 10 3 5 1 20 200 10 3 PR TX R TX I 2CQ 0.8w Apartado 2) EPROM: RAM: ICM7170: LCD: 0000H 1FFFH 8000H FFFFH 4000H 4011H 4080H 4083H (Memoria de programa). (Memoria de datos). (Memoria de datos). (Memoria de datos). ADR (0-15) TH1 EA/VP 19 X1 18 X2 9 RESET 12 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 INT0 14 AD0 1 2 3 4 5 6 7 8 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RD WR PSEN ALE/P INT1 39 38 37 36 35 34 33 32 2 3 4 5 6 7 8 9 21 22 23 24 25 26 27 28 11 1 D1 D2 D3 D4 D5 D6 D7 D8 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 19 18 17 16 15 14 13 12 11 12 13 15 16 17 18 19 ADR0/ADR7 C OC 1 27 22 20 74AC573 O0 O1 O2 O3 O4 O5 O6 O7 VPP PGM OE CE MS62256 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 10 9 8 7 6 5 4 3 25 24 21 23 2 22 27 ADR8-ADR15 17 16 29 30 10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 D0 D1 D2 D3 D4 D5 D6 D7 CE OE WE 11 12 13 15 16 17 18 19 20 13 1 ADR8-ADR15 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 2 2764 31 TH2 DEL SENSOR 2 4 6 8 11 13 15 17 3 5 7 9 12 14 16 18 1 P0 P1 P2 P3 P4 P5 P6 P7 P=Q ADR6 8031 19 ADR5 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 ADR 15 ADR7 VCC 1 2 3 6 4 5 A B C G1 G2AN G2BN Y 0N Y 1N Y 2N Y 3N Y 4N Y 5N Y 6N Y 7N 15 14 13 12 11 10 9 7 74138 ICM7170 G CS 1 3 2 1 1 3 INT Int source 3 D0 D7 LCD 6 2 ADR1 2 ADR0-ADR4 74LS688 ADR0 PASO POR CERO DATOS (D0-D7) DATOS (D0-D7) 1 3 2 RD WR Datos (D0-D7) Apartado 3) 3.1. – ADCON0 (xx0x0000) Valor del registro de control del convertidor. (Inicialización) (Rutina) ANL ViAGND =0 v ADCON0,#11010000B ViREF=2.5 v ;Canal 0, conversión simple, ;inicio conversión interna. DAPR=10000000 CONVIERTE: MOV DAPR,#80H JB ADCON0.4,$ ;Test a BSY. MOV DATO,ADDAT ;Guarda el valor convertido. RET 3.2. – Cambios de presión cada 0.1 Kg/cm2 10 cambios. - Posibles valores del A/D: 00 FFh Saltos cada 25.5 - 180º 10 ms 18º (TABLA) ANGULO FFh,F7h (Mínimo ángulo de disparo) DB FCH,18H,F8H,2FH,..... (INICIALIZACION) MOV MOV MOV SETB TMOD,#10H TL1,#F0H TH1,#D8H TR1 (RUTINA DE SERVICIO) MUESTREO: PUSH PSW PUSH ACC ----MOV TL1,#F0H MOV TH1,#D8H LCALL CONVIERTE MOV A,DATO MOV B,#25 DIV AB ;TMOD (0001XXXX) ;D8F0h 10 ms ;Poner en marcha el timer. ;Apilar registros. ;Recarga del temporizador. ;Utiliza la rutina de conversión. ;Divide el dato convertido por ;25 para saber en que rango se ;encuentra y leer el ángulo de ;disparo. ;En A se encuentra el ïndice de la tabla. Hay que multiplicarlo por 2. MOV B,#2 MUL AB ;Para menor presión, menor MOV R0,A ;ángulo de disparo Veff MOV DPTR,#ANGULO ;Se accede a la tabla de ángulos MOVC A,@A+DPTR ;y se toma el valor con el que se MOV CARGA_TH0,A ;recargará el TEMP0 que es el INC R0 ;que se encarga del ángulo de MOV A,R0 ;disparo. MOVC A,@A+DPTR MOV CARGA_TL0,A -----POP ACC POP PSW RETI 3.3 – Reg. de control (1DH) Reg. de interrupción (08H) (INICIALIZACION) ------------------MOV MOV MOVX MOV MOV MOVX MOV MOV -------------------(RUTINA) RELOJ: PUSH PUSH PUSH xx011101 x0001000 DPTR,#4010H A,#08H @DPTR,A DPTR,#4011H A,#1DH @DPTR,A RAML,#FFH RAMH,#7FH PSW ACC DPTR ;Configuración interrupción. ;Configuración Reg. Control. ;Inicializa el puntero a la Ram ;externa. ;Apila registros. MOV MOV INC MOV MOVX MOV MOV LCALL MOV MOV MOV DPL,RAML DPH,RAMH DPTR A,DATO @DPTR,A RAML,DPL RAMH,DPH CONVIERTE_DATO DPTR,#4080H R5,#80H R6,PRIMER_NUMERO ;Actualiza puntero. ;Incrementa una posición. ;Guarda dato convertido en Ram. ;Almacena nuevo puntero. ;Rutina conversión del valor ;del A/D a códigos del LCD. ;Primer_Numero lo devuelve la ;rutina Convierte_Dato. ;Rutina esta en la página 220 del ;libro. ;Código del puntero decimal. LCALL RUTINA MOV R5,#81H MOV R6,#2EH LCALL RUTINA MOV R5,#82H MOV R6,SEGUNDO_NUMERO;Segundo_número lo devuelve LCALL RUTINA ;la rutina Convierte_Dato. ----------------------POP DPTR POP ACC POP PSW RETI Apartado 4) Flujograma del programa: PRESION INICIALIZACION REGISTROS PRIORIDAD INTERRUPCIONES HABILITACION INTERRUPCIONES BUCLE SIN FIN MUESTREO CONVIERTE TENSION DE REFERENCIA APILAR REGISTRO INICIO DE CONVERSION RECARGAR TEMPORIZADORES ¿HA TERMINADO? NO CONVIERTE SI GUARDA DATO RETI CALCULO DEL RANGO (ENTRE LOS 10 POSIBLES) OBTENCION DEL INDICE ACCESO A TABLAS DE ANGULO DE DISPARO ALMACENA DATO DEL NUEVO ANGULO DE DISPARO DESAPILA REG. RETI RELOJ PASO_0 APILA REG. APILA REG. ACTUALIZAR PUNTERO RAM ACTIVA TEMPORIZADOR 0 ALMACENA ULTIMO DATO CONVERTIDO DESAPILA REG. RETI VISUALIZA TEMP_0 DESAPILA REG. RETI IDEM PAG.48 DEL LIBRO RETI