voltimetro digital

10
Proyectos de sistemas digitales 279 6.7. Voltímetro digital Diseñe un voltímetro digital que reciba una señal analógica de entrada comprendida entre 0 y 5V, y represente dicho valor en dos visualizadores de 7 segmentos, con una precisión de décima de voltio. 6.7.1. Diagrama de bloques La solución del problema la hemos dividido en cuatro bloques representados en la figura 6.30. Un primer bloque se encargará de la conversión de la señal analógica 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 visualización donde se mostrará el valor de tensión en dos visualizadores de siete segmentos. Para controlar las señales de los bloques anteriores y realizar la multiplexación del dato a visualizar, utilizaremos un circuito de control implementado en una GAL22V10. Bloque de Visualización D_OUT [3..0] SEL_U SEL_D Bloque Conversor /RD /WR /INTR RST CLK V in DB[7..0] (GAL22V10) DEC[3..0] Codificador Binario a BCD UNI[3..0] OE Bloque de Control FIGURA 6.30. Diagrama de bloques del voltímetro 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 interconexión con un microprocesador, figura 6.31. En la solución que planteamos, la interconexión se realizará con la GAL22V10 como circuito de control.

Upload: rodrigo-aleman

Post on 08-Aug-2015

21 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Voltimetro Digital

Proyectos de sistemas digitales 279

6.7. Voltímetro digital

Diseñe un voltímetro digital que reciba una señal analógica de entradacomprendida entre 0 y 5V, y represente dicho valor en dos visualizadores de 7segmentos, con una precisión de décima de voltio.

6.7.1. Diagrama de bloques

La solución del problema la hemos dividido en cuatro bloques representadosen la figura 6.30. Un primer bloque se encargará de la conversión de la señalanalógica en valores digitales. El valor digital obtenido, una vez convertido alformato adecuado mediante un bloque codificador binario a BCD y multiplexado,pasará a un bloque de visualización donde se mostrará el valor de tensión en dosvisualizadores de siete segmentos. Para controlar las señales de los bloquesanteriores y realizar la multiplexación del dato a visualizar, utilizaremos uncircuito de control implementado en una GAL22V10.

Bloque de

Visualización

D_OUT[3..0]

SEL_U

SEL_D

Bloque

Conversor /RD

/WR

/INTR

RST

CLK

Vin

DB[7..0]

(GAL22V10)

DEC[3..0]Codificador

Binarioa BCD

UNI[3..0]

OEBloque deControl

FIGURA 6.30. Diagrama de bloques del voltímetro digital.

6.7.2. Conversor A/D

El conversor utilizado, el ADC0804, posee tres entradas de control, /CS, /WRy /RD y una salida /INTR, que facilitan su interconexión con un microprocesador,figura 6.31. En la solución que planteamos, la interconexión se realizará con laGAL22V10 como circuito de control.

Page 2: Voltimetro Digital

280 Aplicaciones y problemas de electrónica digital

CS

RD

WR

CLKRCLKIN

VIN+VIN-

AGNDVREF/2

DGND INTR

DB7DB6DB5DB4DB3DB2DB1DB0

ADC0804+5V

2

3

1

19

4

10

6

89

7

VCC

5

1112131415161718

20

150pF

/RD

/WR

/INTR

10kΩ

Vin

DB[7..0]

FIGURA 6.31. Conversor ADC0804.

La señal /CS es la de habilitación del conversor. En nuestro caso y porsimplicidad, hemos conectado dicha entrada directamente a tierra. La señal /WRindica el inicio de una nueva conversión. La señal de salida /INTR nos indicacuándo se ha producido el final de la conversión y existe un nuevo datodisponible. Por último, la señal /RD permite leer el último dato convertido.

La figura 6.32 muestra el cronograma de funcionamiento del conversor. Elproceso de conversión A/D comienza cuando la señal /WR pasa al nivel bajo (1),momento en el cual la señal /INTR pasa al nivel alto, indicando que se ha iniciadoel proceso de conversión y, por tanto, que todavía no hay disponible un dato a lasalida. El inicio propiamente dicho de la conversión se produce cuando la señal/WR pasa de nuevo al nivel alto (2). Transcurrido un tiempo de conversión Tconv,la señal /INTR pasa al nivel bajo, indicando que hay un nuevo dato convertido.

La lectura del dato se lleva a cabo mediante la activación de la señal /RD.Mientras ésta permanece en nivel alto, la salida del conversor se encuentra en altaimpedancia. Teniendo en cuenta que durante el proceso de conversión el valordigital de salida no es el correcto, esta señal /RD permite poner dichas salidas enalta impedancia hasta alcanzar el final de la conversión.

En el instante en que /RD pasa al nivel bajo, se produce una habilitación deregistro paralelo-paralelo interno (4), y en consecuencia se obtiene a la salida eldato convertido. A su vez, la señal /INTR pasa al nivel alto (3), indicando que seha procedido a leer el dato del conversor. Al desactivar /RD la salida delconversor vuelve a alta impedancia (5).

Page 3: Voltimetro Digital

Proyectos de sistemas digitales 281

/WR

/INTR

/RD

DB[0..7]

Tconv

(1) (2)

(3)

(4) (5)

DATO

FIGURA 6.32. Cronograma de control del conversor.

El ADC0804 es un conversor de aproximaciones sucesivas que requiere deuna señal de reloj para su funcionamiento. El propio conversor dispone de uncircuito generador de reloj, cuya frecuencia de oscilación viene fijada por unaresistencia y un condensador externos. Para nuestra aplicación, donde lavelocidad de adquisición no es crítica, se ha elegido una frecuencia de 640kHz,dada por un valor de resistencia de 10kΩ y un condensador de 150pF, tal y comose representa en la figura 6.31.

La tensión fondo de escala, es decir, aquella tensión analógica de entradapara la cual se obtiene el máximo código de salida (FFh), viene fijada por unatensión de referencia (VREF/2), que se introduce externamente al conversor. Sidejamos al aire este pin de entrada del conversor, como es nuestro caso, elconversor entiende que la tensión de referencia es la tensión de alimentación. Deesta forma obtendremos un código digital FFh para una tensión de entrada de 5V.

El ADC0804 posee un modo de funcionamiento denominado free-running,que permite que el conversor esté continuamente convirtiendo. Para ello, bastacon conectar la señal /INTR de salida a la entrada /WR. Dicha opción sería válidapara la aplicación que presentamos, donde no es necesario conocer con precisiónel periodo de muestreo. La solución que se va a presentar consiste en el controlde dichas señales por parte de la GAL. Esta opción presenta como ventaja unamayor versatilidad a la hora de poder reaprovechar el diseño para otrasaplicaciones donde se requiera conocer con precisión la frecuencia de muestreo.

6.7.3. Codificador binario a BCD

El resultado proporcionado por el conversor no puede visualizarsedirectamente en los visualizadores de siete segmentos; es necesario realizar unaconversión de código binario a BCD. Para ello, vamos a generar una tabla deconversión almacenada en una memoria EPROM (27C256), lo quedenominaremos LUT (look-up table). El dato binario proporcionado por el

Page 4: Voltimetro Digital

282 Aplicaciones y problemas de electrónica digital

conversor se conectará al bus de direcciones de la memoria, una vez ha sidoregistrado por un registro 74HC573. Dicho dato servirá para seleccionar elcódigo 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 esquemático del conversor ADC0804junto con la EPROM y el registro paralelo/paralelo (74HC573), necesario paraevitar que mientras el conversor se encuentra en proceso de conversión, ladirección de la EPROM varíe y, en consecuencia, se visualicen datos erróneos.Este registro se habilita con la señal OE generada por el bloque de control, unavez se ha activado la señal /INTR.

1D 1Q2D 2Q3D 3Q4D 4Q5D 5Q6D 6Q7D 7Q

201918

16151413

74HC573

CS

RD

WR

CLKRCLKIN

VIN+VIN-

AGNDVREF/2

DGND INTR

DB7DB6DB5DB4DB3DB2DB1DB0

ADC0804+5V

2

3

1

194

10

6

89

7

VCC

5

1112131415161718

20

GND

1

2345678

150pF

A0A1A2A3A4A5A6

VCC

8D 8QC

+5V

A7A8A9A10

GND

VCC

+5V27C256

A12A13A14

DQ1DQ2DQ3DQ4DQ5DQ6DQ7DQ8

Vpp

+5V

CEOE

/RD/WR

/INTR

Vin

OE

UNIOE

9

10

1211

17

109876543

252421232

252714

A11

1112131516171819

28

12022

DEC

10kΩ

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 dirección 0000h y terminando en la 00FFh, es decir, los256 posibles valores dados por el conversor A/D. Dicha memoria tiene unalongitud de palabra de 8 bits, de forma que hemos almacenado en la parte bajadel byte el valor correspondiente a la décima de voltio (DEC), mientras que laparte alta almacena el valor de las unidades (UNI). Como es lógico, al tener querepresentar únicamente 51 valores distintos, y disponer de 256 posiciones dealmacenamiento, existirán varios bytes consecutivos de la memoria con el mismocódigo de salida.

La tabla de conversión se obtiene mediante la siguiente ecuación:

nnx ⋅=255

0,5)(

Page 5: Voltimetro Digital

Proyectos de sistemas digitales 283

siendo n la dirección de la memoria EPROM y x el contenido en esa dirección.El valor x(n) se ha truncado a un decimal, ya que el módulo visualizador tan solodispone de dos visualizadores de siete segmentos: uno correspondiente a lasunidades y otro a las décimas de voltio.

0000h 00 00 00 00 00 00 01 01 01 01 01 02 02 02 02 020010h 03 03 03 03 03 04 04 04 04 04 05 05 05 05 05 060020h 06 06 06 06 07 07 07 07 07 08 08 08 08 08 09 090030h 09 09 09 09 10 10 10 10 10 11 11 11 11 11 12 120040h 12 12 12 13 13 13 13 13 14 14 14 14 14 15 15 150050h 15 15 16 16 16 16 16 17 17 17 17 17 18 18 18 180060h 18 19 19 19 19 19 19 20 20 20 20 20 21 21 21 210070h 21 22 22 22 22 22 23 23 23 23 23 24 24 24 24 240080h 25 25 25 25 25 26 26 26 26 26 27 27 27 27 27 280090h 28 28 28 28 29 29 29 29 29 29 30 30 30 30 30 3100A0h 31 31 31 31 32 32 32 32 32 33 33 33 33 33 34 3400B0h 34 34 34 35 35 35 35 35 36 36 36 36 36 37 37 3700C0h 37 37 38 38 38 38 38 39 39 39 39 39 39 40 40 40000Dh 40 40 41 41 41 41 41 42 42 42 42 42 43 43 43 4300E0h 43 44 44 44 44 44 45 45 45 45 45 46 46 46 46 4600F0h 47 47 47 47 47 48 48 48 48 48 49 49 49 49 49 50

TABLA 6.4. Tabla de conversión almacenada en la EPROM.

6.7.4. Bloque de visualización

Antes de tratar el bloque de control implementado en la GAL22V10, vamos aestudiar el bloque de visualización, de modo que tengamos claro las funcionesque debe llevar a cabo la citada GAL. Al bloque de visualización le llega un datoen código BCD y dos señales que indican si dicho código debe mostrarse en elvisualizador de unidades (SEL_U) o décimas de voltio (SEL_D). Se ha utilizadoun único decodificador con objeto de ahorrar componentes. Ello implica lanecesidad de multiplexar las entradas de datos y de utilizar las dos señales decontrol antes mencionadas.

Page 6: Voltimetro Digital

284 Aplicaciones y problemas de electrónica digital

A

B

C

D

74LS49

abcdefg

SEL_U

SEL_D

RVisualizadores 7 segmentos cátodo común

R’

+5V

D_OUT1

D_OUT2

D_OUT3

D_OUT0

FIGURA 6.34. Bloque de visualización.

El núcleo fundamental lo constituyen dos visualizadores de siete segmentosen configuración cátodo común. Para mostrar el código BCD en cualquiera dedichos visualizadores es necesario un decodificador BCD a 7 segmentos.Teniendo en cuenta la configuración cátodo común de éstos, será necesarioseleccionar uno cuyas salidas sean activas en nivel alto, por ejemplo, el 74LS49.

La configuración se completa con dos transistores NPN que conectarán odesconectarán el cátodo de cada visualizador a tierra. Como sólo recibimos uncódigo BCD, sólo es necesario un decodificador BCD a 7 segmentos, siendo lasseñales SEL_U y SEL_D las que deciden en cual de los dos visualizadores sevisualizará el código BCD. Dichas señales son exclusivas en el sentido queúnicamente una de ellas se encuentra habilitada en cada instante. La señal que seencuentre activa saturará el transistor correspondiente, lo que permitirá el paso decorriente por los LEDs que constituyen el visualizador, y en consecuencia, lailuminación del número.

Dichas señales se irán alternando de forma que se visualizarán las décimas,luego las unidades, de nuevo las décimas, y así sucesivamente. En cada instantesólo hay un visualizador mostrando un dígito, pero si este proceso se hace losuficientemente rápido, por ejemplo, 100Hz, la impresión visual que obtendremoses que ambos visualizadores se encuentran iluminados a la vez.

Con objeto de limitar la corriente que circula por los LEDs de losvisualizadores se han colocado resistencias a la salida del decodificador.

Page 7: Voltimetro Digital

Proyectos de sistemas digitales 285

6.7.5. Bloque de control

El bloque de control tiene básicamente tres funciones fundamentales querealizar: el control del conversor A/D, la carga en el registro del bloque decodificación del dato convertido y la multiplexación del dato proporcionado pordicho bloque para su visualización.

Respecto al control del conversor, éste se lleva a cabo mediante las señales/WR, /RD y /INTR, tal y como ya hemos mencionado anteriormente. La carga delregistro paralelo-paralelo se lleva a cabo mediante la activación de la señal OE.Por último, el bloque de visualización necesita del dato multiplexado arepresentar denominado D_OUT, y las señales de multiplexado SEL_U y SEL_D.

Este bloque de control se ha implementado en una GAL22V10, cuyacodificación ABEL se ha estructurado en torno a una máquina de estados de tresestados. En el primero de ellos (INI) da comienzo el proceso de conversión,poniendo tanto la señal nWR como OE en nivel bajo. Posteriormente, tenemos unestado (CONV), donde se pone en nivel alto la señal nWR, dando comienzo elproceso de conversión. Una vez que estando en dicho estado se activa la señalnINTR, pasamos al último estado (FIN), donde habilitamos tanto la señal nRDpara la lectura del conversor, como la señal OE para la habilitación del registroparalelo-paralelo (figura 6.35).

nWR

nINTR

SEL_U

SEL_D

CLK

ESTADO

nRD

INI CONV FIN

OE

INI CONV FIN

FIGURA 6.35. Cronograma de activación de las señales de la GAL.

Page 8: Voltimetro Digital

286 Aplicaciones y problemas de electrónica digital

La visualización del resultado de la conversión en los visualizadores de sietesegmentos se hace de forma alterna, tal y como hemos explicado anteriormente, yllevada a cabo según el siguiente código:

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 hancodificado los estados de forma que las variables de estado (nWR y OE)coinciden con salidas de control.

module voltímetrotitle 'voltímetro digital';volt device 'p22v10';

" Entradas CLK, RST pin 1,2; D0,D1,D2,D3 pin 3,4,5,6; D4,D5,D6,D7 pin 7,8,9,10; nINTR pin 11;

" Salidas Y0,Y1,Y2,Y3 pin 22,21,20,19; OE,nWR,nRD pin 23,17,16; SEL_D,SEL_U pin 15,14;

" Definiciones D_DEC = [D3,D2,D1,D0]; D_UNI = [D7,D6,D5,D4]; D_OUT = [Y3,Y2,Y1,Y0]; ESTADO = [nWR, OE]; INI = [0, 0]; CONV = [1, 0]; FIN = [1, 1]; XXX = [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;

Page 9: Voltimetro Digital

Proyectos de sistemas digitales 287

else D_OUT = D_UNI;

nWR.clk = CLK; OE.clk = CLK; SEL_U.clk = CLK; SEL_D.clk = CLK; nWR.re = RST; OE.re = RST; SEL_U.re = RST; SEL_D.re = RST;

end voltímetro;

FIGURA 6.36. Listado ABEL del voltímetro digital.

6.7.6. Consideraciones temporales

Como ya se comentó en la introducción del capítulo 5, la frecuencia demuestreo de una señal analógica para su conversión a digital debe verificar elteorema de muestreo.

En esta aplicación que presentamos de diseño de un voltímetro digital, dondeun observador lee la tensión en cada instante, la frecuencia de variación de laseñal analógica a medir (y, en consecuencia, la frecuencia de muestreo) no puedeser muy alta, puesto que el ojo no será capaz de seguir dichas variaciones (losvisualizadores de 7 segmentos cambiarán muy rápidamente, de forma que el ojo,al integrar dichas variaciones, percibiría un resultado ininteligible).

Por otra parte, y debido al multiplexado del dato en los visualizadores, lafrecuencia de refresco debe ser suficientemente alta como para que no se percibael parpadeo de los mismos. Como ya hemos comentado anteriormente, unafrecuencia de refresco de 100Hz sería más que suficiente. Por tanto, y teniendopresente que hay dos visualizadores, se elige una fCLK de 200Hz para el bloque decontrol. La tabla 6.5 representa los parámetros temporales del conversorutilizado.

Símbolo Parámetro Mín Máx Uni

fCLK Frecuencia de reloj 100 800 kHz

Tconv Tiempo de conversión 62 73 TCLK

tW Anchura del pulso /WR 100 ns

tacc Tiempo de acceso 200 ns

t1h, t0h Retraso Hi-Z 250 ns

tWI, tRI Retraso en deshab. /INTR 450 ns

TABLA 6.5. Parámetros temporales del conversor.

Page 10: Voltimetro Digital

288 Aplicaciones y problemas de electrónica digital

/WR

/INTR

/RD

DB[0..7]

Tconv

DATO

tW

tWI

tacc

tRI

t1h,t0h

FIGURA 6.37. Cronograma de control del conversor.

Analizando los parámetros temporales de la tabla 6.5, correspondientes a lasseñales del conversor representadas en la figura 6.37, comprobamos que lamáquina de estados requiere un único ciclo CONV.

Recordemos que el tiempo de conversión máximo Tconvmax, viene expresadoen periodos del reloj interno del conversor, fijado por el circuito RC de la figura6.33. Como ya se comentó anteriormente, los valores de R y C elegidosproporcionan una frecuencia de 640kHz, de forma que tenemos:

sz

Tconvmax µ114kH640

173 =⋅=

Si se utiliza un reloj de mayor frecuencia, la conversión duraría más de unciclo CONV, por ello se ha establecido la condición de salto al estado FIN enfunción de la señal nINTR.