Puerto Paralelo |

# Puerto Paralelo.
Copyright 2007: Juan Carlos Galarza Roca
Esta información es parte del Libro: "El Puerto Paralelo como interface de Entrada/Salida"

# Adquisición de datos analógicos con el temporizador NE555 (NE 555)

http://www.globu.net/

### Adquisición de datos analógicos con el temporizador NE555

Para leer señales analógicas, es necesario hacer la respectiva conversión a señal digital. El temporizador NE555 genera pulsos variables (tiene como respuesta una frecuencia) a partir de dos resistencias y un capacitor. Este enfoque de adquisición de datos implica los siguientes pasos:

> > 1. Adecuar la variable física en estudio para que se comporte como resistencia eléctrica
> > 2. Calcular los valores de la resistencia restante y el capacitor
> > 3. Conectar la salida del temporizador a uno de los bits del registro de estado
> > 4. Elaborar un programa que calcule la frecuencia a partir de los pulsos de entrada
> > 5. Realizar las mediciones con valores conocidos de referencia
> > 6. Construir un modelo de transformación de frecuencia a la variable en estudio (regresión, interpolación)

#### Descripción del temporizador NE555

Fig. Temporizador NE555

Alimentación

Vcc 5 voltios
Ground Tierra

La fuente de 5 voltios para alimentar este circuito se puede obtener directamente de la fuente de poder del PC, o del puerto de juegos (ver fuente de alimentación).

Circuito genérico

Fig. Circuito genérico

#### Modo de operación

El temporizador NE555 genera un pulso de acuerdo a los valores de dos resistencias y un capacitor.

La siguiente fórmula se utiliza para calcular el periodo de este pulso.

Donde:

Ra | : | Valor de la resistencia conectada a los pines 7 y 8
Rb | : | Valor de la resistencia conectada a los pines 2 y 7
Cap | : | Valor del capacitor polarizado conectado a tierra y a los pines 2 y 6

Como ejemplo, se evalúa la formula con los siguientes valores:
Ra : 540 ohmio
Rb : 620 ohmio
Cap : 1 microfaradio = Faradios

Resultando

T= 0.00123354 segundos

Lo que genera un pulso con una frecuencia de

La frecuencia calculada puede diferir de la frecuencia que se lee del temporizador NE555 por los efectos de la temperatura tanto en las resistencias como en el capacitor de este circuito.

En un caso de aplicación práctica, se deberá mantener fija la resistencia Ra y el Capacitor, de modo que la variable que se estudia sea la resistencia Rb. A medida que esta resistencia varíe, el temporizador generará diferentes frecuencias. La frecuencia generada está en función de las variaciones de la resistencia en estudio.

#### Programación

El siguiente algoritmo permite leer y calcular la frecuencia generada por el temporizador NE555.
/* Inicio */
ctd_pulso_alto =0
ctd_pulso_bajo =0
leer_tiempo_del_sistema

/* Bucle principal */
mientras el tiempo transcurrido no haya superado 1 segundo hacer
inicio
si bit_leido está en alto entonces
inicio
ctd_pulso_alto = ctd_pulso_alto+1
mientras bit_leido está en alto hacer
inicio
fin
fin
si bit_leido está en bajo entonces
inicio
ctd_pulso_bajo = ctd_pulso_bajo+1
mientras bit_leido está en bajo hacer
inicio
fin
fin
fin {del mientras}

/* Cálculos */
frecuencia:=( ctd_ pulso_alto+ ctd_pulso_bajo)/2

/* Fin */
fin

#### Ejemplo para un bulbo de temperatura (termómetro digital)

En este ejemplo se definen las variables del circuito genérico para realizar la lectura de temperatura con el uso de una termoresistencia.

La termoresistencia que se utiliza fue obtenida del bulbo de temperatura del sistema de control de refrigeración de un automóvil.

A continuación se describe el circuito con los parámetros específicos de esta práctica.

Circuito práctico

Fig. Circuito practico

La termoresistencia (bulbo) varia su resistencia de acuerdo a la temperatura. Al variar esta resistencia, el circuito genera una frecuencia también variable.

En este caso específico, resulta más sencillo realizar una serie de mediciones con la ayuda de un termómetro, de modo que se registre la frecuencia respectiva para cada medición.

Los siguientes datos se obtuvieron con un circuito como el descrito anteriormente, y con la ayuda de un termómetro de mercurio

Datos experimentales:

Temperatura (grados centígrados) | Frecuencia (hertz)
120.0 | 1500
89.0 | 870
82.0 | 820
70.0 | 725
60.0 | 640
40.0 | 460
35.8 | 420
33.8 | 405
30.0 | 366
27.0 | 339
24.7 | 318
22.5 | 297
20.2 | 280
10.0 | 204
0.0 | 135

A partir de estos datos se puede utilizar el siguiente algoritmo de interpolación:

/* Se definen los tipos de datos */

tipo puntos=es un registro con los tipos x,y de tipo real

y datos es una variable de ese tipo
datos es un arreglo de 1 a 50 de tipo puntos

/* Inicio */
Cargar el vector datos[i].x y datos[i].y con los valores de la tabla de
Datos experimentales.

Tama_vector tiene el número de filas de la tabla de datos experimentales

/* construir la función */
función interpolar(con parámetro num_buscado de tipo real) devuelve un dato de tipo real
variables i de tipo Entero
x1,x2,y1,y2 de tipo Real
salida de tipo Real
sale de tipo Booleano
inicio
i=1
sale=falso;
mientras (i<tama_vector) y (sale=false) hacer
inicio
si (num_buscado>=datos[i+1].y) y
(num_buscado<=datos[i].y) entonces
inicio
x1=datos[i].x
y1=datos[i].y
x2=datos[i+1].x
y2=datos[i+1].y
sale=verdadero
fin
i=i+1
fin
salida=0
si sale es verdadero entonces
inicio
salida=(x2-x1)/(y2-y1)*(num_buscado-y1)+x1
fin
interpolar=salida
fin
/* Utilizar */
Llamar a la función con la frecuencia leída previamente
Desplegar, hacer gráficas, etc.
/* Fin */