You are on page 1of 10

Proyectos de sistemas digitales

279

6.7. Voltmetro digital


Disee un voltmetro digital que reciba una seal analgica de entrada comprendida entre 0 y 5V, y represente dicho valor en dos visualizadores de 7 segmentos, con una precisin de dcima de voltio.

6.7.1. Diagrama de bloques


La solucin del problema la hemos dividido en cuatro bloques representados en la figura 6.30. Un primer bloque se encargar de la conversin de la seal analgica en valores digitales. El valor digital obtenido, una vez convertido al formato adecuado mediante un bloque codificador binario a BCD y multiplexado, pasar a un bloque de visualizacin donde se mostrar el valor de tensin en dos visualizadores de siete segmentos. Para controlar las seales de los bloques anteriores y realizar la multiplexacin del dato a visualizar, utilizaremos un circuito de control implementado en una GAL22V10.
CLK RST D_OUT[3..0] DB[7..0] DEC[3..0] Codificador UNI[3..0] Binario OE a BCD Bloque de Control (GAL22V10) SEL_U SEL_D Bloque de Visualizacin

Vin

Bloque Conversor

/RD /WR /INTR

FIGURA 6.30. Diagrama de bloques del voltmetro digital.

6.7.2. Conversor A/D


El conversor utilizado, el ADC0804, posee tres entradas de control, /CS, /WR y /RD y una salida /INTR, que facilitan su interconexin con un microprocesador, figura 6.31. En la solucin que planteamos, la interconexin se realizar con la GAL22V10 como circuito de control.

280

Aplicaciones y problemas de electrnica digital


+5V /RD /WR 150pF 10k
2 3 1 19 4 6 7 8 9 10

ADC0804 VCC RD WR CS CLKR CLKIN VIN+ VINAGND VREF/2 DGND DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7

20 18 17 16 15 14 13 12 11

Vin

DB[7..0] INTR
5

/INTR

FIGURA 6.31. Conversor ADC0804.

La seal /CS es la de habilitacin del conversor. En nuestro caso y por simplicidad, hemos conectado dicha entrada directamente a tierra. La seal /WR indica el inicio de una nueva conversin. La seal de salida /INTR nos indica cundo se ha producido el final de la conversin y existe un nuevo dato disponible. Por ltimo, la seal /RD permite leer el ltimo dato convertido. La figura 6.32 muestra el cronograma de funcionamiento del conversor. El proceso de conversin A/D comienza cuando la seal /WR pasa al nivel bajo (1), momento en el cual la seal /INTR pasa al nivel alto, indicando que se ha iniciado el proceso de conversin y, por tanto, que todava no hay disponible un dato a la salida. El inicio propiamente dicho de la conversin se produce cuando la seal /WR pasa de nuevo al nivel alto (2). Transcurrido un tiempo de conversin Tconv, la seal /INTR pasa al nivel bajo, indicando que hay un nuevo dato convertido. La lectura del dato se lleva a cabo mediante la activacin de la seal /RD. Mientras sta permanece en nivel alto, la salida del conversor se encuentra en alta impedancia. Teniendo en cuenta que durante el proceso de conversin el valor digital de salida no es el correcto, esta seal /RD permite poner dichas salidas en alta impedancia hasta alcanzar el final de la conversin. En el instante en que /RD pasa al nivel bajo, se produce una habilitacin de registro paralelo-paralelo interno (4), y en consecuencia se obtiene a la salida el dato convertido. A su vez, la seal /INTR pasa al nivel alto (3), indicando que se ha procedido a leer el dato del conversor. Al desactivar /RD la salida del conversor vuelve a alta impedancia (5).

Proyectos de sistemas digitales

281

/WR (1) /INTR Tconv /RD (4) DB[0..7] DATO (5) (3) (2)

FIGURA 6.32. Cronograma de control del conversor.

El ADC0804 es un conversor de aproximaciones sucesivas que requiere de una seal de reloj para su funcionamiento. El propio conversor dispone de un circuito generador de reloj, cuya frecuencia de oscilacin viene fijada por una resistencia y un condensador externos. Para nuestra aplicacin, donde la velocidad de adquisicin no es crtica, se ha elegido una frecuencia de 640kHz, dada por un valor de resistencia de 10k y un condensador de 150pF, tal y como se representa en la figura 6.31. La tensin fondo de escala, es decir, aquella tensin analgica de entrada para la cual se obtiene el mximo cdigo de salida (FFh), viene fijada por una tensin de referencia (VREF/2), que se introduce externamente al conversor. Si dejamos al aire este pin de entrada del conversor, como es nuestro caso, el conversor entiende que la tensin de referencia es la tensin de alimentacin. De esta forma obtendremos un cdigo digital FFh para una tensin de entrada de 5V. El ADC0804 posee un modo de funcionamiento denominado free-running, que permite que el conversor est continuamente convirtiendo. Para ello, basta con conectar la seal /INTR de salida a la entrada /WR. Dicha opcin sera vlida para la aplicacin que presentamos, donde no es necesario conocer con precisin el periodo de muestreo. La solucin que se va a presentar consiste en el control de dichas seales por parte de la GAL. Esta opcin presenta como ventaja una mayor versatilidad a la hora de poder reaprovechar el diseo para otras aplicaciones donde se requiera conocer con precisin la frecuencia de muestreo.

6.7.3. Codificador binario a BCD


El resultado proporcionado por el conversor no puede visualizarse directamente en los visualizadores de siete segmentos; es necesario realizar una conversin de cdigo binario a BCD. Para ello, vamos a generar una tabla de conversin almacenada en una memoria EPROM (27C256), lo que denominaremos LUT (look-up table). El dato binario proporcionado por el

282

Aplicaciones y problemas de electrnica digital

conversor se conectar al bus de direcciones de la memoria, una vez ha sido registrado por un registro 74HC573. Dicho dato servir para seleccionar el cdigo de salida a representar en los visualizadores de siete segmentos, que saldr por el bus de datos de la EPROM. En la figura 6.33 se ha representado el esquemtico del conversor ADC0804 junto con la EPROM y el registro paralelo/paralelo (74HC573), necesario para evitar que mientras el conversor se encuentra en proceso de conversin, la direccin de la EPROM vare y, en consecuencia, se visualicen datos errneos. Este registro se habilita con la seal OE generada por el bloque de control, una vez se ha activado la seal /INTR.
ADC0804 /RD /WR 150pF 10k Vin
2 3 1 19 4 6 7 8 9

+5V
20 18 17 16 15 14 13 12 11 2 3 4 5 6 7 8 9 1 10

RD WR CS CLKR CLKIN VIN+ VIN-

VCC DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7

74HC573
1D 2D 3D 4D 5D 6D 7D 8D OE GND

+5V
10 9 8 7 6 5 4 3 25 24 21 23 2 25 27 14

27C256
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 GND VCC DQ1 DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 DQ8

+5V
28 11 12 13 15 16 17 18 19

VCC 20 1Q 19 2Q 18 3Q 17 4Q 16 5Q 15 6Q 14 7Q 13 8Q 12 C 11

DEC UNI

AGND VREF/2 10 DGND INTR

+5V
Vpp 1 CE 20 OE 22

/INTR

OE

FIGURA 6.33. Conversor A/D junto con bloque codificador.

La memoria EPROM almacena los datos representados en la tabla 6.4, comenzando desde la direccin 0000h y terminando en la 00FFh, es decir, los 256 posibles valores dados por el conversor A/D. Dicha memoria tiene una longitud de palabra de 8 bits, de forma que hemos almacenado en la parte baja del byte el valor correspondiente a la dcima de voltio (DEC), mientras que la parte alta almacena el valor de las unidades (UNI). Como es lgico, al tener que representar nicamente 51 valores distintos, y disponer de 256 posiciones de almacenamiento, existirn varios bytes consecutivos de la memoria con el mismo cdigo de salida. La tabla de conversin se obtiene mediante la siguiente ecuacin: x( n) = 5,0 n 255

Proyectos de sistemas digitales

283

siendo n la direccin de la memoria EPROM y x el contenido en esa direccin. El valor x(n) se ha truncado a un decimal, ya que el mdulo visualizador tan solo dispone de dos visualizadores de siete segmentos: uno correspondiente a las unidades y otro a las dcimas de voltio.
0000h 0010h 0020h 0030h 0040h 0050h 0060h 0070h 0080h 0090h 00A0h 00B0h 00C0h 000Dh 00E0h 00F0h 00 03 06 09 12 15 18 21 25 28 31 34 37 40 43 47 00 03 06 09 12 15 19 22 25 28 31 34 37 40 44 47 00 03 06 09 12 16 19 22 25 28 31 34 38 41 44 47 00 03 06 09 13 16 19 22 25 28 31 35 38 41 44 47 00 03 07 10 13 16 19 22 25 29 32 35 38 41 44 47 00 04 07 10 13 16 19 22 26 29 32 35 38 41 44 48 01 04 07 10 13 16 19 23 26 29 32 35 38 41 45 48 01 04 07 10 13 17 20 23 26 29 32 35 39 42 45 48 01 04 07 10 14 17 20 23 26 29 32 36 39 42 45 48 01 04 08 11 14 17 20 23 26 29 33 36 39 42 45 48 01 05 08 11 14 17 20 23 27 30 33 36 39 42 45 49 02 05 08 11 14 17 20 24 27 30 33 36 39 42 46 49 02 05 08 11 14 18 21 24 27 30 33 36 39 43 46 49 02 05 08 11 15 18 21 24 27 30 33 37 40 43 46 49 02 05 09 12 15 18 21 24 27 30 34 37 40 43 46 49 02 06 09 12 15 18 21 24 28 31 34 37 40 43 46 50

TABLA 6.4. Tabla de conversin almacenada en la EPROM.

6.7.4. Bloque de visualizacin


Antes de tratar el bloque de control implementado en la GAL22V10, vamos a estudiar el bloque de visualizacin, de modo que tengamos claro las funciones que debe llevar a cabo la citada GAL. Al bloque de visualizacin le llega un dato en cdigo BCD y dos seales que indican si dicho cdigo debe mostrarse en el visualizador de unidades (SEL_U) o dcimas de voltio (SEL_D). Se ha utilizado un nico decodificador con objeto de ahorrar componentes. Ello implica la necesidad de multiplexar las entradas de datos y de utilizar las dos seales de control antes mencionadas.

284
74LS49 D_OUT0 D_OUT1 D_OUT2 D_OUT3 A B C D a b c d e f g

Aplicaciones y problemas de electrnica digital


Visualizadores 7 segmentos ctodo comn R

R SEL_U SEL_D

+5V

FIGURA 6.34. Bloque de visualizacin.

El ncleo fundamental lo constituyen dos visualizadores de siete segmentos en configuracin ctodo comn. Para mostrar el cdigo BCD en cualquiera de dichos visualizadores es necesario un decodificador BCD a 7 segmentos. Teniendo en cuenta la configuracin ctodo comn de stos, ser necesario seleccionar uno cuyas salidas sean activas en nivel alto, por ejemplo, el 74LS49. La configuracin se completa con dos transistores NPN que conectarn o desconectarn el ctodo de cada visualizador a tierra. Como slo recibimos un cdigo BCD, slo es necesario un decodificador BCD a 7 segmentos, siendo las seales SEL_U y SEL_D las que deciden en cual de los dos visualizadores se visualizar el cdigo BCD. Dichas seales son exclusivas en el sentido que nicamente una de ellas se encuentra habilitada en cada instante. La seal que se encuentre activa saturar el transistor correspondiente, lo que permitir el paso de corriente por los LEDs que constituyen el visualizador, y en consecuencia, la iluminacin del nmero. Dichas seales se irn alternando de forma que se visualizarn las dcimas, luego las unidades, de nuevo las dcimas, y as sucesivamente. En cada instante slo hay un visualizador mostrando un dgito, pero si este proceso se hace lo suficientemente rpido, por ejemplo, 100Hz, la impresin visual que obtendremos es que ambos visualizadores se encuentran iluminados a la vez. Con objeto de limitar la corriente que circula por los LEDs de los visualizadores se han colocado resistencias a la salida del decodificador.

Proyectos de sistemas digitales

285

6.7.5. Bloque de control


El bloque de control tiene bsicamente tres funciones fundamentales que realizar: el control del conversor A/D, la carga en el registro del bloque de codificacin del dato convertido y la multiplexacin del dato proporcionado por dicho bloque para su visualizacin. Respecto al control del conversor, ste se lleva a cabo mediante las seales /WR, /RD y /INTR, tal y como ya hemos mencionado anteriormente. La carga del registro paralelo-paralelo se lleva a cabo mediante la activacin de la seal OE. Por ltimo, el bloque de visualizacin necesita del dato multiplexado a representar denominado D_OUT, y las seales de multiplexado SEL_U y SEL_D. Este bloque de control se ha implementado en una GAL22V10, cuya codificacin ABEL se ha estructurado en torno a una mquina de estados de tres estados. En el primero de ellos (INI) da comienzo el proceso de conversin, poniendo tanto la seal nWR como OE en nivel bajo. Posteriormente, tenemos un estado (CONV), donde se pone en nivel alto la seal nWR, dando comienzo el proceso de conversin. Una vez que estando en dicho estado se activa la seal nINTR, pasamos al ltimo estado (FIN), donde habilitamos tanto la seal nRD para la lectura del conversor, como la seal OE para la habilitacin del registro paralelo-paralelo (figura 6.35).
CLK nWR nINTR OE nRD SEL_U SEL_D ESTADO INI CONV FIN INI CONV FIN

FIGURA 6.35. Cronograma de activacin de las seales de la GAL.

286

Aplicaciones y problemas de electrnica digital

La visualizacin del resultado de la conversin en los visualizadores de siete segmentos se hace de forma alterna, tal y como hemos explicado anteriormente, y llevada a cabo segn el siguiente cdigo:
SEL_D := !SEL_D; SEL_U := SEL_D; when (SEL_D==1) then D_OUT = D_DEC; else D_OUT = D_UNI;

Las ecuaciones en ABEL se representan en la figura 6.36, donde se han codificado los estados de forma que las variables de estado (nWR y OE) coinciden con salidas de control.
module voltmetro title 'voltmetro digital'; volt device 'p22v10'; " Entradas CLK, RST D0,D1,D2,D3 D4,D5,D6,D7 nINTR " Salidas Y0,Y1,Y2,Y3 OE,nWR,nRD SEL_D,SEL_U " Definiciones D_DEC D_UNI D_OUT ESTADO INI CONV FIN XXX = = = = = = = = pin pin pin pin pin pin pin 1,2; 3,4,5,6; 7,8,9,10; 11; 22,21,20,19; 23,17,16; 15,14;

[D3,D2,D1,D0]; [D7,D6,D5,D4]; [Y3,Y2,Y1,Y0]; [nWR, OE]; [0, 0]; [1, 0]; [1, 1]; [0, 1];

state_diagram ESTADO state INI: goto CONV; state CONV: if (nINTR==0) then FIN else CONV; state FIN: goto INI; state XXX: goto INI; equations nRD = !OE; SEL_D := !SEL_D; SEL_U := SEL_D; when (SEL_D==1) then D_OUT = D_DEC;

Proyectos de sistemas digitales


else D_OUT = D_UNI; nWR.clk = CLK; nWR.re = RST; end voltmetro; FIGURA 6.36. Listado ABEL del voltmetro digital. OE.clk = CLK; OE.re = RST; SEL_U.clk = CLK; SEL_U.re = RST;

287

SEL_D.clk = CLK; SEL_D.re = RST;

6.7.6. Consideraciones temporales


Como ya se coment en la introduccin del captulo 5, la frecuencia de muestreo de una seal analgica para su conversin a digital debe verificar el teorema de muestreo. En esta aplicacin que presentamos de diseo de un voltmetro digital, donde un observador lee la tensin en cada instante, la frecuencia de variacin de la seal analgica a medir (y, en consecuencia, la frecuencia de muestreo) no puede ser muy alta, puesto que el ojo no ser capaz de seguir dichas variaciones (los visualizadores de 7 segmentos cambiarn muy rpidamente, de forma que el ojo, al integrar dichas variaciones, percibira un resultado ininteligible). Por otra parte, y debido al multiplexado del dato en los visualizadores, la frecuencia de refresco debe ser suficientemente alta como para que no se perciba el parpadeo de los mismos. Como ya hemos comentado anteriormente, una frecuencia de refresco de 100Hz sera ms que suficiente. Por tanto, y teniendo presente que hay dos visualizadores, se elige una fCLK de 200Hz para el bloque de control. La tabla 6.5 representa los parmetros temporales del conversor utilizado.
Smbolo fCLK Tconv tW tacc t1h, t0h tWI, tRI Parmetro Frecuencia de reloj Tiempo de conversin Anchura del pulso /WR Tiempo de acceso Retraso Hi-Z Retraso en deshab. /INTR Mn 100 62 100 Mx 800 73 200 250 450 Uni kHz TCLK ns ns ns ns

TABLA 6.5. Parmetros temporales del conversor.

288
/WR tW /INTR tWI

Aplicaciones y problemas de electrnica digital

Tconv

tRI

/RD DB[0..7] tacc t1h,t0h


FIGURA 6.37. Cronograma de control del conversor.

DATO

Analizando los parmetros temporales de la tabla 6.5, correspondientes a las seales del conversor representadas en la figura 6.37, comprobamos que la mquina de estados requiere un nico ciclo CONV. Recordemos que el tiempo de conversin mximo Tconvmax, viene expresado en periodos del reloj interno del conversor, fijado por el circuito RC de la figura 6.33. Como ya se coment anteriormente, los valores de R y C elegidos proporcionan una frecuencia de 640kHz, de forma que tenemos: Tconvmax = 73 1 = 114s 640kHz

Si se utiliza un reloj de mayor frecuencia, la conversin durara ms de un ciclo CONV, por ello se ha establecido la condicin de salto al estado FIN en funcin de la seal nINTR.

You might also like