ESCUELA POLITÉCNICA NACIONAL

ESCUELA POLITÉCNICA NACIONAL - ESCUELA DE INGENIERÍA DISEÑO Y CONSTRUCCIÓN DE UN FILTRO DIGITAL BASAD EN EL MICROCONTROLADOR 8052 HBASIC PROYECTO P

3 downloads 61 Views 2MB Size

Recommend Stories


ESCUELA POLITECNICA NACIONAL
ESCUELA POLITECNICA NACIONAL ESCUELA DE INGENIERIA MANTENIMIENTO DE GRUAS PARA PUERTOS MARITIMOS PROYECTO PREVIO A LA OBTENCION DEL TITULO DE INGEN

ESCUELA POLITÉCNICA NACIONAL
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA GUÍA PARA LA PROTECCIÓN CONTRA INCENDIOS DE SUBESTACIONES SEGÚN EL ESTÁN

ESCUELA NACIONAL DE CONTROL
ESCUELA NACIONAL DE CONTROL INFORMACION COMPLEMENTARIA Panel 7: Instrucciones al personal de las entidades públicas para la comprensión de sus respon

ESCUELA POLITÉCNICA NACIONAL
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA “ANÁLISIS DEL IMPACTO TÉCNICO Y ECONÓMICO DE LA IMPLEMENTACIÓN DE TELEVI

ESCUELA POLITÉCNICA NACIONAL
ESCUELA POLITÉCNICA NACIONAL ESCUELA DE FORMACIÓN DE TECNÓLOGOS IMPLEMENTACIÓN EN PROTOTIPO DEL CONTROL DE UNA BANDA TRANSPORTADORA DE COMPRAS UTILI

Story Transcript

ESCUELA POLITÉCNICA NACIONAL -

ESCUELA DE INGENIERÍA

DISEÑO Y CONSTRUCCIÓN DE UN FILTRO DIGITAL BASAD EN EL MICROCONTROLADOR 8052 HBASIC

PROYECTO PREVIO A LA OBTENCIÓN DEL TITULO DE INGENIERO EN ELECTRÓNICA Y CONTROL

MAURICIO ROLANDO MUÑOZ CUEVA

DIRECTOR: ING. NELSON SOTOMAYOR

Quito, Diciembre 2001

DECLARACIÓN

Yo, Mauricio Rolando Muñoz Cueva, declaro bajo juramento que e! trabajo aquí descrito es de mi autoría; que no ha sido previamente presentado para ningún grado o calificación profesional; y, que he consultado las referencias bibliográficas que se incluyen en este documento. A través de la presente declaración cedo mis derechos de propiedad intelectual correspondientes a este trabajo, a ia Escuela Politécnica Nacional, según lo establecido por la Ley de Propiedad Intelectual, por su reglamento y por la normatividad institucional vigente.

Mauricio R. Muñoz C.

CERTIFICACIÓN

Certifico que el presente trabajo fue desarrollado por Mauricio Rolando Muñoz Cueva, bajo mi supervisión.

Ing. Nelson Sotomayor DIRECTOR DE PROYECTO

AGRADECIMIENTOS A Dios por guiarme en este difícil camino, al Ing. Nelson Sotomayor quien me dirigió acertadamente, a los Ingenieros Ramiro Valenzuela y Ricardo Parreño distinguidos miembros de mi tribunal examinador, a mi novia Paty quien siempre me ha ayudado y animado en mis momentos de flaqueza, a mis amigos Edgar y Diego quienes me dieron una mano cuando más lo necesitaba, y a todos aquellos quienes hicieron posible que este proyecto llegue a feliz término.

DEDICATORIA A mis padres y a mi hermano, quienes siempre me han brindado su apoyo incondicional.

CONTENIDO CONTENIDO

i

RESUMEN

jv

PRESENTACIÓN

v

CAPÍTULO 1 FUNDAMENTOS

BÁSICOS

SOBRE

EL

MICROCONTROLADOR

8052 BASIC

1

1.1 El chip 8052 BASIC

1

1.1.1 Distribución de pines

2

1.1.2 Mapa de memoria

5

1.2 Características principales

7

1.3 El lenguaje de programación BASIC-52

12

1.3.1 Modos de operación

13

1.3,2 Sugerencias para escribir programas en BASIC-52

14

1.3.3 Carga y descarga de programas

18

1.3.3.1 Edición de programas BASIC-52

18

1.3.3.2 Carga de programas en el sistema 8052 BASIC

18

1.3.3.3 Descarga de programas en la computadora personal

19

1.3.4 Llamado a rutinas en lenguaje ensamblador desde el BASIC-52

20

1.3.5 Llamado a rutinas BASIC-52 desde lenguaje ensamblador

21

1.4 Configuración mínima recomendada

22

CAPÍTULO 2 DISEÑO

Y CONSTRUCCIÓN

DEL FILTRO

DIGITAL UTILIZANDO

EL

MICROCONTROLADOR 8052 BASIC

24

2.1 Circuito Básico

24

2.1,1 Conexión básica del chip 8052 BASIC

24

2.1.2 Memoria externa

25

2.1.3 Decodificador de direcciones

26

2.1.4lnterfazRS-232

28

2.2 Arranque del sistema

28

2.2.1 Chequeo de memoria RAM disponible

30

2.2.2 Especificación de la frecuencia del cristal

31

2.2.3 Programa de prueba

31

2.2.4 Lectura de un pórtico

32

2.2.5 Escritura a un pórtico

33

2.2.6 Acceso a memoria externa

34

2.3 Memoria no volátil

35

2.3.1 Uso de los comandos de programación

39

2.3.2 Opciones de arranque (Bootup)

41

,

2.3.3 Borrado de memoria no volátil 2.4 Conversor análogo / digital

42 42

2.4.1 Descripción de pines y funcionamiento

44

2.4.2 Conexión al sistema 8052 BASIC

47

2.5 Conversor Digital / análogo

49

2.5.1 Descripción de pines y funcionamiento

52

2.5.2 Conexión al sistema 8052 BASIC

55

2.6 Memoria EEPROM serial

57

2.6.1 Interfaz I2C (Inter-lntegrated Circuit Bus)

59

2.6.2 Conexión al sistema 8052 BASIC

60

2.7 Display LCD

65

2.7.1 Interfaz con el sistema 8052 BASIC

67

2.1 A A Breve descripción del 8255

67

2.7.1.2 Conexión del 8255 al display

70

2.7.2 Inicialización del módulo LCD

70

2.7.3 La interfaz de 4 bits

74

2.7.4 Caracteres personalizados

75

2.8 Teclado matricial

76

2.9 Filtros digitales

82

2.9.1 Filtro digital pasa bajo

84

III

2.9.2 Filtro digital pasa alto

87

2.9.3 Filtro digital P.I.D.

88

2.9.4 Filtro digital P.I.D. de doble lazo

91

CAPÍTULO 3 PRUEBAS Y RESULTADOS

92

3.1 Pruebas con el filtro pasa bajo

95

3.2 Pruebas con el filtro pasa alto

98

3.3 Pruebas con el filtro P.I.D.

99

3.4 Pruebas con el filtro P.I.D de doble lazo

101

CAPÍTULO 4 CONCLUSIONES Y RECOMENDACIONES

102

REFERENCIAS BIBLIOGRÁFICAS

104

ANEXOS

105

RESUMEN El término "Filtro Digital" hace referencia al procesamiento computacional o algoritmo mediante el cual una señal digital o una secuencia de valores numéricos que actúan como "entrada" es transformada en una segunda secuencia de valores numéricos denominada "señal digital de salida". Los filtros digitales operan sobre

señales discretas

que se obtienen

por muestreo en el

tiempo,

seleccionando para el efecto una frecuencia de muestreo apropiada a través de un conversor A/D. La señal digital de salida puede, en caso de requerirlo, volver a ser convertida en una señal analógica mediante la utilización de un conversor D/A. El presente proyecto intenta ser un aporte en la divulgación y demostración de la facilidad de implementar filtros digitales utilizando el lenguaje BASIC incorporado en un microcontrolador para que los estudiantes y el público en general estén más al tanto de estas posibilidades de desarrollo de aplicaciones con microcontrolador. El objetivo general del presente es desarrollar una tarjeta digital, que al ser programada desde un computador personal, pueda desempeñar el rol de un filtro digital. Para conseguir este objetivo en primer lugar se hará un estudio básico del microcontrolador 8052 BASIC, sus posibilidades de programación y el hardware necesario para ponerlo en funcionamiento. Con este conocimiento será posible entender las estrategias de diseño utilizadas para obtener el prototipo.

Con la información recopilada se diseñó y construyó una tarjeta digital de bajo costo que permitirá explicar el principio de funcionamiento de los filtros digitales y que,

como

se

demostrará

al

final

del

adecuadamente para rangos bajos de frecuencia.

presente

trabajo,

responderá

PRESENTACIÓN En los sistemas de control en ocasiones se plantea la necesidad de realizar un filtrado previo de las señales con las cuales se pretende controlar un evento. Para que el sistema pueda ejecutarse de forma autónoma es necesario que el tipo de filtro implementado utilice un microcontrolador dedicado para el efecto. Se escogió el microcontrolador 8052 BASIC debido a la facilidad de programación que permite el lenguaje BASIC-52. El presente proyecto pretendió demostrar la factibilidad de filtrar señales de control utilizando este microcontrolador, para lo cual se diseñó y construyó un prototipo que permitió probar diferentes tipos de filtros Los resultados mostraron que el filtrado funcionó adecuadamente solo para señales de muy baja frecuencia, sin embargo, las señales que se utilizan para controlar temperatura, nivel, humedad, etc no varían, por lo general,

muy

rápidamente. La parte escrita se estructuró de la siguiente manera: En

el

capítulo primero se

microcontrolador

8052 BASIC,

trata

sobre

en el cual

los fundamentos se exponen

las

básicos

del

principales

características del lenguaje de programación BASIC-52 así como el hardware asociado. El capítulo segundo presenta el diseño del hardware y el desarrollo del software que hace posible el funcionamiento de los diferentes tipos de filtros digitales implementados, así como los criterios con los cuales se realizaron. Las pruebas realizadas con el prototipo así como los resultados obtenidos se analizan en el capitulo tercero.

VI

Finalmente el capítulo cuarto contiene las conclusiones que se desprendieron de la realización de este proyecto. Es uno de los anhelos del autor, que el presente proyecto sea un aporte para todos aquellos cuyo interés esté centrado en los microcontroladores y sus diversas aplicaciones así como la posible implementación para su uso en prácticas de laboratorio.

CAPÍTULO 1. FUNDAMENTOS BÁSICOS SOBRE EL MICROCONTROLADOR 8052 BASIC 1.1 EL CHIP 8052 BASIC El 8052 BASIC es un microcontrolador Intel 8052 con el lenguaje de programación BASIC-52 en la memoria ROM interna del chip.

La tabla 1.1 resume las diferencias entre los chips de la familia 8051. El 8052 es un 8051 ampliado, con un timer extra y memorias RAM y ROM adicional. Tabla 1.1 Diferencias entre chips de la familia 8051 Chip Memoria de programa

Ram

Timers

(Bytes)

Tipo

Kilobytes

8051

ROM

4

128

2

8052

ROM

8

256

3

8031

ninguna

-

128

2

8032

ninguna

-

256

3

8751

EPROM

4

128

2

8752

EPROM

8

256

3

El chip 8052 BASIC se encuentra disponible en versiones CMOS y NMOS. El chip utilizado en este proyecto es un chip NMOS distribuido directamente por Intel (el término de Intel para su proceso NMOS es HMOS). La versión CMOS, la 80C52 BASIC, tiene una potencia de consumo máxima de 30 miliamperios, comparada con los 175 miliamperios para la versión NMOS 8052 BASIC.

1.1.1 DISTRIBUCIÓN DE FINES

El interprete BAS1C-52 asigna funciones alternas a algunos pines del pórtico 1 y pórtico 3, algunas de estas funciones son de uso obligado mientras que otras son opcionales. Si no se usa una función alterna se puede usar el bit para cualquier aplicación.

La figura 1.1 muestra la distribución de pines del microcontrolador 8052 BASIC y la tabla 1.2 describe los pines con funciones específicas para el interprete BASIC-52.

FUNCIONES BASIC-52 PWM AL£ PGM PGM DMA LPT

QUT DIS PLS EN ACK QUT

SER IN SER OUT CMA REO

,— T2/PI -0C ( E Xi/Pl . I C T2 Pl . 2 C Pl . 3 C PI . 4 C Pl . 5 C Pl . 6 C Pi . 7 E RESETC

RXD/P3.0C TXEVP3, 1 C 1NT&/P3.2C INTI/P3.3C T0/P3.4C T1/P3.SC WR/P3.6C TTD/P3.7C XTAL2C XTAL1 C

vssc

I

40

2 3

39 3 P0.0/AD0 38 : pa. i/AOi 37 3 P 0 . 2 / A D 2 36 3 P 0 . 3 / A D 3 35 D P 0 . 4 / A D 4 34 D P 0 , 5 / A D 5 33 D P0.5/AD6

A

5 6 7 6 9

nvcc

32 3 P 0 . 7 / A D 7 31 DEA

10

30 3 A L E 29 D P S E N 28 3 P 2 . 7 / A I 5 27 D P 2 . 6 / A 1 4

11

12 13 14

18

26 D P 2 . 5 / A 1 3 25 3 P 2 . 4 / A 1 2 24 ^ P 2 . 3 / A 1 1 23 3 P 2 . 2 / A 1 0

19 2®

22 3 P Z . 1/A9 21 D P 2 . 0 / A 8

15 16

17

-

fl DATOS/PROG. COMBINADOS

FFFFH

EXPANSIÓN

t

I/O

t

HO ASIGNADO

C000H BFFFH

NO ASIGNADO

E000H DFFFH

PROGRAMA NO ASIGNADO

C000H

t

MEMORIA NO VOLÁTIL { OPCIONAL)

T

MEMORIA NO VOLÁTIL

A000H 9FFFH 8000H 7FFFH

t

RAM ( OPCIONAL)

6000H 5FFFH

t

RAM ( OPCIONAL)

3FFFH

RAM ( OPCIONAL)

4000H

t t 0000H

t

NO ASIGNADO

6000H 5FFFH

t

NO ASIGNADO

t

NO ASIGNADO

4000H 3FFFH MEMORIA INTERNA

2000H

2000H IFFFH DATOS

\A

7FFFH

]FFFH RAM

T

0000H

Figura 1.2 Mapa de Memoria Externa

ROM

(BASIC-52)

Cada área dentro de los 64 kilobytes de memoria externa consiste en bloques de 8 kilobytes es decir, 8192 en decimal o 2000 en hexadecimal. La memoria de programa interna (ROM del 8052 BASIC), usa las direcciones de OalFFFh. Se requiere además una memoria de datos externa que empiece en la dirección 0. El BASIC-52 reserva los primeros 512 bytes para su propio uso y almacena el programa BASIC-52 del usuario inmediatamente encima de esta área. El mapa de memoria permite seleccionar entre usar una memoria RAM de 8 Kilobytes desde O a 1 FFFh o una memoria RAM de 32 Kilobytes, la cual usa el área completa de O a 7FFFh. El 8052 tiene además 256 bytes de memoria RAM interna. Se reservan dos bloques de 8 Kilobytes para memoria combinada de datos / programa que empiezan en la localidad SOOOh. Los comandos de programación del BASIC-52 almacenan programas en la memoria no volátil que empieza en esta dirección. Para circuitos de entrada, salida o entrada / salida, el mapa de memoria reserva el bloque superior de memoria de datos, desde EOOOh hasta FFFFh. Las interfaces de entrada / salida incluyen conexiones a buffers, latchs, interruptores, displays, motores o memoria adicional. Los circuitos de entrada / salida no necesariamente tienen que usar este bloque, pero el BASIC-52 sugiere hacerlo, puesto que durante el arranque limpia la memoria externa solo hasta EOOOh (a menos que se especifique un valor menor por medio del comando MTOP). Cuando se personaliza el BASIC-52 añadiendo instrucciones propias, comandos o rutinas de RESET, el programa interprete espera encontrar parámetros relacionados con éstos en la memoria de programa de 2001 h a 2090h. Y si se quiere llamar a rutinas de interrupción en lenguaje ensamblador, el BASIC-52 espera encontrar vectores para éstas en la memoria de programa de 4003h a 41FFh.(Figura 1.3)

\a

5FFFh

externa

41 FFh

Rutinas de interrupción del usuario en ensamblador 4003h 4000h SFFFh

de programa 2090h

Instrucciones creadas por el usuario 2001 h 2000h

Figura 1.3 Memoria externa para ampliación del usuario 1.2 CARACTERÍSTICAS PRINCIPALES Las características más representativas del microcontrolador 8052 BASIC son las siguientes: - Interprete BASIC completo incorporado en su ROM interna. En el chip 8052 BASIC, la memoria ROM contiene el programa interprete BASIC-52 que se ejecuta en el arranque. Tiene 256 bytes de memoria RAM pero el interprete usa parte de este espacio para sus operaciones de modo que quedan alrededor de 178 bytes (desde 4Dh hasta FFh) que se comparten entre el espacio para la pila y el espacio de trabajo disponible para el usuario. El detalle de uso de la memoria interna del chip por parte del programa interprete se puede encontrar en la referencia [1].

8

Un nivel lógico alto en RESET reinicia el chip y provoca la ejecución del programa que comienza en la

localidad O de la memoria de programa. En el chip

8052 BASIC, este programa es el interprete BASIC-52. El pin EA se encuentra siempre cableado a un nivel lógico alto de forma que el chip ejecuta el interprete BASIC que se encuentra en la memoria ROM interna en el arranque.

- El 8052 BASIC funciona con una mínima cantidad de hardware. La configuración física básica que se requiere para aprovechar las principales características del interprete consta solamente de un latch, 1 Kilobyte de RAM externa y los manejadores del pórtico serial. - Capacidad de programación de memorias EPROM y EEPROM.

Incluyendo pocos elementos en el circuito básico, el BASIC-52 dispone de dos algoritmos de programación distintos que generan todos los pulsos necesarios para grabar los programas de aplicación del usuario en cualquier memoria EPROM y EEPROM estándar: Programación de 50 milisegundos

Este algoritmo es un procedimiento antiguo y lento. Para programar una localidad en una memoria EPROM , se aplica un voltaje de programación a la entrada Vpp, se configura las líneas de datos y dirección con los valores deseados y se aplica un pulso de programación de 50 milisegundos a la entrada PGM de la memoria para escribir ios datos en la EPROM en las direcciones seleccionadas. Luego se incrementa la dirección, se aplican los nuevos datos y el pulso de programación y se continua de esta forma hasta que todas las localidades son programadas. Después de la programación se compara el contenido de la EPROM con los datos de programación para verificar que todas las localidades se hayan programado correctamente. Sin embargo, el interprete BASIC-52 verifica cada localidad inmediatamente después de programarla.

Este algoritmo se recomienda para EPROMs antiguas de baja capacidad como la 2716 de 2 kilobytes, la 2732 de 4 kilobytes y algunas 2764 de 8 kilobytes. Estas memorias requieren típicamente un voltaje de programación de 21 a 25 voltios en la entrada Vpp de la EPROM. Programación inteligente Este algoritmo usa pulsos de programación mucho mas pequeños y verifica después de cada intento. Después de cada pulso de programación de 1 milisegundo, lee la localidad de la EPROM para ver si la programación fue exitosa. Caso contrario, prueba otra vez, hasta 25 veces. Cuando la localidad se verifica, aplica un pulso final igual a tres veces la cantidad total de pulsos de programación ya aplicados. Por ejemplo, si toma 5 intentos para verificar, se debería aplicar un pulso final de 15 milisegundos. Finalmente, cuando todas las localidades se han programado, se verifica cada localidad una vez mas. Para la programación inteligente, Vpp es típicamente +12.5 voltios y Vcc se lleva de +5 a +6 voltios durante la programación. La programación inteligente es un algoritmo recomendado para la mayoría de las EPROMs de 8 kilobytes. - Los programas pueden residir en RAM, NVRAM, EPROM o EEPROM. A diferencia de muchos interpretes BASIC, el BASIC-52 permite que varios programas de usuario distintos residan en RAM, NVRAM, EPROM o EEPROM con

la

facilidad

de

poder

ejecutar

cualquiera

de

ellos

separada

e

independientemente, aunque por supuesto, no al mismo tiempo. Además pueden grabarse en NVRAM / EPROM / EEPROM hasta 255 programas distintos que pueden ser transferidos a RAM para fines de edición.

10

- Conjunto completo de comandos, sentencias y operadores. El BASIC-52 contiene, además de los comandos y funciones BASIC normales, un gran repertorio de características únicas que permiten al usuario realizar tareas que regularmente requieren de lenguaje ensamblador como son lo operadores lógicos de ancho de bit o byte AND, OR y XOR; también se dispone de aritmética hexadecimal. - Aritmética de punto flotante y BCD. Todas las operaciones y funciones matemáticas que se ejecutan, manejan los números en punto flotante y en formato Binario Codificado a Decimal (BCD). Además el BASIC-52 permite una conversión directa entre sistemas de numeración decimal y hexadecimal. -

Las rutinas aritméticas

y utilitarias

pueden

llamarse desde

lenguaje

ensamblador. El BASIC-52 contiene una biblioteca completa de funciones que pueden ser accedidas fácilmente con lenguaje ensamblador, usando 2 o 3 instrucciones. Entre ellas constan todas las rutinas de punto flotante, de entrada / salida y de conversión de sistemas de numeración. - Las interrupciones pueden manejarse en lenguaje BASIC o ensamblador. Dentro de la construcción de un programa en BASIC-52, existe la posibilidad de atender interrupciones externas y de tiempo, mientras que con rutinas en lenguaje ensamblador puede manejarse todo tipo de interrupciones. El BASIC-52 usa INTO para la función opcional de acceso directo a memoria (DMA) de forma que queda disponible INT1 para los programas del usuario.

11 - Reloj en tiempo real de precisión. El BASIC-52 asigna funciones opcionales a cada uno de los timers del 8052. El timer O controla un reloj en tiempo real que se incrementa cada 5 miiisegundos. Se puede usar este reloj para temporizar eventos que ocurren a intervalos regulares, o como base para funciones de reloj o calendario. El timer 1 tiene varios usos en el chip 8052 BASIC, que incluyen el control de una salida PWM, escritura a una impresora serial u otros periféricos seriales y generación de pulsos para programación de memorias EPROM, EEPROM o NVRAM (PGM PULSE) .

El timer 2 genera una base de tiempo (baud rate) para la comunicación serial en los pines SER IN y SER OUT. Si no se usan estas funciones opcionales de los timers, se los puede utilizar para otras aplicaciones. - Programas autoejecutables. Existe la posibilidad de hacer autoejecutable al primer programa BASIC de usuario almacenado en memoria no volátil externa, esta característica hace que dicho programa se ejecute automáticamente luego de un reset o un encendido del sistema. Esto permite correr un programa BASIC sin necesidad de que esté conectado al enlace serial con la PC. - Comunicación serial automática El puerto serial del 8052 automáticamente se preocupa de muchos de los detalles de la comunicación serial. En el lado de la transmisión, el puerto serial transforma los bytes para enviarlos en datos seriales, incluyendo la adición de los bits de arranque y parada y escribiendo los datos en secuencia temporizada en

12

SER OUT. En el lado de la recepción, el puerto serial recibe datos en SER IN y activa una bandera para indicar que se ha recibido un byte. El BASIC-52 usa el puerto serial para comunicarse con la computadora anfitriona. - Velocidad de ejecución de los programas BASIC La ejecución del programa puede ser lenta, comparada con los programas que corren en las computadoras personales o los programas escritos en lenguaje ensamblador. Una línea de programa típica en BASIC-52 demora varios milisegundos en ejecutarse. Debido a esto, existen algunas actividades que el BASIC-52 no puede manejar, por ejemplo: detectar y responder a una interrupción en unos pocos microsegundos. Pero para la mayoría de actividades de control y monitoreo el BASIC-52 responde adecuadamente. Y, si es necesario, se puede llamar a una rutina en lenguaje ensamblador para una porción de programa donde la velocidad es crítica.

1.3 EL LENGUAJE DE PROGRAMACIÓN BASIC-52 El BASIC-52 es un lenguaje intérprete de modo que los programas no requieren un paso adicional de ensamblado o compilación. Se puede correr los programas o ejecutar comandos inmediatamente después de escribirlos. Los programas BASIC-52 se almacenan en la memoria de datos, no en la memoria de programa como se podría pensar. Esto se debe a que el 8052 no ejecuta los programas BASIC directamente. En vez de eso, el programa interprete BASIC-52 lee los programas BASIC como datos y los convierte a código de máquina para su ejecución por el 8052. Un programa consiste de una serie de líneas escritas en BASIC-52 cada una iniciando con un número de línea. Son válidos números de línea entre O y 65535 inclusive. No es necesario introducir las líneas de programa en orden numérico ya que el BASIC las ordenará automáticamente en forma ascendente.

13

Una línea de programa puede contener hasta 79 caracteres. Al escribir una línea de programa pueden o no incluirse espacios en blanco entre los elementos de la sentencia, pues el BASIC los ignora e introduce dichos espacios cuando se hace un listado. Pueden ponerse tantas sentencias en una línea como su dimensión lo permita, pero deben separarse con dos puntos(:). El rango de números que pueden representarse en BASIC-52 es : ±1E-127 a +0.99999999E+127 con una precisión de 8 dígitos significativos. Los cálculos en punto flotante producen errores cuando los números son muy grandes o muy pequeños. Los números pueden ser introducidos y mostrados en 4 formatos: entero, decimal, hexadecimal y exponencial. Los números hexadecimales de la A a la F deben empezar con O y todos los números hexadecimales deben terminar en H. 1.3.1 MODOS DE OPERACIÓN El BASIC-52 tiene dos modos de operación: comando y ejecución. El modo de comandos se refiere a cualquier sentencia que se escriba sin un número de línea. El BASIC-52 ejecuta estas líneas inmediatamente después de presionar ENTER. Se ingresa al modo de ejecución cuando se ejecuta programas previamente almacenados utilizando el comando RUN. El BASIC-52 incluye algunas sentencias que pueden usarse solo en el modo de comando, pero no en los programas. Un ejemplo es PROG. La mayoría de sentencias BASIC-52 se pueden usar tanto en modo de comandos como de

14

ejecución. Y unas pocas, como las estructuras de programación (DO...WHILE, etc.) se pueden usar solo en modo de ejecución. El conjunto completo de las instrucciones BASIC-52 agrupadas en orden alfabético se muestran en el anexo A y para mayor detalle revisar la referencia [1]. 1.3.2 SUGERENCIAS PARA ESCRIBIR PROGRAMAS EN BASIC-52 - Número de líneas de programa por 10. Cada línea en BASIC-52 debe empezar con un número de línea. El BASIC-52 usa los números para ordenar las sentencias. Tradicionalmente, los programas BASIC empiezan con la línea 10 y aumentan en múltiplos de 10. De esta manera si posteriormente se necesita añadir algunas líneas intermedias se lo puede hacer, usando los números de línea disponibles. - Dividir los programas grandes en módulos Es aconsejable dividir los grandes proyectos y usar subrutinas para funciones independientes. Una subrutina es un bloque de sentencias a las que el programa principal salta con una instrucción GOSUB. Al final de la subrutina, una instrucción RETURN provoca que el programa principal regrese a la línea siguiente de la instrucción GOSUB. Las subrutinas tienen 2 ventajas. Primero, ayudan a dividir el código del programa en unidades discretas, cada una con un propósito específico. Esto hace que el código de programa sea mas fácil de depurar y de entender en general. Segundo, las subrutinas hacen mas fácil reutilizar el código si se tiene una tarea similar en otro proyecto.

15

- Mantener cortas las líneas de programa Las líneas cortas son más fáciles de editar con el editor de línea del BASIC-52 , el cual requiere que se reescriba la línea entera para hacer un cambio. Si se cargan programas desde el disco duro, líneas cortas pueden eliminar los problemas debidos a que el BASIC-52 no tiene tiempo suficiente para procesar cada línea antes de que la siguiente llegue. Aunque el BASIC-52 permite colocar varias instrucciones en una línea, con hasta 79 caracteres por línea, mientras más cortas sean es mejor. Existen dos situaciones en las que se podría querer combinar una serie de líneas cortas en unas pocas líneas grandes de programa: cuando el programa tiene que ejecutarse lo mas rápido posible o cuando se necesita almacenar el programa en el espacio mas pequeño posible. Aunque es preferible, desarrollar el programa con líneas cortas y combinarlas solo después de que el programa haya sido depurado y se encuentre listo para almacenamiento permanente. - Chequear ortografía y sintaxis cuidadosamente. La sintaxis del BASIC-52 consiste de reglas de gramática y puntuación que las líneas de programa deben seguir Por ejemplo, un lazo FOR debe incluir una variable, limites, y una instrucción NEXT. Si se olvida cualquiera de estas sentencias el lazo no funcionará. No se admiten errores de escritura. - Documentar los programas Aunque muchas de las instrucciones del BASIC-52 no son difíciles de descifrar, los comentarios que se agreguen a través del programa pueden ayudar a recordar por que se escribió cada línea de programa y que es lo que se supone deben realizar.

16

El BASIC-52 permite añadir comentarios, precedidos por la sentencia REM (remark). Los comentarios deben hacer más que definir las instrucciones en una línea, deben explicar e! propósito por el que se utilizaron. La desventaja de añadir comentarios a los programas BASIC-52 es que hacen más lenta la ejecución del programa. También hacen a los programas más largos de modo que se necesita más memoria. Por eso se debe tratar de minimizar los comentarios en la versión final que se almacene en la memoria no volátil. Se puede, sin embargo, almacenar copias totalmente documentadas de los programas en el disco duro. Si se desea, se puede usar el editor de texto de la computadora personal para añadir comentarios en líneas no numeradas. Luego, cuando se carguen los programas en el sistema BASIC-52, todas las líneas se mostraran en el monitor pero el BASIC-52 almacenará solamente las líneas numeradas descartando los comentarios no numerados. - Usar nombres cortos de variables para una mayor velocidad de ejecución El BASIC-52 permite nombres de variables de hasta 8 caracteres. Los programas con nombres de variables más cortas se ejecutarán más rápido y requerirán menos memoria para almacenarse. Incluso si se limita los nombres de variables a 1 o 2 caracteres todavía se tendría cientos de opciones de donde elegir. Los nombres largos de variables tienen la ventaja de ser mas significativos lo que hace mas fácil adivinar su significado sin añadir comentarios, por ese motivo algunas veces se podría elegir nombres largos para las variables. Asegurarse

que

los

nombres

de

las

variables

no

contengan

instrucciones (keywords) No se puede elegir nombres de variables que contengan palabras claves del BASIC-52. Por ejemplo LISTA ya contiene la instrucción LIST en su interior. El BASiC-52 identifica una variable solo por sus primeros y últimos caracteres

17

además de por su longitud. Por tanto, considera a MÁXIMO y MÍNIMO como la misma variable, mientras que MAX y MIN son diferentes. - Evitar nombres de variables que empiecen o terminen con F. La versión 1.1 del interprete BASIC-52 tiene un par de errores de programación relacionados con nombres de variables que empiecen o terminen con F. Específicamente, cuando la F es el último carácter en un nombre de variable, seguido por un espacio, el BASIC-52 por error retira la F del nombre de variable. Y si se decide llamar a una variable FP, FPR o FPRO y a continuación del nombre un espacio, el BASIC-52 retirara la F del nombre. De modo que para evitar problemas debido a estos errores se deben evitar variables que empiecen o terminen con F. - Precauciones con rutinas en lenguaje ensamblador Como se indicó en el numeral 1.1.2 y la figura 1.3 se debe tener precauciones al escribir en las localidades de memoria externa de programa 2001 h a 2090h y 4003ha41FFh. Específicamente, si la localidad 2002H contiene el número 5AH y el bit 5 de la localidad 2048H está activado, el BASIC-52 tratara de llamar a una tabla de códigos definidos por el usuario. Si la localidad 2001H contiene el número OAAH, el BASIC-52 tratará de llamar a una rutina de RESET definida por el usuario en la localidad 2090H. Si la tabla o la rutina esperadas no se encuentran, el sistema se detendrá. La solución es evitar escribir en la memoria de programa en las localidades 2001 H, 2002H y 2048H.

18

1.3.3 CARGA Y DESCARGA DE PROGRAMAS 1.3.3.1 Edición de programas BASIC-52 Puesto que los programas desarrollados en BASIC-52 se almacenan en forma de texto ASCII, se pueden escribir o editar con cualquier editor de texto y luego cargarlos cuando se necesiten en el sistema BASIC-52. Se puede utilizar como programa de edición el bloc de notas (Notepad) que viene incorporado en Microsoft Windows. Es aconsejable seguir las sugerencias de escritura que se revisaron en la sección anterior. 1.3.3.2 Carga de programas en el sistema 8052 BASIC Para poder cargar un programa escrito previamente en el editor de texto al BASIC-52, el sistema debe estar conectado a una computadora personal. La transferencia se realiza por medio de un programa emulador de terminal tal como el Hypertermina! incorporado en Microsoft Windows. Cuando se va a cargar un programa en el sistema 8052 BASIC, hay que asegurarse que el BASIC-52 tenga tiempo suficiente para procesar cada línea antes que la siguiente llegue. Si no hay tiempo suficiente se perderán caracteres o líneas en los programas cargados. Existen varias maneras de asegurarse que las cargas de programas sean completas. La mayoría de programas de comunicaciones permiten añadir retardos después de cada carácter o línea transmitida. Se puede experimentar con diferentes valores hasta encontrar el retardo mas pequeño que permita confiabilidad en la carga de programas. Si se mantienen cortas a las líneas de programa, los retardos entre líneas pueden ser más cortos.

19

Si estas opciones no están disponibles, hay que tratar con una velocidad de transmisión menor (1200 baudios o menos), lo cual da al BASIC-52 más tiempo para procesar cada línea antes que la próxima llegue.

1.3.3.3 Descarga de programas en la computadora personal (Host) Para descargar un programa BASIC-52 desde la memoria RAM del sistema 8052 BASIC al disco duro de Ea computadora personal, se debe (al igual que para la carga de programas) establecer una comunicación serial con la misma utilizando el programa Hyperterminal.

Se puede visualizar el programa actual de la memoria RAM escribiendo el comando LIST en el Hyperterminal, a continuación se lo configura para recibir una archivo de texto ASCII. Cuando el programa lo solicite, se debe especificar un nombre de archivo.

Se presiona ENTER para empezar la descarga. Cuando se observa el prompt READY en el Hyperterminal la transferencia ha finalizado. Se debe obtener ahora un archivo en el disco que contiene un programa como el que se listó al inicio. Se puede comprobar la descarga, borrando el programa en la memoria RAM del sistema 8052 BASIC y luego cargando el programa nuevamente en la RAM.

Para hacer esto, primero se escribe NEW para borrar el programa. Para restaurar el programa cargándolo desde el disco duro, se configura el software de comunicaciones para cargar o enviar un archivo ASCII y luego se ingresa el nombre del archivo previamente descargado. Conforme el archivo se carga, se verá cada una de las líneas del programa en la pantalla. Con el comando LIST se muestra el programa cargado y se escribe RUN para ejecutarlo. Con los programas BASIC-52 en el disco, se puede usar cualquier editor de texto para visualizar o modificar el programa. Se debe guardar siempre los programas como texto ASCII, sin comandos de formato adicionales. Se puede también usar

20

el editor de texto para crear un programa desde el inicio, luego cargarlo en el sistema 8052 BASIC, en vez de escribir cada una de las líneas del programa usando el editor de líneas del BASIC-52. 1.3.4 LLAMADO A RUTINAS EN LENGUAJE ENSAMBLADOR DESDE EL BASIC-52 Una línea de un programa en BASIC-52 puede tardar muchos milisegundos para ejecutarse. Los programas en BASIC-52 son lentos por dos razones. Una es que el interprete debe traducir cada línea de código cada vez que se ejecuta. Con el lenguaje ensamblador, en cambio, se traduce el programa una sola vez y el 8052 luego lee y ejecuta el código binario directamente de la memoria. La otra razón para la lentitud de los programas del BASIC-52 es que la traducción del programa interprete no resulta en el código más eficiente. Programar directamente en lenguaje ensamblador da mayor control sobre el código final que el 8052 ejecutará. Entonces para acelerar la ejecución de los programas se debe usar el lenguaje ensamblador. Esto no significa que haya que dejar el BASIC-52 completamente. Se puede continuar su uso para las partes de los programas que no son críticos en el tiempo y llamar a rutinas en lenguaje ensamblador para aquellas partes que deben ser rápidas. La rutina del ejemplo tiene como función conmutar el pin 1 (pórtico 1, bit 0) del 8052. Una directiva ORG le indica al programa ensamblador la dirección de RAM extema en la cual se empezará a cargar la rutina. org

SOOOh

; dirección de almacenamiento de la rutina en RAM

cpl

pl.O

; complementar bit O del pórtico 1

ret

end

; retorno al BASIC-52

21

La rutina se puede crear y ensamblar utilizando el programa Microlab. El archivo HEX obtenido se puede cargar en memoria por medio de unas rutinas utilitarias desarrolladas

por

la

empresa Sysíronix denominadas HEX2RAM.BAS y

HEXLOAD.BAS [2] utilizando el mismo procedimiento que para cargar cualquier programa BASIC-52. Si el archivo HEX se cargo en forma exitosa, se puede escribir instrucciones en BASIC-52 para ejecutarlo:

10CALL3000h 20END

La línea 10 llama a la subrutina almacenada en la dirección SOOOh de memoria RAM externa. Una vez que el programa en lenguaje ensamblador se ejecuta, la instrucción ret regresa el control al programa principal BASIC-52 en la línea 20 en donde finaliza . Se puede cargar rutinas en ensamblador en cualquier dirección de memoria RAM externa sobre 1FFF o en memoria no volátil a partir de SOOOh. La memoria de programa desde O a 1FFFh no está disponible porque el chip 8052 BASIC usa estas localidades para el intérprete BASIC-52. 1.3.5 LLAMADO A RUTINAS BASIC-52 DESDE LENGUAJE ENSAMBLADOR Es importante conocer los siguiente: El BASIC-52 usa los bancos de registros O, 1 y 2 (RBO, RB1 y RB2). El banco de registros 3 (RB3) nunca se usa, excepto durante la ejecución de las sentencias PROG O FPROG (para programación de memorias), razón por la que se lo designa como el "banco de registros del usuario". El BASIC-52 usa el banco de registros O (RBO) como el "archivo de registros de trabajo" que debe ser seleccionado siempre que se use lenguaje ensamblador

22

para acceder a rutinas BASIC-52. Cuando se llama a un programa en lenguaje ensamblador con la instrucción CALL de BASIC-52, RBO es seleccionado automáticamente. Así, a menos que el usuario seleccione el registro RB3 en ensamblador, no es necesario cambiar el banco de registros designado. El proceso para acceder a rutinas BASIC desde lenguaje ensamblador es muy sencillo: - Asegurarse que ha sido seleccionado el "archivo de registros de trabajo" RBO. - Cargar en el acumulador (ACC) el código de la operación a realizar en BASIC-52, denominado "OPBYTE". - Llamar a la localidad 48 (30H). La forma generalizada para acceder a rutinas BASIC-52 es la siguiente: ANL

PSW, #11100111B

' asegura que se ha seleccionado RBO.

MOV A, #OPBYTE

'carga la instrucción.

CALL 30H

'ejecuta la instrucción.

El BASIC-52 contiene una biblioteca completa de rutinas (OPBYTE) que pueden ser accedidas fácilmente con instrucciones CALL del lenguaje ensamblador. Para mayor información se recomienda revisar la referencia [1].

1.4 CONFIGURACIÓN MÍNIMA RECOMENDADA La configuración física básica que el microcontrolador 8052 BASIC requiere para poder funcionar consta de: - Por lo menos 1 Kilobyte de RAM externa El interprete BASIC-52 reserva las primeras 511 localidades de RAM externa para su uso particular, específicamente para implementar dos stacks (pilas) de software: la pila de control y la pila aritmética o de argumento.

23

La pila de control ocupa 159 bytes para almacenar toda la información asociada con lazos de control generados con las sentencias BASIC: DO-WHILE, DO-UNTIL y FOR-NEXT y subrutinas BASIC: sentencia GOSUB. La pila de argumento ocupa 210 bytes para almacenar todas las constantes que el BASIC-52 esté usando al momento. Las operaciones matemáticas como suma, resta, multiplicación y división tienen los operandos y entregan ei resultado en esta memoria. Cada número flotante colocado en la pila de argumento requiere de 6 bytes. - Interfaz serial RS-232 que permita la comunicación con la computadora. - Un software emulador de terminal Como mínimo el software emulador de terminal debe permitir lo siguiente: fijar la velocidad de transmisión en baudios (baud rate) y otros parámetros de comunicación, transmitir serialmente los caracteres que se presionen en el teclado y mostrar los caracteres que se reciben en el puerto serial. También es muy útil, pero no esencial, la posibilidad de cargar y descargar archivos de texto desde el disco duro a través del enlace serial. Un ejemplo de software que cumple con estas condiciones es el programa Hyperterminal que se usó para el desarrollo de este proyecto. En el siguiente capítulo se detalla el diseño del hardware adicional que permite al microcontrolador 8052 BASIC desempeñar la función de filtro digital.

24

CAPITULO 2.

2.1 CIRCUITO BÁSICO El circuito básico con el que se puede empezar a trabajar con el microcontrolador 8052 BASIC consta de: -

Un chip 8052 BASIC

-

Un latch de direcciones

-

Un decodificador de direcciones

-

Una memoria RAM estática

-

Una interfaz RS-232

-

Un circuito de RESET

2.1.1 CONEXIÓN BÁSICA DEL CHIP 8052 BASIC En este proyecto se utiliza un microcontrolador NMOS 8052 BASIC debido a que facilita la manipulación del chip y no se tienen restricciones respecto al consumo de corriente. Contiene en su memoria ROM interna la versión 1.1 del programa intérprete BASIC-52. El pin EA (Extemal Access) del microcontrolador se conecta a +5V lo que causa que se ejecute el intérprete durante el arranque. El cristal utilizado tiene una frecuencia de 12 MHz, que es el valor máximo con el que puede trabajar este chip. Debido a que el BASIC-52 asume un valor por defecto de 11.0592 MHz para el cálculo del baud rate involucrado en la comunicación serial así como de los tiempos de los algoritmos de programación de las memorias, es necesario especificar el valor real del cristal utilizado por

25

medio del comando XTAL para que el microcontrolador pueda ajustar las bases de tiempo acorde con esta frecuencia.

r

8052-BASIC 1 2 i P1.I/T2EX

ilf

39 OC 38 01 ADt V* IW

v

— \» FI$ —-

Pl.4/I6rt PIS

ACM

Pt.ft/OHA ACK P1.7/LPT

AOC A07

__1

z>

DI INPJ4

*——51

RESET

"~ 1-^ ^

k**"^ 74LS14

vi

10 SER lH-rr *co ntiT 'L *t« oui .-

« i/sxo

^A ALE

*H

f\\v

35

M_

53

06

l/J

fr^p 29

l_¿

!_ i IftuF

11 • ** 14

r

!s

P"í 1/1 UT r -J . J rin i l1

P3 5/TJ

-RFAO 1? n c fí \f -~*^"-'

f



CRISTAL \ ' —i 1¿ HHz i

n



...

2» 3? 26 Al 3 75 74 23 2Í 71 Al11 !3 f*

Al) AÍ4 At3 AI 2 AJÍ Al» Aft AB

• •• i

MICROCON 1 ROLADOR

cz

Figura 2.1 8052 BASIC con RESET El circuito de RESET utiliza una compuerta inversora Schmitt-trigger, que asegura un pulso de reinicio adecuado. 2.1.2 MEMORIA EXTERNA

Si bien el microcontrolador necesita ai menos de 1 Kilobyte de memoria RAM estática para arrancar, en este proyecto se usa una memoria RAM de 32 Kilobytes debido a la extensión del programa de filtros digitales. Se tiene por tanto memoria RAM desde la dirección Oh hasta 7FFFh. Las direcciones inferiores para acceso a la memoria (ADO - AD7) se obtienen a través de un latch octal 74LS373 y las direcciones superiores directamente de los pines del microcontrolador.

26

La habilitación del latch se realiza por medio de la líneas ALE y ALEDIS conectadas a una compuerta AND. Las salidas del 74LS373 se obtienen cuando ambas líneas están en alto. Durante el acceso normal a memoria el pin ALEDIS permanece en alto y ALE controla al latch. ALEDIS deshabilita al latch cuando el BASIC-52 ejecuta sus comandos de programación.

62256 I32KI A* AI

A2 A3 A4

A« A» AI0

10 A0 9 Al 8 7 A2 A3

6

AS Afi

S 4

A7

3

A0 A7

0* DI

13 15 10 17 1 /07 16 ]/00 19

09 D3 M 09 00 07

25 A0

24

AO

AI2

21 Alt 23 Al) 2

AI3

26

AI4

I

AI5

29

AH

II 12

I /Oí 1/02 1/03 1/04

A12

CS2/A13 NC/AI4

csi

-WlTE-|y WE .REAO— OE RAM ESTÁTICA

Figura 2.2 Memoria RAM externa Cada una de las líneas del bus de datos del microcontrolador (DO a D7) tiene una resistencia de pull-up de 10 KQ para asegurar que se mantenga la lógica TTL durante el envío de los datos a las memorias y periféricos externos. 2.1.3 DECODIFICADOR DE DIRECCIONES Se tiene adicionalmente 2 decodificadores de direcciones 74LS138. El primer decodificador divide el área de memoria extema de 64 Kilobytes disponible en 8 grupos de 8 Kilobytes cada uno tal como se revisó en el capítulo 1. (Figura 1.2)

27

3

A15 AM

C 2 B 1

AI3

A

+SV

74LS138 ( 1 )

O

6

GI 4 G2A 5 628

Y0 Yl Y2 Y3 Y4 Y5 Y6 Y7

IS 14 13

12 11

49MH

MMWÍII

1*

2 7

CMtH

DECODIFICADOR DE DIRECCIONES

Figura 2.3 Mapeo de memoria del microcontrolador El segundo decodificador divide el área de 8 Kilobytes reservada para expansión de entrada / salida (EOOOh a FFFFh) en 8 grupos de 1 Kilobyte cada uno, lo que permite activar hasta 8 periféricos externos entre los que se tiene: conversores análogo digitales, conversor digital análogo, display, teclado, etc.

74LS138(2)

|\2 3 K All \0 1

2

Vft TW

B

YI —-— E400 "I* Y7 13

A A

'*

Y3

yy—EC«0H

Y4 -—-— F-ÍM&0H Y5 l ® nnoH rftflMiH Y6

+5V /-^s I 1

-Í2— EQ00H - 1 K

C

6 4

GI

Y7

7

A FC00H

m

pin 7 del 741.8138 ( 1 )

EeMH

s

1 GJB DECODIFICADOR DE DIRECCIONES

Figura 2.4 Mapeo de memoria destinada a periféricos externos

28

2.1.4 INTERFAZ RS-232

Para permitir la comunicación serial entre el sistema BASIC-52 y la computadora, se utiliza el chip MAX233, que se diferencia del popular MAX232 en que ya tiene incorporados internamente los capacitores que requería el primero para convertir los niveles RS-232 ( lógica invertida -12V para 1 lógico y +12V para O lógico) a niveles TTL y viceversa.

Los capacitores incorporados facilitan el ensamblaje del circuito y evitan fallas en la comunicación al poseer mejores características que sus contrapartes discretos. *5V.

+svi

Vcc

2 Ttw

8052 BASIC 1 T2n

a

f^J^

^

WQUI

RX

"Oül

+5VL IX^ >«0k

PC

r^^So

TZ°UT

rxT

18 4 TX

>5k R2flm

n^\

-20 8 CU 13

ov

f

TERMOS j

OV TERMOS

17 14

>» C2*

01V

12

VV^-

19

^^

^-

3

C2* 1b C2 r?

6M)

11

,o|

6NO

Figura 2.5 Conexión del MAX233

2.2 ARRANQUE DEL SISTEMA Para

probar el circuito ensamblado

se conecta el puerto serial

tarjeta (MAX233) al puerto serial 1 (COM1) de la computadora anfitriona.

de la

29

En la computadora, se ejecuta el programa Hyperterminal que viene incorporado con Microsoft Windows. Se configura este programa para acceder a COM1 con parámetros de comunicación serial de 8 bits de datos, sin paridad y 1 bit de parada. El baud rate de ia comunicación no es crítico puesto que el BASIC-52 automáticamente se ajusta al que se esté usando. Para iniciar se puede utilizar una velocidad de 9600 baudios o menos. El límite de velocidad, sin embargo, es de 19200 baudios. No se debe habilitar ninguna opción de control de flujo por hardware o software.

..:

Bits por segundo: ] 4800

paridad: j Ninguna

8*5 de parada: jl

Control de íMo:!l

Avanzada..

Restaurar vate"1? pfedet«minado$ ]

Figura 2.6 Configuración del Hyperterminal Una vez seleccionados los parámetros adecuados de comunicación serial, se procede a energizar el circuito y a presionar la barra espadadora de la computadora para enviar al BASIC-52 el código 20h que inicia la comunicación. En este momento, el BASIC-52 chequea la cantidad de memoria RAM disponible

30

y el resultado lo almacena en la variable MTOP. Luego muestra en el Hyperterminal un mensaje que indica el correcto arranque del sistema: *MCS-51 (tm) BASIC V1.1* READY

A continuación muestra el prompt del BASIC-52 (>) indicando al usuario que el sistema está listo para ser utilizado.

AirJv.ti Eífctón Ver Umr Tiarufeñ Ayuda

RBABY

*HCS-51(t») BASIC VI.1* READY >PRI»T KTOP 49151 >PHO. XTAL 11059200 >XTAL=12E6 >10 PRINT "HOLA" >20 END >LI9T 10 PRINT "HOLA" 20 END READY >RUN HOLA RHADY

0:06:14 cowtóado

VTS2

«GOBÍM

MAYÚS

NUH

Figura 2.7 Arranque del BASiC-52 2.2.1 CHEQUEO DE MEMORIA RAM DISPONIBLE En el prompt del BASIC-52 (>) se escribe: > PRINT MTOP

seguido de ENTER (J)

para que el sistema muestre el contenido de la variable MTOP. (Figura 2.7)

31

En este caso, se muestra el número 49151 en decimal, es decir 48 Kilobytes de RAM extema. Esto es debido a que el sistema suma los 16 Kilobytes de RAM no volátil a los 32 Kilobytes de RAM estática existentes. Si se desea visualizar el contenido de la variable en formato hexadecimal se debe teclear:

> PHO. MTOP J

E! resultado en este caso será BFFFh. 2.2.2 ESPECIFICACIÓN DE LA FRECUENCIA DEL CRISTAL El operador XTAL representa el valor de la frecuencia del cristal que utiliza el BASIC-52. El valor por defecto es 11 059200 o 1 1 .0592 MHz. Este valor se utiliza para lo comandos de programación, reloj en tiempo real, salida PWM y salida LPT. Debido a esto, XTAL debe coincidir con la frecuencia del cristal que se esté utilizando. En este proyecto se utiliza un cristal de 12 MHz. Para fijar XTAL de acuerdo al oscilador utilizado se escribe: (Figura 2.7) > XTAL = 12E6 J ( o XTAL = 12000000 J )

Y para verificación:

> PRINT XTAL J 2.2.3 PROGRAMA DE PRUEBA Para verificar el correcto funcionamiento del sistema se escribe un programa corto como el que se muestra a continuación:

32

>10 PRINT "HOLA" J >20 END J

Estas 2 líneas de programa se almacenan en la memoria RAM estática del sistema, en donde se las puede visualizar por medio del comando LIST Para ejecutar este programa se escribe el comando RUN y en la línea siguiente se obtiene la cadena de texto "HOLA" (Figura 2.7) Para modificar una línea de programa se escribe nuevamente la misma empezando desde su número de identificación y para borrarla se escribe su número sin ningún texto. 2.2.4 LECTURA DE UN PÓRTICO El comando: > PRINT PORT1 J Muestra el valor decimal de la totalidad del pórtico 1. ( Para visualizar el valor hexadecimal se escribe PHO. PORT1) Para leer el estado de cada bit del pórtico en forma individual se realiza una operación AND lógica (máscara) tal como se muestra en el listado a continuación: 10 20 30 40 50 60 70 80 90 100 110

PORT1 =OFFH PRINT 'Valores de los bits pórtico 1 :" PRINT "Bit O = ".(PORT1.AND.1) PRINT "Bit 1 = ",(PORT1.AND.2)/2 PRINT "Bit 2 = ",(PORT1 .AND.4)/4 PRINT "Bit 3 = ".(PORT1 .AND.8)/8 PRINT "Bit 4 = ".(PQRT1 .AND. 10H)/1 OH PRINT "Bit 5 = ",(PORT1 .AND.20H)/20H PRINT "Bit 6 = ",(PORT1.AND.40H)/40H PRINT "Bit 7 = ",(PORT1 .AND.80H)/80H END

33

La línea 10 de este programa lleva a todos los pines del pórtico a nivel alto, lo cual los habilita para que puedan ser usados como entradas. Si un pin del pórtico está abierto o desconectado, una resistencia interna de pull-up provoca que se lo lea como 1 lógico. Si se conecta un pin a tierra se lo lee como cero lógico.

2.2.5

ESCRITURA A UN PÓRTICO

Se puede controlar cada uno de los bits del pórtico 1 escribiendo en ellos. El listado a continuación permite colocar en 1 lógico o en O lógico los bits individuales: >10 >20 >30 >40 >50

INPUT "Seleccione un bit (0-2, 4-7) :",X IF X=3 THEN PRINT "No modificar bit 3!": GOTO 10 INPUT "Ingrese 1 para activar, O para borrar :",Y IF Y=1 THEN PORT1=PORT1.OR.2**X IF Y=0 THEN PORT1=PORT1.AND.OFFH-2**X

>60

END

En otras palabras para escribir 1 lógico en un bit se utiliza la instrucción: PORT1=PORT1.OR.2**X Y para llevar el bit a O lógico se debe escribir: PORT1=PORT1.AND.OFFH-2**X La variable X representa el bit que se desea modificar. El programa no permite cambiar el estado del bit 3 (P1.3) debido a que el BASIC-52 requiere llevar este bit a nivel alto para acceder a memoria extema. Si accidentalmente se pone en O lógico a este bit el sistema dejará de funcionar y será necesario reiniciarlo.

34

2.2.6

ACCESO A MEMORIA EXTERNA

Para escribir o leer de memoria externa se utiliza el comando XBY tal como se muestra en el siguiente ejemplo: >10 >20 >30 >40 >50 >60 >70 >80 >90 >100 >110 >120 >130 >140 >150 >160 >170

DO INPUT "Ingrese O (leer), 1 (escribir), o 2 (salir): ",RW IF RW=0 THEN GOSUB 70 IF RW=1 THEN GOSUB 120 WHILE RW2 END PHO."Rangos de RAM externa desde O a ",MTOP INPUT "Ingrese una dirección para leer: ",A B=XBY(A) PHO.B," está almacenado en la dirección ",A RETURN PHO."Rangos de memoria disponible desde ",LEN+512," a ",MTOP INPUT "Ingrese una dirección para escribir :",A INPUT "Ingrese el dato que desea escribir :",B XBY(A)=B PHO.B," ha sido escrito en la dirección: ",A RETURN

Para leer datos de una dirección de memoria extema se utiliza el comando XBY como se muestra en la línea 90 del programa, esto es: B=XBY(A) Y el resultado de la lectura se almacena en la variable B. Si se desea escribir en memoria externa, XBY(A)=B permite grabar el dato B en la dirección especificada por la variable A. Normalmente el BASIC-52 utiliza los primeros 512 bytes de la memoria RAM externa para usos del intérprete, a eso hay que añadir la longitud del programa de ejemplo que se encuentra almacenado a continuación en la RAM extema ( y cuya extensión se puede determinar con la variable reservada LEN) tal como se observa en la línea 120.

35

Por tanto, cuando se escribe en memoria externa se debe evitar escribir fuera del rango especificado como memoria disponible ya que, caso contrario, se puede sobrescribir la memoria RAM externa actualmente en uso lo que obligaría a tener que resetear el sistema y volver a cargar el programa.

2.3 MEMORIA NO VOLÁTIL Entre las características más útiles del BASIC-52 se encuentran sus comandos de programación que permiten almacenar programas en memoria no volátil: EPROM, EEPROM o RAM con respaldo de batería (NVRAM). Los comandos asumen que la memoria no volátil está direccionada empezando en 8000h en la memoria de datos externa. Con la adición de la memoria no volátil, se tiene dos áreas que pueden contener programas BASIC-52: la memoria no volátil, en la dirección 8000h y la RAM, que empieza en la dirección Oh . Los comandos de programación del BASIC-52 están diseñados para cumplir los requerimientos de los tipos de memoria no volátil indicados arriba, aunque las memorias EEPROM y NVRAM no requieren voltajes especiales de programación ni necesitan ser borradas con luz ultravioleta, lo que hace más conveniente su uso. - MEMORIA EEPROM

Una EEPROM típica está garantizada para 10.000 a 100.000 ciclos de escritura. Los tiempos de acceso para lectura de una EEPROM son similares a los de la RAM estática, pero escribir en ella toma mucho más tiempo. La mayoría requieren de 2 a 10 milisegundos después de una operación de escritura antes de que se pueda acceder al chip nuevamente.

36

- MEMORIA RAM NO VOLÁTIL

La RAM no volátil trabaja exactamente igual que una RAM estática, con la diferencia que contiene una celda de litio y circuitos de respaldo que retienen los contenidos de la memoria cuando se desconecta la fuente de alimentación. El respaldo está garantizado por al menos 10 años. Tiene un infinito número de ciclos de escritura. Y al igual que en la RAM estática sus tiempos de escritura y lectura son muy cortos. Para añadir una NVRAM de 8 Kilobytes se puede utilizar la DS1225 fabricada por Dallas Semiconductor. Esta memoria ofrece dos opciones de protección contra la escritura de los datos. En la versión -AB, la protección contra escritura está garantizada cuando la fuente de alimentación es menor que 4.5 voltios y se puede escribir a la memoria cuando el voltaje de alimentación sea superior a 4.75 voltios. En las versiones -AD y -Y, la protección contra escritura se obtiene cuando la fuente baja de 4.25 voltios y se permite operaciones de escritura con voltajes superiores a 4.5 voltios Tiempos de acceso menores o iguales a 250 nanosegundos se pueden obtener con este tipo de memorias. En este proyecto se utilizan 2 chips de NVRAM DS1225-AB con 150 nanosegundos de tiempo de acceso. Esto permite obtener memoria no volátil que empieza en la dirección 8000h hasta la dirección BFFFh, es decir 16 Kilobytes para almacenar permanentemente programas BASIC-52. La figura 2.8 muestra la forma en que se conectaron las memorias RAM no volátiles al sistema BASIC-52.

37

BUS DE DATOS (DO-D7)

BUS DE DIRECCIONES INFERIORES

OS 1225 «K NVRAM BUS DIREC. SUPERIORES

\AO

lAB-Alb)

V

"^

Al

IC 0

V *&

\7

*

3

\8 25 \O 24 V Ale 21 \| 23 \2 2

1

I/OZ

\2 8 V A3 7 \4 6 V A5 5

Al?

VPP

II 12 13 15 16 17 18 19

t»/ 01 / 02 / D3/ 04 / D5/ E»/ 07 /

_ SIN CONEXIO

26 NC

--».

*5V 0

RÉSET

1

A ^

2€

3

VCC

74L332

J1

C

+ 5V

27 ÍE

y

22 oí

"J"

HAS. ESCRITURA

28

^TS»-" i±l GND

[

\^- O DESHAB. ESCRITURA

- PGM PULSE — ML80B -RDAMY

Figura 2.8 Conexión de RAM no volátil La primera NVRAM está direccionada desde SOOOh hasta 9FFFh, se debe recordar que se utiliza esta dirección debido a que los comandos de programación del BASIC-52 asumen que la memoria no volátil empieza allí. Las líneas de datos y direcciones se conectan exactamente igual que en la RAM estática del sistema.

Se utiliza una compuerta OR para prevenir una sobreescritura accidental durante el encendido. Cuando el BASIC-52 se energiza, los pines de los pórticos se encuentran en un estado desconocido por un breve periodo, hasta que el

38

algoritmo de RESET en el chip los lleve a todos a nivel alto. Durante este tiempo, existe una pequeña posibilidad de que una correcta combinación en las salidas provoque una escritura en la memoria no volátil. Ya que esto puede causar la destrucción de la información almacenada en el chip, es aconsejable evitar las operaciones de escritura durante un breve período de tiempo después del encendido. La compuerta OR previene el acceso a la NVRAM hasta que el RESET llegue a nivel bajo. El retardo causado por la carga de un capacitor a través de una resistencia (Figura 2.1) asegura que el algoritmo de RESET tenga tiempo suficiente de llevar los pórticos a nivel alto. Por tanto, la entrada CS (Chip Select) de la NVRAM (pin 20) va a nivel bajo solamente cuando se cumplen dos condiciones: que la señal de RESET esté en O lógico y que el BASIC-52 esté leyendo o escribiendo a una dirección entre 8000h y 9FFFh. La salida OE (Output Enable) se conecta a RDANY (pin 3 del 74LS08) para permitir que el chip pueda ser accedido como memoria de datos o de programa. Esto permite almacenar tanto rutinas en lenguaje ensamblador como programas en BASIC-52. Para escribir en el chip, se utiliza una compuerta AND que permite dos tipos de señales de control. WRITE (pin 16 del 8052 BASIC) es la señal convencional para escribir a una memoria de datos. Adicionalmente, el BASIC-52 usa una señal especial, PGM PULSE (pin 5 del 8052 BASIC), para almacenar programas BASIC-52 en la memoria no volátil que comienza en 8000h. Cualquiera de estas señales habilita la entrada WE de la NVRAM para escritura. Se tiene además un jumper que permite proteger contra escritura en forma permanente a la memoria, conectando WE directamente a 5 voltios, para evitar cualquier escritura accidental de programas o datos valiosos en NVRAM o cuando el programa desarrollado ya no va a sufrir modificaciones.

39

La segunda NVRAM se conecta en forma parecida a la primera, excepto que en la compuerta OR se debe conectar el pin del decodificador 74LS138 que activa la dirección AOOOh para que la memoria se active en el rango AOOOh a BFFFh con to cual se completan los 16 Kilobytes de memoria no volátil. 2.3.1 USO DE LOS COMANDOS DE PROGRAMACIÓN Durante el arranque, el BASIC-52 chequea toda la memoria RAM existente, es decir ios 32 Kilobytes estáticos más los 16 Kilobytes no volátiles y establece como valor de MTOP el valor más alto encontrado debajo de la dirección EOOOh. Pero los comandos de programación no funcionan a menos que MTOP esté por debajo de 8000h. Para habilitar el almacenamiento de programas, se debe escribir el siguiente comando: > MTOP = 7FFFh J ( 32 Kilobytes en decimal) Esto asegura que el BASIC-52 no tratará de almacenar programas en proceso de edición, variables o cadenas de texto en el área que se ha reservado para almacenamiento permanente de programas. Para copiar el programa actual de la memoria RAM a la NVRAM se escribe:

> FPROG J En la pantalla se muestra el número 1, indicando que éste es el primer programa BASIC-52 que será almacenado en el dispositivo, y después de un corto retardo, la sentencia READY aparece en pantalla.(Figura 2.9) Cuando se tiene un programa almacenado, se lo puede ejecutar desde la memoria no volátil. Los comandos del BASIC-52, RAM y ROM, permiten conmutar entre el modo RAM, donde el BASIC-52 ejecuta los programas almacenados en la RAM estática, y el modo ROM, en el cual se busca programas de la NVRAM para ejecutarlos.

40

•V tesis - HyperTeiminal AicHvc Edición Ver

Llama

Ayuda

>10 PRIHT "HOLA >20 EBP >FPROG

a KEAEY >10 PRIHT "PROGRAHA 2' >20 EIJD >FPROG 2 READY •ROM READY >RROH1 HOLA HUHDO REAI-Y >RROH2 PROGRAHA 2 REAPY

0:08:11 conectado

VT52

48008-N-1

MAYÚS

NUM

Figura 2.9 Almacenamiento de programas en NVRAM Para ejecutar un programa almacenado en NVRAM se teclea en el prompt el comando ROM y a continuación RUN o RROM. Si se tiene almacenados múltiples programas, se puede ejecutar cada uno especificando su número. Si se trata del segundo programa se escribe RROM2. Para retornar a ta edición de programas en RAM estática se escribe el comando RAM.

41

Finalmente el comando XFER permite transferir el programa actual de la memoria no volátil a la memoria RAM estática para su edición y luego se puede utilizar el comando FPROG para almacenar la versión revisada en la NVRAM. 2.3.2 OPCIONES DE ARRANQUE (BOOTUP) Los comandos FPROG1 a FPROG6 permiten almacenar información adicional junto a los programas en la memoria no volátil.

-

FPROG 1 almacena el baud rate actual y permite que el BASIC-52 arranque inmediatamente sin esperar a recibir el carácter de ESPACIO (20h). FPROG2 almacena el baud rate actual y provoca que el BASIC-52 ejecute el primer programa almacenado en memoria no volátil en el arranque. Esta opción permite desconectar el sistema de la computadora para utilizarlo en forma independiente. Con FPROG3 se puede almacenar el valor de MTOP para preservar la integridad de los programas almacenados en la memoria no volátil durante el arranque. Por ejemplo si se escribe MTOP = 7FFFh y a continuación FPROG3, cuando el sistema

arranque,

MTOP

automáticamente

será

fijado

en

7FFFh.

FPROG3 también almacena el baud rate y permite arrancar sin la tecla de ESPACIO. Si se quiere almacenar MTOP y además ejecutar un programa en el arranque, se puede usar FPROG4, el cual combina las características de FPROG2 y FPROG3. FPROG5 evita que el BASIC-52 borre los datos de la memoria externa durante el arranque. Finalmente FPROG6 permite al usuario crear sus propias rutinas de arranque en lenguaje ensamblador.

42

Si se usa estos comandos se debe tener cuidado en mantener et baud rate y el cristal utilizados durante estas operaciones, puesto que el BASIC-52 no vuelve a autodetectar el baud rate de la computadora. 2.3.3 BORRADO DE MEMORIA NO VOLÁTIL Eventualmente la memoria no volátil puede llenarse de programas o se puede querer eliminar los que se ha almacenado para desarrollar unos nuevos. Para borrar el contenido de la NVRAM se puede utilizar el listado siguiente: > 10 FOR I=8000H TO OBFFFH > 20 XBY(I)=OFFH > 30 NEXTI >40 END

El programa anterior permite borrar todos los programas almacenados en los 16 Kilobytes (BFFFh) de NVRAM así como las opciones seleccionadas con FPROG1 a FPROG6. Para esto escribe el dato FFh en todas las localidades de la memoria. Obviamente para borrar la memoria no volátil se debe colocar el jumper de protección en la posición de escritura.(Figura 2.8)

2.4 CONVERSOR ANALÓGICO/DIGITAL En este proyecto se utilizan dos conversores análogo / digitales ADS7832 de la casa BURR-BROWN, que tienen como características principales: -

Resolución de 12 bits

-

Fuente de alimentación simple de +5V

-

4 canales de entrada multiplexados

-

Interfaz paralela de 8 bits

43

-

Tiempo de conversión de 8.5 LIS incluyendo adquisición (Tasa de muestreo de 117 KHz)

El diagrama de bloques del conversor se muestra a continuación:

CALBRACIONDEL MCROCOHTROLADOR YMEMORIA

>ADCPOR



'\S ENTRADAS ) •Al fflAC DE3 ESTADOS

BUSY delMb

Figura 2.10 Diagrama de bloques del ADS7832 El ADS7832 usa las ventajas de una tecnología CMOS avanzada ( alta densidad lógica, capacitores estables, interruptores análogos de precisión y bajo consumo de potencia) para proveer un conversor de 12 bits análogo / digital de alta precisión con muestreo incorporado y 4 entradas análogas multiplexadas. La etapa de entrada consiste de un multiplexor análogo con un latch de direcciones para seleccionar entre los 4 canales de entrada. La etapa de conversión consiste de una arquitectura avanzada de aproximación sucesiva que usa redistribución de cargas en una red de capacitores para digitalizar la señal de entrada. Usa un circuito de autoenceramiento diferencial para minimizar errores de offset en ei comparador.

44

Los errores de linealidad en el capacitor principal de la red se limitan mediante una red auxiliar de capacitores de ajuste y factores de corrección almacenados en la memoria del chip. Por flexibilidad, los circuitos de tiempo incluyen un generador de reloj interno y una entrada para reloj externo que le permite sincronizarse con sistemas extemos. Señales de control estándar(CS , RD y WR) y registros de entrada / salida del tipo tres estados simplifican la conexión del ADS7832 con la mayoría de los microcontroladores y microprocesadores. El muestreo incorporado en el chip provee un excelente comportamiento dinámico para señales de entrada de hasta 50 KHz con un consumo máximo de 10 mW y 50 aW en estado de hibernación.

2.4.1 DESCRIPCIÓN DE PBVES Y FUNCIONAMIENTO V

7

SFR

1

28 VA

A1NO

2

27 AGND

AIN1

3

26 CAL (SHC)

AIN2

4

25 A1

AIN3

5

24 AO

VRET+

6

23 CLK

VRE(-

7

22 BUSY

DGND

8

21 HBÉ

VD

9

20 WR

D7 1O

19 CS

D6 11

18 RD

O5

12

17 DO

D4

13

16 D1

D3

14

15 D2

Figura 2.11 Pines del ADS7832

45

La descripción de las funciones de los pines del conversor análogo / digital ADS7832 se muestran en la tabla 2.1: Tabla 2.1 Descripción de pines de! ADS7832 PIN#

NOMBRE

DESCRIPCIÓN

1

SFR

Registro de funciones especiales

2 al 5

AINO a AIN3

Entradas análogas. Canal 0 a canal 3

6

VREF+

Voltaje de referencia positivo

7

VREF-

Voltaje de referencia negativo

8

DGND

Tierra digital. DGND = OV

9

VD

Voltaje de alimentación lógico (+5V)

10aM7

DOaD7

Pines de entrada / salida del bus de datos

18

RD

Entrada READ. Activa en bajo

19

CS

Entrada Chip Select. Activa en bajo

20

WR

Entrada Write. Activa en bajo

21

HBE

Habilitación de lectura del byte superior de datos

22

BUSY

Salida BUSY. Indica disponibilidad del conversor

23

CLK

Entrada de Reloj

24 al 25

AOaA1

Selección de canales de entrada 0 a 3

26

CAL

Entrada de Calibración

27

AGND

Tierra analógica. AGND = OV

28

VA

Fuente de alimentación analógica. (+5V)

46

La conversión se inicia con un flanco negativo en la entrada WR con señales válidas en AO, A1 y CS. El pin 22 (BUSY) se mantiene en bajo durante el proceso de conversión y se pone en 1 lógico cuando la conversión se completa. Los datos de salida se obtienen en dos bytes. El byte inferior (que contiene los 8 bits menos significativos) se lee en los pines DO a D7 usando el pin 18 (READ) y el byte superior (con los 4 bits más significativos) se obtiene en el bus de datos activando la entrada HBE (pin 21). Es decir, se necesitan dos lecturas del conversor para conformar la variable de 12 bits correspondiente. Los datos se obtienen en código binario con OOOh para O voltios y FFFh para 5 voltios. Se obtiene en consecuencia una resolución de 1.2 mV a la salida. (5V •*• 4096 )

Para seleccionar el canal de entrada de la señal analógica se utilizan las entradas AO y A1 de la siguiente forma: Tabla 2.2 Selección del canal de entrada del ADS7832 A1 AO Canal Seleccionado 0

0

CANAL 0

0

1

CANAL 1

1

0

CANAL 2

1

1

CANAL 3

Las entradas análogas están referidas internamente a VA (pin 28). Para prevenir daños al conversor, la corriente que fluya a las entradas debe limitarse a 20 mA. Para utilizar el reloj interno se conecta una resistencia en el pin 23 del conversor. El generador de reloj puede operar entre 100 KHz y 2 MHz. En la figura 2.12 se observa como varía la frecuencia del reloj interno de acuerdo al valor de la resistencia utilizada.

47

FRECUENCIA DEL RELOJ INTERNO



10.000

3 1.000 sí a SE

0.100 10

100

Figura 2.12 Elección de resistencia para reloj interno Con una resistencia igual a 100 ohmios, la frecuencia del reloj será nominalmente de 800 KHz lo cual es más que suficiente para las necesidades de este proyecto. 2.4.2 CONEXIÓN AL SISTEMA 8052 BASIC ovcc

vcco

Figura 2.13 Conexión del ADS7832 al sistema 8052 BASIC

48

En ta figura 2.13 se puede observar la forma en que se conectó el conversor ADS7832 al sistema BASIC-52. El chip se habilita cuando se escribe el dato de selección del canal de entrada (AO y A1) en la dirección EOOOh tal como se muestra en el siguiente programa: > 10 A=OEOOOH > 20 XBY(A) = OOH > 30 L = XBY(A) > 40 B = OE004H > 50 H = XBY(B) > 60 END

La línea 10 almacena la dirección de memoria extema en la cual está ubicado el conversor, en la variable A. La línea 20 escribe a los pines AO y A1 (por medio de las líneas DO y D1 del bus de datos) los valores escogidos para selección del canal de entrada (en este caso canal 0) con lo cual se inicia la conversión. Se puede obtener el byte inferior de datos leyéndolo directamente como se visualiza en la línea 30. Para obtener el byte superior se escribe 1 lógico al pin HBE que se encuentra conectado a la línea A2 del bus de direcciones como se observa en la línea 40. La línea 50 lee el byte superior del bus de datos con lo que se obtiene el dato completo de la conversión. El segundo conversor ADS7832 se conecta de manera similar con la diferencia que se activa en la dirección E400h de memoria extema. Para proteger los canales de entrada se utiliza un filtro pasabajos activo con un amplificador operacional LF347 como se muestra en la figura 2.14 Por tanto, el sistema dispone de 8 canales de entrada para señales analógicas, cada una con una resolución equivalente a 12 bits. Sin embargo solo uno de los canales se puede leer a la vez.

49

Al ADS7832

*. , Entrada Análoga

(Normalmente O V)

Figura 2.14 Protección de entradas del ADS7832 Para mayor información respecto al funcionamiento del conversor ADS7832 consultar el anexo C y la referencia [3].

2.5 CONVERSOR DIGITAL / ANÁLOGO En este proyecto se utiliza un conversor digital / análogo MAX530 fabricado por MAXIM. Entre sus características principales se tiene: -

Fuente de alimentación simple de +5V

-

Entrada paralela de 8 bits

-

Salida de voltaje

-

Resolución de 12 bits

-

Bajo consumo de potencia

Este dispositivo tiene una referencia de voltaje incorporada junto con un buffer amplificador en la salida. La corriente de operación es de solamente 250 desde una fuente de +5V. Los resistores internos de selección de ganancia pueden usarse para definir un rango de voltaje de salida de OV a +2.048V o de OV a +4.096V.

50

Las entradas lógicas paralelas tienen doble buffer y son compatibles con microcontroladores de 4, 8 y 16 bits REFOUT 18

REFIN

ROFS

VOUT

REFGND ASNO

— DGND

LDAC

i

DO/DB D1/D9

03/011 05

D7

Figura 2.15 Diagrama funcional del MAX530 El MAX530 consiste de una interfaz de entrada paralela, un arreglo de resistencias en forma de escalera R-2R, una referencia y un amplificador operacional. El diagrama funcional (Figura 2.15) muestra las líneas de control y de flujo de señal desde el latch de entrada hasta el latch del DAC, así como la referencia de 2.048V y el amplificador operacional de salida. Este conversor usa una red de resistencias en forma de escalera R-2R junto con un amplificador operacional para convertir datos digitales de 12 bits en niveles de voltaje análogos. La figura 2.16 muestra un diagrama simplificado de la red de resistencias y el amplificador operacional. A diferencia de los DAC estándar, el MAX530 usa una red de resistencias invertida. Normalmente el pin REFIN es la salida de corriente en un conversor estándar y debería estar conectado a la tierra virtual del operacional. Pero en la configuración estándar se tiene que el voltaje de salida está invertido respecto al voltaje de referencia. La topología del MAX530 hace que el voltaje de salida de la

51

escalera de resistencias tenga la misma polaridad que la entrada de referencia, lo cual hace al dispositivo muy útil para utilizarlo con una sola fuente. El amplificador operacional se usa como buffer, para invertir o amplificar la señal de la red de resistencias.

DQ/D8 D2/D10 D4 D6 01/D9 D3/D11 D5 D7

SE MUESTRA EL CASO DE TODAS LAS ENTRADAS EN 1 L

Figura 2.16 Escalera de resistencias R-2R Las resistencias de la escalera tienen un valor nominal de 80 KQ para ahorrar potencia y están equilibradas para obtener una adecuada linealidad. La impedancia de entrada en REFIN es dependiente del código. Cuando los registros del DAC están todos en O lógico, todos los ladrillos de la escalera están conectados a tierra y REFIN está abierto o sin carga. La carga máxima (mínima impedancia en REFIN) ocurre en el código 555h(010101010101). La impedancia de entrada mínima para este código está garantizada no ser menor de 40 KQ. Los pines REFIN y REFOUT permiten al usuario escoger entre manejar la escalera R-2R con la referencia interna o con una referencia extema.

52

2.5.1 DESCRIPCIÓN DE FINES Y FUNCIONAMIENTO Tabla 2.3 Descripción de pines del MAX530 PIN# NOMBRE

FUNCIÓN

1

D1 /D9

Entrada D1siAO=A1=0

D9siAO=A1=1

2

D2/D10

Entrada D2 si AO=A1=0

D10 si AO=A1=1

3

D3/D11

Entrada D3 si AO=A1=0

D1 1 si AO=A1=1

4

D4

Entrada de datos 04

5

D5

Entrada de datos D5

6

D6

Entrada de datos D6

7

D7

Entrada de datos D7

8

AO

Línea de dirección AO

9

A1

Línea de dirección A1

10

WR

Entrada WRITE. Se activa en bajo

11

CS

Entrada Chip Select. Se activa en bajo

12

DGND

Tierra digital

13

REFIN

Entrada de referencia. Entrada a la red R-2R

14

AGND

Tierra analógica

15

CLR

RESET del DAC

16

LDAC

Carga entrada al DAC. Actualiza VOUT

17

REFGND

Referencia Analógica

18

REFOUT

Salida de referencia

19

VSs

Tierra de la fuente de alimentación

20

VOUT

Salida de voltaje

21

RFB

Pin de resistencia de reaümentación del operacional

22

ROFS

Pin de resistencia para offset

23

VDD

Fuente de alimentación de +5V

24

DO/D8

Entrada DO si AO=A1=0

D1 si AO=A1=1

53

Con la entrada LDAC en alto, el usuario puede cargar los bytes de datos superior (4 bits MSB) e inferior (8 bits LSB) en cualquier orden. Las líneas de dirección AO y A1 se conectan juntas y el latch DAC se carga en 2 ciclos de lectura como 8 + 4. Cuando se lleva LDAC a O lógico se obtiene el voltaje analógico resultante en la salida VOUT.

///////X *«M X//////////////// 1

/x JMI.I XZZZZZZZZZZ t

1 DH& Figura 2.17 Diagrama de tiempo del MAX530 Para una conversión rápida se puede utilizar la secuencia de la figura 2.18 , en la cual LDAC se mantiene siempre en bajo. El latch DAC es transparente y continuamente se puede cargar nuevos datos digitales.

BYTE INFERIOR BYTE SUPERIOR

WR

=g

(LATCHES TRANSPARENTE) ACTUALIZACIÓN DEL DAC

Figura 2.18 Diagrama de tiempo para una conversión rápida

54

El rango unipolar de OV a 4.096V se selecciona conectando ROFS a AGND y RFB a VOUT como se observa en la figura 2.19.

+5V

VDD

HtHN m W

REFOUT

f* * 33»JF

MAX&Q

f 1\ *

ROR AGND

i— DGND

VOUT

VOUT

REFGND

Vss OV

Figura 2.19 Conexión para salida unipolar de OV a 4.096V La tabla 2.4 muestra el contenido del latch DAC de entrada y la salida VOUT correspondiente. Tabla 2.4 Código binario unipolar ENTRADA

SALIDA

1111

1111

1111

j/> f\i ...i 4^ *v9o +2 OE8ÓOH >

i 2 3 4 5 6 7 8 9 10 11 12

raí yrvirvwrM? D2/D1ÜVDB DVD11ROFS D4 RFB D5 VOUT Do VSS D7REPOUT AOREFCSS1D Al_ LDAC UfD T¥CV

/"^l f> Li¿lv

CS Aí^JíD DGNCREFTN

•^

/ ' t-VA

\?

\3

/

VrfV"*

\ **"^

22 __/ rJKTFi ^ír^iL/ 21 ^**v —/ A?rnit 20

Si/

19 .É.W' p»\rn 18

\\J

17 *—/ TiMn 16 15 "**X\¿I>1 T 14 —/" ITNH 13

"s

. _S

i^<

*»'

\v

V

/

/

VOUC

/

/

^^

\^

\a 2.21 Conexión del MA

MAX5M

El pin LDAC se conecta al pin 1.2 del 8052-BASIC y la opción CLR se conecta al pin 2.7 en caso de que se necesite un RESET del conversón El voltaje analógico de salida se obtiene en la salida VOUT. Un programa de ejemplo de manejo del MAX530 se muestra a continuación:

>20 >30 >40 >50 >60 >70

L = OFFH:H = A = OE800H B = OE801H XBY(B)=L XBY(A)=H PORT1=PORT1.AND.OFFH-2**2 END

El valor de los bytes superior e inferior es el máximo disponible (FFFh). En la línea 20 se almacena la dirección para activar al conversor y escribir O lógico en A2 para seleccionar la entrada del byte inferior. La línea 30 activa el conversor para lectura del byíe superior. Las líneas 40 y 50 escriben los bytes de datos y el valor de A2. Finalmente la línea 60 pone en O lógico LDAC para obtener el voltaje resultante en VOUT.

57

Para mayor detalle sobre el funcionamiento del conversor digital / analógico MAX530 se puede revisar el anexo D y la referencia [4].

2.6 MEMORIA EEPROM SERIAL Las memorias EEPROM seriales se usan por lo general en proyectos que necesitan cantidades mínimas de memoria no volátil que tenga capacidad de lectura y escritura. Estos pequeños y económicos dispositivos son muy utilizados

especialmente

cuando se necesita minimizar el número de líneas de entrada / salida, costos o tamaño físico. En el presente proyecto se utilizó la memoria EEPROM NM24C04 de 4 Kilobits con una interfaz I2C. Las líneas SDA, SCLf alimentación (power) y tierra (ground) usan 4 de los 8 pines. Los otros tres pines son entradas para dirección de página raramente usadas (AO, A1, A2). Estas permiten múltiples EEPROM de baja densidad en una sola interfaz. Por ejemplo, una conexión podría tener 8 EEPROMs de 256 bytes, cada una con una dirección de pagina cableada en forma diferente. En la 24C04, AO no se usa, A1 y A2 pueden seleccionar entre 4 dispositivos de 512 bytes. Pero es más simple y económico usar un solo chip de 2 Kilobytes. En algunas EEPROMs (NM24C03), el pin restante es una protección contra escritura por hardware para la mitad superior del arreglo de memoria. Para escribir un byte a la EEPROM, el dispositivo maestro escribe una condición de inicio (Start), luego escribe una dirección de 8 bits para el dispositivo esclavo (slave). La dirección consiste de un identificador de tipo de 4 bits (1010 para las EEPROMs), seguido por la página seleccionada (000 o 001), y una petición de Iectura(1) o de escritura(O) al dispositivo. El identificador de tipo está definido por el estándar I2C. La dirección de página es una manera de especificar el bit de dirección A8 (O o 1). Los otros 2 bits en la dirección de página no se usan

58

a menos que existan múltiples EEPROMs. En el ciclo de reloj que sigue a la dirección de esclavo, la EEPROM lleva SDA a nivel bajo para confirmación. El dispositivo maestro envía a continuación una dirección de 8 bits, y la EEPROM emite la señal de confirmación. (Cuando es necesario para mayores capacidades, el dispositivo maestro puede enviar 2 bytes de dirección). El dispositivo maestro envía el byte para escritura, espera por una confirmación, luego escribe una condición de parada. La EEPROM luego programa el dato en su arreglo de memoria. Cuando la programación está completa, la EEPROM emite la señal de confirmación. Para escribir hasta 16 bytes a direcciones secuenciales, en vez de imprimir una condición de parada después del primer byte de datos, el dispositivo maestro puede continuar enviando bytes de datos, esperando por una confirmación después de cada uno. Después de enviar todos los bytes, el dispositivo maestro escribe la condición de parada, y la EEPROM programa los bytes y confirma la operación. Algunas EEPROMs I2C (Microchip 24LC04) puede programar los 16 bytes en paralelo, para una programación más rápida. En otras, se puede escribir 16 bytes en secuencia, pero el chip los programa uno a la vez. Para leer un byte, el dispositivo maestro comienza como si se tratara de una operación de escritura, enviando una dirección al dispositivo esclavo seguido por un byte de direcciones. Cuando la EEPROM confirma la dirección del byte, el dispositivo maestro escribe una nueva condición de inicio, seguida por la dirección del esclavo con el bit final fijo en 1 (lectura). El dispositivo esclavo escribe la señal de confirmación y a continuación escribe el dato en SDA. En ia recepción del dato, el dispositivo maestro no emite confirmaciones, en lugar de eso escribe una condición de parada. Para leer direcciones sucesivas, el dispositivo maestro confirma la recepción del byte de datos, y la EEPROM responde enviando el próximo byte en secuencia. La EEPROM continuará enviando bytes hasta que reciba una condición de parada en vez de una confirmación.

59

2.6.1 INTERFAZ I2C (ÍNTER - EVTEGRATED CffiCUIT BUS ) La interfaz I2C requiere solo 2 lineas de señal además de una tierra común. La línea bidireccional SDA (Serial Data / Address) requiere salidas de tipo colector abierto (open-colector) o drenaje abierto (open-drain) . SCL (Serial Clock) es el reloj. En lugar de una línea de selección de chip (Chip Select), el dispositivo maestro (master) envía una dirección de dispositivo esclavo (slave) a través de SDA. La figura 2.22 muestra el diagrama de tiempos para la transferencia I2C. Wrttc (Program) Optnrtion

SCL Bus activfty, Master; wrttq instrucfeon

data

addrss»

SDA Ack

Ack

Bus activíty, EEPROM:

ftoMl Op*r*Hon

SCL Bus actiufty, Maater dummYwrttetnqtructton Startl

O

1

O

O

address ' ~~^

O A8

O

A7

AO

SDA Bus actjvily, EEPROM:

**

RMd OpMHon (conflniMd)

SCL Bus actfvtty, Master Start 1

O

1

data O

O

O

A8

Stop

1

SDA Busadniky. EEPROM:

Ach D7

... DO

Figura 2.22 Ciclos de lectura / escritura I2C

60

Un bus I2C puede contener hasta 40 dispositivos, con este límite determinado por la máxima capacitancia del bus que es de 400 pF. Cada uno de los dispositivos en el bus puede tener una dirección de hasta 7 bits. La interfaz colector abierto (open-colector) o drenaje abierto (open-drain) quiere decir que cualquier salida lógica de nivel bajo llevará a SDA a nivel bajo. Un dispositivo reinicia la línea SDA escribiendo 1 a su salida. I2C es sensible al nivel. Bits de datos y direcciones en SDA pueden cambiar solo mientras SCL está en bajo, y el dispositivo receptor lee bits después que SCL llega a nivel alto. Existen 2 ocasiones cuando SDA cambia mientras SCL está en alto. Una condición de inicio (Start) señala el comienzo de una operación, y ocurre cuando el dispositivo maestro (master) lleva a SDA a nivel bajo con SCL en alto. Una condición de parada (Stop) señala el fin de una operación, y ocurre cuando SDA se pone en alto con SCL en alto. Un bus I2C puede tener múltiples dispositivos maestros. Si más de un dispositivo maestro trata de controlar el bus al mismo tiempo, un protocolo de arbitraje definido por el estándar I2C determina cual de ellos obtiene el control.

2.6.2 CONEXIÓN AL SISTEMA 8052 BASIC vcc U13

i ..... BO

•til—H -,—f-

VCC

*

El

'

id >

5

>«CL "WC

QEHD

1

T

? } f).; JE .1 JE í H i í i í I í í PASABAJOS fe - 055 Hz

Figura 3.9 Filtro pasa bajo con fe = 0.25 Hz

SEÑAL DE ENTRADA f = 0.28 Hz

iSEÑALDESALDA

PASABAJOS ffc-0.16Hz ; li í í l i U t l U J

Figura 3.10 Filtro pasa bajo con fe = 0.15 Hz El resultado de aplicar el filtro pasa bajo con una fe = 0.25 Hz a una señal cuadrada de frecuencia 0.18 Hz se muestra en la figura 3.9. Se debe recordar que una onda cuadrada está compuesta de una suma infinita de ondas senoidales de distintas frecuencias.

97

En la figura 3.10 la onda cuadrada sufre una fuerte atenuación ai ser su frecuencia superior a la frecuencia de corte del filtro. SEÑAL DE ENTRADA f - 0.27 Hz

^.SENAL DE SALIDA

PASABAJOS fe = 0.3 Hz

;

Figura 3. 11 Filtro pasa bajo con fe = 0.3 Hz

SEÑAL DE ENTRADA f=0.27Hz

.,

_ . . . . , PASABAJOS fe = 0.2 Hz

Tí * •: i; i í Í t í i í i 4 í

Figura 3.12 Filtro pasa bajo con fe = 0.2 Hz Finalmente se probó el filtro anterior con una señal de entrada triangular. En la figura 3.11 se puede observar que a pesar de que la frecuencia de corte del filtro pasa bajo es superior a las frecuencia de la señal, solamente pasan las frecuencias

inferiores de las distintas sinusoides que conforman la señal

triangular. Y con una frecuencia de corte menor las sinusoides obtenidas se atenúan. (Figura 3.12)

98

3.2 PRUEBAS CON EL FILTRO PASA ALTO SEÑAL DE ENTRADA f= 02 Hz

u uu n?

FASAALTOSfc = 0.i Hz

.* U * U U U U

Figura 3.13 Filtro pasa alto con fe = 0.1 Hz SEÑAL DE ENTRADA f=0.1Hz

í ¿tt

s

?SENAL DE SALIDA

! M U * U U 1 U ¡ U U* i U U i*

PASAALTOS fe - O21 Hz

~

*

Figura 3.14 Filtro pasa alto con fe = 0.2 Hz En la figura 3.13 se observa que la forma de onda de entrada casi no se altera al ser su frecuencia mayor a la frecuencia de corte del filtro pasa alto. La onda de entrada sufre atenuación en la figura 3.14 al ser de frecuencia menor que la frecuencia de corte del filtro pasa alto.

99

3.3 PRUEBAS CON EL FILTRO P.I.D. Primeramente se probó el filtro PID con una señal de entrada cuadrada.

. .SEÑAL DE ENTRADA f=0.2Hz

PID con Kp=0.5, Ki=0.5, Kd=0.5

Figura 3.15 Filtro PID con señal cuadrada de 0.2 Hz

SEÑAL DE ENTRADA f = 0.23 Hz

PIDconKp=2.3,Ki=0.2,Kd=0.1

Figura 3.16 Filtro PID con señal cuadrada de 0.23 Hz Los resultados obtenidos (figuras 3.15 y 3.16) demuestran la influencia de las constantes proporcional (Kp), integral (Ki) y derivativa (Kd) en la señal de salida cuadrada, al variarlas independientemente o en forma conjunta.

100

SEÑAL DE ENTRADA f = 0.14 Hz

SALIDA

¡ « t u * . * t * í ! « H UüitTTH muñí U i PID con Kp=2.3, Ki=0.5, Kd=0.01

Figura 3.17 Filtro PID para entrada senoidal

SEÑAL DE ENTRADA f = 0.14 Hz

SALIDA

PID con Kp=Q.6, K¡=0.1, Kd=0.1

Figura 3.18 Filtro PID con entrada triangular En las figuras 3.17 y 3.18 se observa como la señal del filtro PID trata de seguir a la forma de onda de entrada.

101

3.4 PRUEBAS CON EL FILTRO P.I.D. DE DOBLE LAZO SEÑAL DE ENTRADA f= 02 Hz

PID DOBLE LAZO

Figura 3.19 Filtro PID de doble lazo descalibrado SEÑAL DE ENTRADA f-Q.1 Hz

Figura 3.20 Filtro PID de doble lazo calibrado a f = 0.1 Hz El filtro PID de doble lazo resultó muy difícil de calibrar y funciona adecuadamente solo para frecuencias inferiores a 0.1 Hz (Figuras 3.19 y 3.20) En el sistema desarrollado se puede probar cualquier otro tipo de filtro que se pueda expresar como una ecuación de diferencias, ingresando las señales dentro del rango de funcionamiento y teniendo cuidado de que las operaciones matemáticas no superen el valor máximo de 65535 que puede almacenar una variable de 16 bits en el intérprete BASiC-52.

102

CONCLUSIONES Y RECOMENDACIONES De la realización de las pruebas con los diferentes tipos de filtros se concluye que si es posible

implementar

filtros

digitales

utilizando

el microcontrolador

8052 BASIC, incluso si las variables con las que se trabaja son de 12 bits ya que se deben realizar dos lecturas en el conversor A/D para obtener el dato. La frecuencia máxima a la que puede funcionar el sistema 8052 BASIC desarrollado está entre 0.2 y 0.3 hertzios debido a la propia lentitud del microcontrolador en la ejecución de los programas BASIC ( como se explicó en el capítulo 1) y a los retardos que se producen durante las operaciones matemáticas que constituyen los filtros digitales. El filtro digital pasa bajo desarrollado se puede aplicar a la señal proveniente de un sensor de nivel de líquidos como el existente en el prototipo de tanques acoplados existente en el laboratorio de Sistemas de Control, a la salida del cual se obtiene una señal logarítmica que varía lentamente en el tiempo y presenta gran cantidad de ruido de altas frecuencias. Del trabajo con el microcontrolador 8052 BASIC se obtuvieron las siguientes conclusiones: - El tiempo que tardó el desarrollo de este proyecto se redujo notablemente al utilizar el chip 8052 BASIC, pues para escribir un programa en BASIC-52 no se requiere gran experiencia en programación ni manuales complicados. - La capacidad de realizar operaciones en punto flotante en el 8052 BASIC facilitó la implementación de ecuaciones recurrentes para los filtros digitales.

103

- Existió la ventaja de que al ser el BASIC-52 un intérprete, se pudo probar inmediatamente los programas desarrollados, sin la tediosa y repetitiva tarea de ensamblarlo, cargarlo y ejecutarlo, lo que se requiere en el caso de otros programas de desarrollo para microcontroladores. - Se pudo empezar el trabajo con este microcontrolador con un computador personal y unos pocos componentes adicionales fáciles de encontrar en el mercado, lo que redujo el tiempo de desarrollo y la inversión económica inicial. Una desventaja que se presenta es que los programas desarrollados ocupan demasiado espacio en memoria. Para el caso del calculo de los 4 filtros digitales implementados, el programa desarrollado tiene una extensión de 13 Kilobytes, lo cual implica mayores costos en el desarrollo de un proyecto. Se recomienda utilizar el módulo desarrollado como una herramienta didáctica para quienes se inician en el mundo de los microcontroladores aunque no es conveniente para aplicaciones comerciales debido a su baja velocidad de proceso y la extensión de sus programas de aplicación. Se ha cumplido el objetivo de este proyecto pues se obtuvo un prototipo en el cual se pueden programar, utilizando el computador, una gran variedad de filtros digitales. Adicionalmente el equipo desarrollado puede utilizarse para desarrollar otras aplicaciones en el campo del control con microcontroladores. En proyectos futuros se aconseja trabajar con microcontroladores más rápidos o mejor aún con procesadores digitales de señal (DSPs) que permitan analizar señales de mayores frecuencias para tratar de implementar controles de posición o velocidad en motores eléctricos o servomecanismos.

104

REFERENCIAS BIBLIOGRÁFICAS [I]

BASIC-52 PROGRAMMING. Salí Lake City, UT: Systronix, Inc., 1997.

[2]

J.

Axelson,

The

Microcontroller

Idea

Book,

Madison,

Wl:

Lakeview Research. 1997. [3]

>ADS7832 Date Sheet Tucson, AZ: Burr Brown Corporation, 1998.

[4]

MAX530 Data Sheet Sunnyvale, CA: Maxim Integrated Products, 1995.

[5]

AT24C04A Data Sheet San José, CA: Atmei Corporation, 1997.

[6]

KS0066U DRIVER & CONTROLLER FOR DOT MATRIX LCD Data Sheet Samsung Electronics

[7]

M. Ontaneda, Sistema de desarrollo de programas de control basado en el microcontrolador Intel 8052AH-BASIC, Quito: E.P.N., 1993.

[8]

J. Proakis, D. Manolakis, Tratamiento Digital de Señales. Principios, Algoritmos

y Aplicaciones, México:

Prentice

Hall Hispanoamericana

S.A., 1999.

[9]

S. Smith, The Scientist and Engineer's Guide to Digital Signal Processing, San Diego, California: California Technical Publishing, 1999.

[10]

K.

Ogata,

Sistemas de

Control

Discreto,

México:

Prentice

Hispanoamericana S.A., 1995. [II]

J. Axelson, "Using Serial EEPROMs", Circuit Cellar Ink, 1995.

[12]

DS1225AB Date Sheet Dallas, TX: Dallas Semiconductor, 1994.

Hall

105

ANEXOS

ANEXO A

INSTRUCCIONES BASIC-52 A continuación consta una breve referencia de las instrucciones BASIC-52 ordenadas alfabéticamente. ABS (expresión)

Devuelve el valor absoluto de una expresión Expresión, AND. Expresión Conector lógico AND (y) ASC (carácter) Devuelve el valor de un carácter ASCII. ATN (expresión) Devuelve el arco tangente de una expresión BAUD expresión Establece el baud rate para LPT (pin 8). Para el funcionamiento adecuado, XTAL debe coincidir con la frecuencia del cristal del sistema CALL entero Llama una rutina de lenguaje ensamblador en la dirección especificada en la memoria del programa.

CBY (expresión) Almacena el valor de la expresión en la memoria de programa. CHR (expresión) Convierte la expresión a su carácter ASCII CLEAR

Coloca todas las variables en O, resetea todas las pilas e interrupciones invocadas por BASIC. CLEARI

Limpia todas las interrupciones invocadas por BASIC. Desactiva ONTIME, ONEX1 CLEARS

Coloca en O las pilas del 52-BASIC. Establece la pila de control = OFEh, el la pila de argumento =1FEh, la pila interna = el valor en 3Eh en memoria interna CLOCKO

Desactiva el reloj en tiempo real. CLOCK1 Activa el reloj en tiempo real

CONT Continua ejecutando el programa después de STOP o CONTROL+C COS (expresión) Devuelve el coseno de una expresión CR

Opción de impresión. Provoca un retorno del carro, pero no un avance de línea, en el computador, DATA expresión [,.., expresión] Especifica las expresiones a ser recuperadas por una sentencia READ DBY (expresión) Recupera o asigna un valor a expresión en la memoria interna de datos . DIM arreglo nombre[(tamaño)][,..arreglo nombre(tamaño)] Reserva espacio de almacenaje para un arreglo. El tamaño por defecto es 11 (0-10). El tamaño limite es 0-254 DO: [sentencia del programa]: UNTIL: expresión relacional Ejecuta todas las sentencias entre DO y UNTIL hasta que la expresión relacional sea verdadera.

DO: [sentencia del programa]: WHILE: expresión relaciona! Ejecuta todas las sentencias entre DO y WHILE hasta que la expresión relacional sea falsa.

END Termina la ejecución del programa, EXP (expresión)

Eleva e (2.7182818) a la potencia dada por la expresión. FOR variable contador = expresión inicial del contador TO expresión final del contador [ STEP expresión de incremento del contador]:[sentencias del programa]: NEXT [variable contador] Ejecuta todas las sentencias entre FOR y NEXT el número de veces especificado por el contador y la expresión de parada. FPROG, FPROG1-FPROG6 Semejante a PROG, PROG1-PROG6, pero usado un algoritmo inteligente

FREE Devuelve el número de bytes libres de la memoria RAM de datos externa .

GET Contiene el código ASCII de un carácter recibido desde el teclado del ordenador. Después un programa lee los valores de GET (Por ejemplo, G=GET), GET devuelve O hasta que un nuevo carácter se reciba. GOSUB número de linea Hace que 52-BASIC transfiera el control del programa a una subrutina empezando en el número de línea. Una sentencia RETURN devuelve el control al número de línea siguiente al de la sentencia GOSUB. GOTO número de línea Hace que el BASIC-52 salte al número de línea en el programa actual. IDLE Obliga al BASIC-52 a esperar por las interrupciones ONTIME u ONEX1. IE

Recupera o asigna un valor al registro de funciones especiales IE del 8052. IF expresión relacional THEN sentencias del programa [ELSE] [sentencias del programa] Si la expresión relacional es verdadera, ejecuta las sentencias del programa siguientes a THEN. Si la expresión relacional es falsa, ejecuta las sentencias del programa siguientes al ELSE.

INPUT ["Prompt message*f][,]variablelvariable\[,...variablé\a una pregunta y un

espera la entrada del teclado. Almacena la entrada en una variable(s). Una coma antes de la primera variable suprime la pregunta. INT (expresión) Devuelve la parte entera de la expresión. IP Recupera o asigna un valor al registro de funciones especiales IP del 8052. LD@ expresión Recupera un número en punto flotante de 6-bytes y lo ubica en la pila de argumento . Expresión apunta al byte más significativo del número LEN Devuelve el número de bytes en el programa actual. [LET] variable = expresión Asigna una variable al valor de la expresión. El uso de LET es opcional. LIST [número de línea] [-número de línea] Despliega el programa actual en el computador.

LIST# [número de línea] [-número de línea] Escribe ei programa actual ai LPT (pin8) LIST@ [número de línea] [-número de línea] Escribe el programa actual a una rutina de manejo en lenguaje ensamblador en 40C3h. LOG (expresión) Devuelve el logaritmo natural de la expresión. MTOP[ = la más alta dirección en RAM

]

Asigna o lee la más alta dirección que el BASIC-52 usará para almacenar variables, caracteres, y programas. Usualmente 7FFFh o menos. NEW

Borra el programa actual en RAM; limpia todas las variables. NOT (expresión) Devuelve los complementos (inversos) de la expresión. NULL [entero] Coloca el número (0-255) de caracteres nulos (ASCII 00) que el BASIC-52 envía automáticamente después un retorno de carro. Solo unas pocas impresoras antiguas o terminales necesitan este carácter extra.

ON expresión GOSUB número de línea [, número de //nea][,..., número de línea]

Transfiere el control del programa a un subrutina empezando en la primera de los números de línea en la lista. ON expresión GOTO número de línea [, número de línea][

número de

línea] Transfiere el control del programa a uno de los números de línea en una lista de números. ONERR número de línea Pasa el control al número de línea siguiente a un error aritmético. ONEX1 Número de línea Cuando ocurre una interrupción externa 1 (pin 13), el BASIC-52 pasa el control a una rutina de interrupción que empieza en número de línea. La rutina de interrupción debe terminar con RETÍ.

ONTIME número de segundos, número de línea Cuando TIME = número de segundos, el BASIC-52 pasa el control a una rutina de interrupción empezando en número de línea. La rutina de interrupción debe finalizar con RETÍ. CLOCK1 inicia el timer. Expresión. OR. Expresión Conector lógico OR (o).

p. Cumple la misma función que PRINT PCON

Recupera o asigna un valor al registro de funciones especiales PCON del 8052. PGM

Programa un EPROM, EEPROM, o NVRAM con los datos de la memoria. PHO.

Cumple la misma función que PRINT, pero despliega valores en formato hexadecimal. Usa 2 dígitos para desplegar valores menores que OFFh.

PHO.#

Cumple la misma función que PRINT#, pero despliega valores en PHO., formato hexadecimal. PHO.@

Cumple la misma función que PRINT@, pero imprime valores en PHO., formato hexadecimal.

PH1. Cumple la misma función que PRINT, pero despliega valores en formato hexadecimal. Siempre despliega cuatro dígitos.

PH1.#

Cumple la misma función que PRINT#, pero despliega valores en PH1., formato hexadecimat. PH1.@

Cumple la misma función que PRINT@, pero imprime valores en PH1., formato hexadecimal.

Pl Constante igual a 3.1415926 POP variable [,...variable] Asigna el valor del topo del de la pila de argumento a variable. PORT1 Recupera o asigna un valor a PORT1 (pines 1-8) PRINT [expres/ón][,,..expres/ón][,] Despliega el valor de la expresión o expresiones sobre el computador. Una coma al final de la sentencia suprime la tecla de regreso/cambio de línea. Los valores están separados por 2 espacios.

Las opciones adicionales al PRINT son CR,

SPC, TAB, USING, PRINT # Cumple la misma función que PRINT, pero imprime a LPT (pin 8). Los valores BAUD o XTAL afectan la velocidad de PRINT#

PRINT@

Cumple la misma función que PRINT, pero imprime a una salida definida por el usuario. Requiere una rutina de salida en lenguaje ensamblador en 403Ch en la memoria extema del programa PROG

Almacena el programa actual RAM en el espacio de memoria no volátil. PROG1 Almacena el baud rate del pórtico serial. Durante el encendido, el BASIC-52 arranca sin esperar a recibir el carácter de espacio. PROG2 Como PROG1, pero durante el encendido o el RESET, el BASIC-52 empieza con la ejecución del primer programa en memoria no volátil. PROG3 Como PROG1, pero también almacena el valor de MTOP. Durante el encendido o el RESET el BASIC-52 borra la memoria solo hasta MTOP. PROG4 Como PROG2, pero también almacena MTOP. Durante el encendido o el RESET el BASIC-52 borra la memoria solo hasta MTOP.

PROG5

Como PROG3, pero también lee la dirección 5Fh en memoria externa de datos durante el encendido o el RESET. Si la dirección 5Fh contiene el dato OA5h, el BASIC-52 no borra la memoria externa de datos. Si ia dirección contiene el dato 34h, el BASIC-52 automáticamente ejecutará un programa almacenado en la memoria no volátil. PROG6 Como PROG5, pero si en la memoria externa de datos contiene 5Fh, el BASIC-52 llama a una rutina de RESET en lenguaje ensamblador creada por el usuario. PUSH expresión [,...expresión] Coloca los valores de las expresiones secuencialmente en la pila de argumentos del BASIC-52. PWM expresión 1, expresión2t expresiónS Provoca una salida PWM en el pin 3. Expresiónl es el ancho de cada pulso en alto. Expresión2 es el ancho de cada pulso en bajo, expresados en ciclos de reloj. ExpresiónS es el número de ciclos PWM.

RAM

Selecciona el programa actual en el espacio de RAM. RCAP2 Recupera o asigna un valor a los registros de funciones especiales RCAP2H y RCAP2L del 8052.

READ variable[,...variable]

Recupera las expresiones en una sentencia DATA y asigna cada expresión a una variable.

REM Introduce un comentario. El BASIC-52 ignora todo el texto después de REM en una línea de programa. RESTORE

Resetea el puntero READ a la primera expresión en la sentencia DATA RETÍ Retorna el control del programa al número de línea siguiente al de la sentencia ONEX1 u ONTiME ejecutada más recientemente. RETURN Retorna el control del programa al número de línea siguiente al de la sentencia GOSUB ejecutada más recientemente. RND

Retorna un número seudo-randómico entre O y 1 inclusive. ROM [número de programa] Selecciona

un programa en el espacio no volátil (empezando en 8000h).

El número de programa por defecto es 1.

RROM [número de programa] Cambia ia modo ROM y ejecuta el programa especificado. El número de programa por defecto es 1. RUN Ejecuta e! programa actual. Borra todas las variables. SGN (expresión) Retorna +1 si expresión >= O, O si expresión - O y -1 si expresión < O SIN (expresión) Retorna el seno de una expresión. SPC (expresión) Opción PRINT. Despliega la expresión adicionado espacios (2 mínimo) entre los valores en una sentencia PRINT. SQR (expresión) Devuelve la raíz cuadrada de la expresión. ST@ expresión Copia un número en punto flotante de 6 bytes desde el argumento de una pila a los datos de memoria externa. La expresión apunta al byte más significativo del número.

STOP Interrumpe la ejecución del programa. STRING expresiones, expresión2

Asigna memoria a cadenas de caracteres (variables que consisten de una serie de caracteres de texto. Expresiónl = (Expresión2*número de cadena de caracteres)+1 Expresión2 = Número máximo de bytes (caracteres) por cadena de caracteres+1. Ejecutando STRING se limpian todas las variables.

El número máximo de

cadenas es de 255. T2CON Recupera o asigna un valor al registro de función especial T2CON del 8052. TAB (expresión) Opción PRINT.

Especifica la posición (número de espacios) para empezar a

desplegar el siguiente valor en la sentencia PRINT. TAN (expresión) Devuelve la tangente de la expresión TCON Recupera o asigna un valor al registro de función especial TCON del 8052.

TIME

Recupera o asigna un valor, en segundos, al reloj en tiempo real del BASIC-52. TIMERO

Recupera o asigna un valor a los registros de funciones especiales THO Y TLO del 8052. TIMER1

Recupera o asigna un valor a los registros de funciones especiales TH1 Y TL1 del 8052. TIMER2 Recupera o asigna un valor a los registros de funciones especiales TH2 Y TL2 del 8052. TMOD Recupera o asigna un valor al registro de función especial TMOD del 8052.

U. Opción PRINT. Cumple la misma función que USING. USING (FN) Opción PRINT. Hace que el BASIC-52 arroje salidas de números en formato exponencial con N cifras significativas. El BASIC-52 siempre imprime al menos 3 cifras significativas. La expresión tiene un máximo de 8.

USING (0) Opción PRINT. Hace que el BASIC-52 arroje salidas de números desde ±99999999 a ±0.1como fracción decimal. La salida numérica puede presentarse en el formato de USING (FA/J. USING (0) es el formato por defecto. XBY (expresión) Recupera o asigna un valor en la memoria extema de datos. XFER Copia el programa actual desde el espacio no volátil a la RAM y conmuta a modo

RAM. XTAL Asigna un valor igual a la frecuencia del cristal del sistema, para usos por parte del BASIC-52 en cálculos de tiempos.

ANEXO B

a

JP1

ue

,,n N ^n üdi—1

JP2 HESPftCK 10K

PROTECCIÓN HflH NÚ

JP3

31

aui

JPS

CONEXIÓN ñ ñxD

CONEXIÓN ft Dxfl

vT

PROTECCIÓN DE ENTRADAS

ENTRADAS

COÍJVHUORE3 ANALOOOJ . DlOfTALES ADSIE3

COfiEMONAT.P.

CONVERSORESA /D

JP1

AUMENTACIÓN

Ol

Cl

R9

RIO

lAn*

0-luF

100K

100K

¡I



100K

•CZh

i

"i

1

1

C3

100K

SlÜÍ-.

*4

lOMC R5 100K

cz>

-CH3"

U'.iMr

R3

-O

-CZU"

R12 10 ohm

10 ohtm

U3 re:

1

1 —'

ft

Ut A QS7B32

OS7832

¿u"

I

SI

n\

-M nt_

*

D-IUF

S

£5, _ 1 "1

r1 ?£n*-

"luF

I

= ^¡D

ÍS

•C3-

l_l

H7 Ton/ 5^—L

^^ O.luF I I

CS IDuF

CIO IDuF

ai 10uF

„«

b—'

^X

^X

/-

f

1

(

7™

IOHO-

0.1uF

1

1

¿

H-

H-

V^ VV^

IQnF

>

V

JR2

a 2 IDuF

C13 IDuF

lüuF

ENTRADAS 1

/^"^N [ rf"

/^"^N [ rh

/^^ [

1

as

Cl't

cíe

IQnF

CZ1 C16 lOnF

3 C19 IDnF

1

d]

\H-

C17 IDnF

C20 IQnF

J^

di

dD

.GTO

CONEXIÓN A T, P.

ALIMENTACIÓN

•C OFFSET;

BUFFER

Rl 100K AJUSTE DE OFFSET

D1/D9DO/D8 DÍT310VDD D3/D11ROFS D4 RFB D5 VOUT D6 V3S D7 REFOUT AO REFGND Al LDAC WR CLR CS AGND DGNIUEFTN

A4

3Í29

DESPLAZADOR DE NIVEL

^TO-

3he« lof i j>awnBy:~

1 Mauricio Muñoz

1

Re^iiion

AJUSTI DE GANANCIA

CONVERSOR D/A 12 BITS

100K

AMPLIFICADOR/ATENUADOR

D:Mwmeompleto«\tarietByrwiil.DDB

CONVERSOR DIGITAL ANÁLOGO MAX530

flLIMENTftCION

JPÍ 1

13

JP2 CONEXIÓN fl T. P.

1J

EH

JP3 SñLIDfl

§3

OFFSET

JP4

O

CIRCUITO PARA DISPLAY 16 X 4

CIRCUITO PARA TECLADO 26X2

31

Q t

EH

JP1 ALIMENTACIÓN

8

13L

DJt

CONEXIÓN A T. P.

JP3

as

ANEXO C

BURR-BROWN

ADS7832

Autocalibrating, 4-Channei, 12-Bit ANALOG-TO-DIGITAL CONVERTER FEATURES

DESCRIPTION

• PIN COMPATIBLE TO ADC7802 AND ADS7803 • SINGLE SUPPLY: +5V OR +3.3V • LOW POWER: 14mW plus Power Down • SIGNAL-TO-(NOISE + DISTORTtON) RATIO OVER TEMPERATURE: 69dB min with fIN = 1kHz 66dB min with fm = SOkHz

The ADS7832 is a monolithíc CMOS 12-bit analogto-digital convcrter with interna] sample/hold and fourchannel multiplexer. It is designed and tested for full dynamic performance with input signáis to SOkHz. The 5V single-supply requirements and standard CS, RD, and WR control signáis make the part easy to use in microprocessor applications. Conversión results are available in two bytes through an 8-bit three-state output bus.

• FAST CONVERSIÓN TIME: 8.5^5 Including Acquisition (117kHz Sampling Rata) • FOUR-CHANNEL INPUT MULTIPLEXER

The ADS7832 is available in a 28-pin plástic DIP and 28-lead PLCC, fully specified for operation over the industrial -40°C to +85°C temperature range.

• AUTOCAL: No offset or Gatn Adjust Required

AOO

Calibration Microcontrolter and Memory

Address Latchand Decoder

¿¿ Anatog

n^

\

Mulüptoxer

ORD O WR OSFR

1

0 ^

Control Logic

\

í> AINOO AIN1 0 AIN20 A1N3O

oes

Ckx*

//

<

Three-State Input/Output

Capadla Arn*5í Sampling ADC

^

OBUSY \—r/ Data Bus

M»iltn9Mdrws:POBcw 11», Tuoon,AZ 85734 • SüwtAddr«:8730S.TucsonBh«l,Tii»on,AZ 85706 • T«I:(SM) 746-1111 • T C.btaBBRCORP - TritrB6fr«B1 - FAED

TEMPERATURE RANGE Specffi catión Storage

mA

4

Suppiy Current: IA Power Dissipation

1.5 ±10

Paraltel 12 Bits in Two Bytes Straight Binary 0.2- VD 0.8 -V D

DIGITAL TIMING Bus Access Time Bus Relinquish Time

VD

V V uA MA MA

±10

Power On or Power Failure During Normal Operation

POWER SUPPUES Supply Vottage for Specified Performance: VA

+0.8 VD +0.3V

90

All Other Inpuls Power Down Mode (SFR D3 HIGH)

IIH I¡H DK31TAL OUTPUTS Data Formal Data Coding VOL VOH Leakage Current Output Capadiance

UNITS

10

CLK

I,H

MAX

Power Up Mode or During Conversión Power Down Mode, No Dock Running -40 -65

3.3 3.3 2.5 300 7.5 50

37393 4625

ClockCycíes ClockCydes

83 83

ns ns

3 500

V V mA uA

mW uW

+85

°C

+150

°c

sfí These specifications need to be added based on performance of final silicon. NOTES: (1) All specificaüons in dB are referred to a full-scale input range. (2) Over this range, total error will typically nol exceed±1LSB. (3) In this mode, the ADS783 acquires the input stgnaJ fbr ffve dock cydes after a startcommand, before the input is held and conversión begins. (4) USB meansteast Significan! Bit. ForaOVto 5V input range, one LSB is 1.22mV. For a OV to 2.5V input range, one LSB is 610uV.

The information provjded herein is believed to be reltable; however, BURR-BROWN assumes no responsibility for inaccuracies or omissions. BURR-BROWN assumes no responsibility for the use of this intbrmatjon, and all use of such information shall be entirefy at the user's own risk. Pnces and specffications are sub)ec to change without notJce. No patent rights or licenses to any of the drcurts described herein are implied or granted to any third party. BURR-BROWN does no authorize or warrant any BURR-BROWN product for use in Irfe support devices and/or systems.

BURR-BfrOWN

ADS7832

B

SPECIFICATIONS ADS7832 Electrtcal Specifications with 5V Supply VA = V0 = 5V ±10%; VREF+ = 5.0V; VREF~ = AGND = DGND = OV; CLK = 1MHz extemal 50% ±2% Duly Cycle, TA = -40°C to +85°C, añer calibration at any temperalure, uníess otherwíse spectfied. ADS7832BP/ADS7832BN PARAMETER

CONDITIONS

MIN

TYP

RESOLUTION ANALOG INPUT Voltsge Input Rarige Input Capacitance On State Bias Curren! Off State Bias Current

VD^V^VHEF^SV

FIN=1kHz,V0*VA = VREF+ = 5V VREF = V A =5V

With Interna! Clock Using Recommended dock Componente StewRale Multiptexer SetHing Time to 1/2 LSB Muttiptexer Acoess Time SAMPL1NG DYNAMICS Ful I Power Bandwidth Aperture Jttter Aperture Delay

Bits

5

V PF

100 10 100

TA = +25°C TA = -40°C to +85°C

REFERENCE INPUT For Specified Performance:

THROUGHPUT SPEED Conversión Time With Extemal Clock {Induding Multiptexer Settling Time and Acquisition Time)

UNITS

12

40

On Resistanoe Muttiptexer Off Resistance Multiplexer ChanneJ Separation

VREF+ VREFFor Derated Performance^: VREF+ VREFInput Reference Curren!

0

MAX

nA nA

400 10 0.5

nA íl Mil LSB

VA 0

V V

(VREF+)-(VREH^2.5V 2.5 0 100

CLK = 2MHz CLK=1MHz CLK = SOOkHz TA = +25°C TA - -4Q"C to +85°C

VA 1 200

V V uA

8.5 17 34

fiS

30 30

SRF D2 LOW SFR 02 HIGH

US US

US

mV/(is

2

-3dB

US

0.5 20

US

4 10 2.5 5

MHz ps

ns

US

ns

DC ACCURACY Integral Nonlinearíty, A!l Channete

Drffertjntial Nonlinearíty No Missing Codes Gain Error Gain Error Drifl Offset Error

Offset Error Drift

ChanneMo-Channef Mismatch

Power Supply Sensftivity

BimR-BROWN»

ADS7832

SFR 02 LOW SFR D2 HIGH, Intemal Ckx* or Sampling Command Synchronous to Externa! Ctock SFR D2 HIGH, Sampling Command Asynchronous to Extemal Clock

±0.75

LSBW

±0.5

LSB

±0.6

LSB

±0.75

LSB

Guaranteed Al! Channels Between Calibration Óyeles Al! Channels SFR D2 LOW SFR D2 HIGH, Intemal Clock or Sampling Command Synchronous to Extemal dock SFR D2 HIGH, Sampling Command Asynchronous to Extemal Clock Between Calibration Cydes SFR D2 LOW SFR D2 HIGH, Interna! Clock or Sampling Command Synchronous to Extemal dock SFR 02 HIGH, Sampling Command Asynchronous to Extemal Clock SFR 02 LOW SFR D2 HIGH, Intemal Clock or Sampling Command Synchronous to Extemal dock SFR 02 HIGH, Sampling Command Asynchronous to Extemal Clock VD = VA = +5V ±10% (without recalibration)

±0.50

LSB

ppnVC

±0.2

±0.75 ±1

LSB LSB

±4

LSB

±0.2 ±0.5

ppm/°C ppm/°C

±1

ppnVC

±0.25 ±0.5

LSB LSB

±1.0

LSB

±0.125

LSB

SPECIFICATIONS (CONT) ADS7832 Electrícal Specffications with 5V Supply

VA = VD = 5V ±10%; VREF+ = 5V; VREr- = AGND = DGND ~ OV; CLK = 1MHz extemal 50% i2% Duty Cycte, TA = -40°C to +85"C, after calibration al any temperature, unte otherwise specified. ADS7832BP/ADS7832BN PARAMETER

CONDITIONS

MIN

TYP

f,N=1kHz f,N = SOkHz fin = SOkHz f,N = SOkHz f,N=1kHz f,N = SOkHz

69 66

71 69 -75 70 85 82

CLK CLK

-0.3

0.8

3.5

VD +0.3V

All Others AllOthers CAL (Intemal Pult-Up)

-0.3

0.8

2.4

VD -KJ.3V

MAX

UNITS

AC ACCURACY Stgnal-to-(Noise + Distortion) Ratio Tolal Hannonic Distortion Signal-to-Noise Ratio Spuríous Free Dynamic Range

DIGITAL INPUTS Voltage Levéis: V,L

VIH VIL

VIH Curren! Levéis:

(L

IH

IH

DK3ITAL OUTPUTS Data Format Data Coding

1SINK = 1 -6mA ISOURCE = 200uA High-Z State

uA nA

±100

0.4 ±1 4

pF

Power On or Power Faiiure During Normal Operation

DIGITAL TIMING Bus Access Time Bus Relinquish Time POWER SUPPLIES Supply Voltage for Specified Performance: VA

VD

5 5 2.5 300 14 50

Tested at 5.5V Tested at 5.5V Tested at 5.5V Tested at 5.5V Power Up Mode or During Conversión Power Down Mode, No Clock Running

TEMPERATURE RANGE Specifi catión Storage

V V uA

4

Hign-Z State

CALIBRATION TIMtNG Calibration Cycle Calibration Cycle

ID Power Dissipation

mA

1.5 ±10

Paratlel 1 2 Bits in Two Bytes Straight Binary

VOL VOH Leakage Curren! Output Capacitance

Supply Current: ÍA

V V V V uA MA uA

±10

All Other Inputs Power Down Mode (SFR D3 HIGH)

IH

dB dB dB dB

90

CLK

IH

dB

10

All Other Inputs SFR (Intemai Pull-Down)

IL

dBO>

-40 -65

37393 4625

Clock Cydes Clock Cydes

83 83

ns ns

5.5 5.5 5.5 500

V V mA uA

mW uW 85 150

DC

°c

^These specifitsitions need to be added based on performance of final sílicon. NOTES: (1) Aíf spedfications in dB are referred to a full-scate input range. (2) Over this range, total error will typically not exceed ±1 LSB. (3) In this mode, the ADS783 acquires Ihe input skjnal for five clock cydes after a start command, before the input is held and conversión begins. (4) LSB means Least Significan! Bit. For a OV to 5V input range, one LSB is 1,22mV. For a OV to 2.5V input range, one LSB is 610uV.

BUIW-BffOWM

ADS7832

E

PIN CONFIGURATIONS TopVtow

DIP

TopVfew

LCC

O I

2TJAGND

w

Q

tM

261 CAL (SHC)

<

-r

O

Q-

'

^

UL

<

<

«

Z

*

>

O

<

¿ Ü

26J

O

/

AIN3U=

M\M 24] AQ

vreF+r=

23~[cLK 1

22 IBUSY DGND|8 27JHBE

20] WR DTPiÓ" |= D6 MI

19 JCS 12 (O

O

13 3

gggngna] CO

CJ

i-

p

IQ

Q

Q

0

2

Ice

PACKAGE/ORDERING INFORMATION

PRODUCT ADS7832BN ADS7832BP

MÍNIMUM SK3NAL-TQ (NOÍSE + DISTORTION) RAT10, dB

INTEGRAL NONLJNEARITY MÁXIMUM LSB

SPECIFICATfON TEMPERATURE RANGE

PACKAGE

PACKAGE DRAWING NUMBERI1»

69 69

±3/4 ±3/4

-40°C to +85°C -40°C to +85°C

28-PÍn LCC 28-Pin Plástic DIP

251 215

NOTE: (1) For detailed drawing and dimensión table, pleaseseeend of data sheet, or Appendix C oí Burr-Brown IC DataBook.

A

ABSOLUTE MÁXIMUM RATINGS VA to Analog Ground VD to Digital Ground VA to VD Analog Ground to Digital Ground Control Inputs to Digital Ground Analog Input Vottage to Analog Ground Máximum Junction Temperature Intemal Power Dissipatíon Lead Temperature (soklering, 10s) (soWering, 3s) Thermaí Resístanoe, 0M Máximum Input Current to Any Pin ESD: Human Body Model

BURR-BROWN»

1 ADS7832

TV TV ±0.3V ±0.3V -0.3V to VD + 0.3V -0.3V to VA + 0.3V 150°C 875mW +260°C +360°C 75°C/W ±50mA 1kV

ELECTROSTATIC DISCHARGE SENSITIVITY

This integrated circuit can be damaged by ESD. Burr-Brown recommends that all integrated circuits be handled with appropriate precautions. Failure to observe proper handling and insíallation procedures can cause damage. ESD damage can range from subtle performance degradation to complete device failure. Precisión integrated circuits may be more susceptible to damage because very small parametric changes could cause the device not to meet its published spccifications.

PIN ASSIGNMENTS PIN*

ÑAME

1

SFR

2 toS

AINO to AIN3

6

VREF+

Posítive voltage reference ¡npuL Musí be < (VA + 0.3V).

7

VREF-

Negative vollage reférence input

e

DGND

Digital ground. DGND = OV.

9

VD

10to17

DOtoD7

10

D7

11 12 13 14 15 16 17

D6 D5 D4 D3 02 D1 DO

Data Bus Input/Output Pins. Norrnalry used to read output data. When SFR is LOW, these function as foHows: Data Bit 7 if HBE is LOW; if HBE is HIGH, acts as converter status pin and is HIGH duríng conversión or calibration, goes LOW after the conversión is completed. (Acts as an inverted BUSY). Data Bit 6 if HBE is LOW; LOW rf HBE is HIGH. Data Bit 5 if HBE is LOW; LOW if HBE is HIGH. Data Bit 4 if HBE is LOW; LOW if HBE is HIGH. Data Bit 3 if HBE is LOW; Data Bit 11 (MSB) if HBE is HIGH. Data Bit 2 if HBE ts LOW; Data Bit 10 rf HBE is HIGH. Data Bit 1 if HBE is LOW; Dala Bit 9 if HBE is HIGH. Data Bit 0 (LSB) if HBE is LOW; Data Bit 8 if HBE is HIGH. Read Input Active LOW; used to read the data outputs in combination with CS and HBE.

DESCRtPTION Special Funcüon Register. When connected to a microprocessor address pin, altows access to special functíons through DO to D7. If not used, connect to DGND. This pin has an interna! pull-down. Analog inputs. Channel 0 to channel 3.

Logic suppfy voltage. Must be < (VA + 0.3V) and applied after VA.

18

RD

19

CS

Chip Select Input Active LOW.

20

WR

Wríte InpuL Active LOW; used to start a new conversión and to setect an analog channel via address inputs AO and A1 in combination with CS. The minimum WR pulse LOW width is 100ns.

21

HBE

22

BUSY

23

CLK

24 to 25

AOtoAl

High Byte Enable. Used to setect high or low data output byte in combination with CS and RD, or to setect SFR. BUSY ts LOW during conversión or calibration. BUSY goes HIGH after the conversión is completed. Clock Input- FOT infernal or externa! dock operation. For externa! dock operation, connect to a 74HC-conipalibie dock source. For intemal dock operation, connect per the dock operation description. Address Inputs. Used to setect one of four analog input channels in combination with CS and WR. The address inputs are iatched on the rising edge of WR or CS. A1 LOW LOW HiGH H1GH

AO LOW HIGH LOW HIGH

Setected Channel AINO AIN1 AIN2 AIN3

26

CAL (SHC)

Calibration InpuL A calibration cyde is initiated when CAL is LOW. The minimum pulse width of CAL is 100ns. If not used, connect to VD. In this case calibration is onty initiated at power on, or with SFR. If D2 of the SFR is programmed HIGH, pin 26 wíll be an input to control the sample-to-hoM timing. A rising edge on pin 26 witl switch from sampte-mode to hokJ-mode and initiate a conversión. This pin has an intemal pull-up.

27

AGND

Anatog Ground. AGND = OV.

28

VA

Anatog Supply. Must be > (VD - 0.3V) and {(V,^ +) - 0.3V)

BURR-BItOWN»

ADS7832

E

ANEXO D

W-0168;fíev3; 7/95

+5V, Low-Power, Paralfef-fnput, l/o/tage-Output, 12-B/t DAC Features

General Descripción The MAX530 is a low-power, 12-bit. voltage-output digital-to-analog converter (DAC) that uses single +5V or dual ±5V supplies. This device has an on-chip vortage reference plus an ourput buffer amplífier. Operating current is only 250uA from a single +5V supply, making it ideal for portable and baítery-powered applications. In addition, the SSOP (Shrink-Small-Outline-Package) measures oniy 0.1 square inches, using less board área than an 8-pin DIP. 12-bit resolutton is achieved through láser trimming of íhe DAC, op amp, and reference. No further adjustments are necessary. Interna! gain-setting resistors can be used ío define a DAC output voitage range of OV ío +2.048V, OV to + 4.096V, or +2.048V. Four-quadrant multiplication is possible without íhe use of externa! resistors or op amps. The parallel logic inputs are double buffered and are compatible with 4-bit, 8-bit, and 16-bit microprocessors. For DACs with similar features but with a serial data interface, refer to the M AX531 /MAX538/MAX539 data shoet.

Applications Battery-Powered Daía-Conversion Products Mínimum Component-Count Anaiog Systems Digital Offset/Gain Adjustment Industria! Process Control Arbitran/ Function Generators Automatic Test Equipment Microprocessor-Controlled Caübration

• • • • • • • • • •

Buffered Voitage Output Intemal 2.048V Voltage Reference Opérales from Single +5V or Dual ±5V Supplies Low Power Consumption: 250uA Operating Curre ni 40uA Shutdown-Mode Current SSOP Package Saves Space Relativo Accuracy: ±1/2 LSB Max Over Temperatura Guaranteed Monotonlc Over Temperatura 4-Quadrant Multiplication with No Externa) Componente Power-On Reset Double-Buffered Parallel Logic Inputs

Orderíno; Information ERROR (LSB)

PART

TEMP. RANGE

PtN-PACKAGE

MAX530ACNG

O q Cto-t-70"C

24Nairowña5ücDlP

±1/2

MAX530BCNG

0°Cto+7(rC

24 Narrcv; Plaste DIP

±1

MAX530ACWG

0 D Cto-i70°C

24WideSO

±V2

MAX53QBCWG MAX53QACAG

0"Cto^70 0 C

24 Wide SO 24 SSOP

±1

24 SSOP

±1

Dice'

±1

MAX53QBCAG MAX53ÜBC/D

0°C to +70° C 0°C to +70°C 0°Cto-f70 u C

±1/2

Ordoríng Information continuad on last paga. ' Dice are tested ai fy = +25 °C, DC parameíers only.

Pin Confíguratíon

Functionaf Díagram TOP VIEW



D1/D9Q

**-S

D2/D10 [2

24JDO/D8 E3VDD

D3/D11 g

22]ROFS

yWyflXlyVI 21JRFB

W[4 05

U

06

11

MAX530

20J VOUT

ÜJVss l|] REFOUT

D7H

AO[B

I?] REFGNO

A1 H

16) LDÁC

WRgo

T5]CLR

05 íñ

14] AGND

DGND^I

13) REFIN

DIP/SO/SSOP _ Maxim Integratffd Products

Caff toff firee 1-8OO-998-88OO for free sampfes or literatura.

1

í ¡5 8

Low-Power, Paraffeí-fnput, VoJta0e~Output, 12-Bit DAC O «O

ABSOLUTE MÁXIMUM RATINGS

I

-0.3V, -0.3V, (VSS-0.3V). (VSS-0.3V), -0.3V, (Vss-O.SV). (VSS-0.3V).

VDD to DGND and VDD to AGND Vss to DGND and VSs to AGND VDDtoVsS AGNDtoDGMD REFGND to AGND Digital InputVottageto DGND REFIN REFOUT REFOUTto REFGND RFB ROFS

-0.3V, +6V -6V, +0.3V -0.3V. + 12V -0.3V, +0.3V (VDD + 0.3V) (VoD + 0.3V) (VDD + 0.3V) (VDD + 0.3V) (VDD + 0.3V) (VDD + 0.3V) (VDD + 0.3V)

VOUT to AGND (Note!) Vss. VDD Continuous Current, Any Input ±20mA Continuous Power Dissipation (TA = + 70°C) Narrow Rastic D1P (derale 13.33mW/°C above +70"C) 1067mW Wide SO (deratenjemwrc above+70°C) 941mW SSOP (derate 8.00mW/°C above + 70°C) 640mW Operatmg Temperature Ranges: MAX53CLC 0 D Cta+70°C MAX530_E__ -40°Cto-H85"C Storaye Temperature Range -65°C to +165°C Lead Temperature (soldering, TOsec) +300"C

Natal: The output may be shorted to VDD- Vss, DGND, or AGND if the continuous package power dissipation and current ratings are not exceeded. Typícai short-cif short-circuit currents are 20mA. Stresses beyond fijóse listad under "Absolute Máximum Ratings' may cause permanenr datnage ío ffie device. These are stress ratings only, and functiona!

ELECTRICAL CHARACTERISTICS--Single +5V Supply (VDD = sv ±10%, vss - ov, AGND = DGND = REFGND = ov, REFIN = 2.048V (extemai), RFB = ROFS - VOUT, CREFOUT

RL - lOkil, CL - 100pF, TA = TMIN to TMAX, unless otherwise noted.) PARAMETER STAHC PERFORMANCE Resolution Relative Accuracy Differenlial Nonlinearity Unipolar Offset Error

SYMBOL | N

DNL

Vos TCVOS

Unipolar Offset-Error Power-Supply Rejection

PSRR

Gain-tnoc Tetnperature Coefricient Gain-Error Power-Supply Rejection

|

GE

UNITS

MAX

Bits ±0.5

MAX530BC/BE

±1

Guaranteed monotonic MAX530_C/E VDD = 5V

0

1

LSB

±1

LSB

8

LSB

ppm/"C

3

4.5V

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.