Está en la página 1de 8

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERÍA ELECTRÓNICA Y ELÉCTRICA

CURSO: SEÑALES Y SISTEMAS


LABORATORIO N° 2

LECTURA ANALÓGICA, PROCESO Y DIGITALIZACIÓN DE SEÑAL


CARDIACA

PRIMERA FASE: CAPTURA DE SEÑAL ANALOGICA


La señal analógica la podemos presentar al Arduino en uno de sus pines de
entrada analógica A0, A1, A2, A3, A4, A5 por intermedio del contacto móvil de un
potenciómetro cuyos extremos se conectan a tierra y a una fuente de 5 voltios; el
arduino lee el valor numérico presentado al PIN determinado, con una resolución
de 10 bits que es el número de bits con el que
trabaja el arduino.

Si son 10 bits, la señal analógica tiene la


posibilidad de tener 1024 valores que van a
ser posibles por combinaciones, esto es

10
2 =1024

La que va ingresando punto por punto (lógicamente esto va consumiendo tiempo)


entonces:
Este número 1024 son las posibles combinaciones de valores que se tienen
disponibles para 10 bits, las que corresponden a 1024 posiciones del vástago
móvil del potenciómetro y son valores numéricos y si se incluye el cero la
posición final sería la correspondiente a 1023

Es decir que arduino puede distinguir solo 1024 niveles incluido cero

(notar que se está hablando solo de valores enteros ¿esos valores ya fueron
cuantificados a valores enteros?)

Eso, se debe tomar en cuenta que son valores numéricos, y no valores de voltaje,
ahora si consideramos que un arduino se alimenta con 5 Voltios, los valores
en voltaje que se le puede presentar en la entrada de cualquier pin analógico
debe ser entre 0 y hasta 5 voltios como límite máximo; por tanto nos toca
hacer una regla de correspondencia:

5 x(voltaje)
=
1023 valor numerico que corresponde al valor de voltaje presentado

Luego:

numerico∗5
x (voltaje)=valor
1023

La esencia es que el arduino no lo ve como voltaje sino que lo ve como un


valor numérico que corresponde a un juego de 10 bits que corresponde al
voltaje que en forma manual se le está presentando con el potenciómetro,
lo que se ve en el monitor serie:
1023∗x (voltaje)
valor numerico=
5

0 t

Y van ingresando en serie. (Consumiendo tiempo…todo consume


tiempo)

Y la velocidad de ingreso es a razón de 9600 baudios es decir 9600


bits/segundo

Como la velocidad es rápida para la PC, u ordenador, se debe esperar y


ese es EL TIME DELAY que va en todos los códigos por ejemplo

DELAY (200) //Pausa de 200 milisegundos

EJEMPLO DE CODIGO DE MEDICION DE DATOS CON


ARDUINO

Analog Read (pin)

Valor=Analog Read (pin) //asigna a la variable Valor, el valor


numérico leído desde la entrada ‘pin’
Viendo en arduino

ar=arduino(‘COM5’);// ar = arduino (‘COM 5’);El arduino está


conectado al puerto 5 de la PC

ar.analogRead (0)// se lee el valor presentado en la entrada análoga


cero [A0], que en este caso es el valor 724

ans= 724// ahora, como sabemos que trabajamos con 10 bits: 2^10

ans= 1024 // Este número está representando 1024 posiciones y si


se incluye el cero la posición final sería la correspondiente a 1023

2^10-1

ans= 1023

[0 :1023] // Entonces, se va tener datos entre 0 y 1023, lo que


podemos comprobar con la instrucción length

Length(ans)

ans= 1024

Ahora, nos preparamos para introducir datos por el pin cero tomados
por el vástago central del potenciómetro, los valores extremos son los
valores que corresponden a 0 y 5 voltios
La cuantificación es desde 0 hasta 5 voltios, este último corresponde a
la posición 1023.

ar.analogRead(0)// Solo leemos un dato en el puerto cero con la


instrucción

Obtenemos

ans=

724

Luego, se convierte ese valor leído a voltaje según el rango que


tenemos disponible y esa tarea se la damos al arduino con esta
instrucción:

dat= ar.analogRead(0)*5/1023 //724*5/1023=3.5386

y le pedimos que la asigne a la variable dat

dat=3.5386
Rotando el potenciómetro entre sus dos posiciones extremas,
probamos la lectura mínima y máxima

dat= ar.analogRead(0)*5/1023 //nos dará:

dat=0 y dat= 5

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

En forma de código podría quedar como:

value1 = analogRead (analogPin1); //captura del valor de sensor


analógico (0-1023)
serialWrite(treatValue(value1)); //volcado al puerto serie 8-bits
int treatValue(int data) {
return (data * 9 / 1024) + 48;// fórmula de transformación
}

Otra fórmula sería dividiendo por 4 ¿Esto es correcto? (1024/256) los


valores capturados de los sensores analógicos, para convertirlos en
valor de byte válido (0 - 255).

value = analog Read(analogPin)/4;


serial Write(value);
EJERCICIO:

Viendo en matlab

l1=line=(nan,nan,’color’,’r’,’LineWidth’,2) //esto es un objeto de línea donde


se da los valores cartesianos indefinidos nan,nan como no tenemos todavía
ningún dato?

Clear all
ar = arduino (‘COM 5’);% El arduino está conectado al puerto 5 de la
PC
Fs = 50; % Frecuencia de muestreo (se habla de frecuencia de
muestreo porque se va introducir señal?)
N =1000; % Tamaño del vector (1000 muestras?)
Y = zeros (N, 1); %Vector de entrada
t= linspace (0, (N-1) /Fs, N) ; % La base de tiempo va desde 0 hasta
(N-1)/Fs que sería: N-1 quitándole el espacio del cero dividido entre el
número de muestras por cada segundo que nos devolvería tiempo; N
es el Número de elementos
l1=line=(nan,nan,’color’,’r’,’LineWidth’,2) //esto es un objeto de línea
donde se da los valores cartesianos indefinidos nan,nan, como no tenemos
todavía ningún dato?

y lim ( [-.1 5.1] ) % indica los límites de la gráfica en el eje y


x lim ( [0 (N-1) /Fs] )
grid

while 1 % Es para que los haga infinitas veces


if toc> 1/Fs
tic
y(1: end-1) = y(2:end);
y(end) = ar . analogRead(0)*5/1023; % 5/1023 es factor de
normalización
set (11, ’XData’ , t,’ YData’ , y) % Para la gráfica X Data es t é Y Data
es Y
drawnow % Para que grafique y actualice las graficas
end

end

TAREA 01:

PRIMERA FASE

Realizar la captura y visualización de señal analógica utilizando Arduino,

Mostrar resultados, (curvas y señales capturadas)

Nota:

Pueden utilizar proteus o cualquier otra herramienta de simulación de


circuitos electrónicos.

FECHA DE ENTREGA DE AVANCES. - 03 de Octubre del 2023

Profesor:

Leopoldo Guillén Saravia


Maestro en Ingeniería Biomédica

También podría gustarte