Você está na página 1de 20

UNIVERSIDAD POLITCNICA DE

PUEBLA
ORGANISMO PBLICO DESCENTRALIZADO DEL ESTADO DE
PUEBLA

INGENIERIA MECATRNICA
MECATRNICA 5 MB
Proyecto tarjeta de adquisicin de datos
(DAQ)
PRESENTA:
Baez Gonzalez Rafael
Castro Daz Ashael Jonathan
Flores Quiroz Juan
Guevara Vela Jos Antonio
Hebreo Castellano Siloni

PROFESOR:
Mtro. RAFAEL ROJAS RODRGUEZ
2 de Mayo de 2016

Introduccin
La adquisicin de datos (DAQ) es el proceso de medir con una PC un fenmeno
elctrico o fsico como voltaje, corriente, temperatura, presin o sonido. Un
sistema DAQ consiste de sensores, hardware de medidas DAQ y una PC con
software programable. Comparados con los sistemas de medidas tradicionales, los
sistemas DAQ basados en PC aprovechan la potencia del procesamiento, la
productividad, la visualizacin y las habilidades de conectividad de las PCs
estndares en la industria proporcionando una solucin de medidas ms potente,
flexible y rentable.
En este proyecto los fenmenos fsicos en los cuales nos enfocamos para realizar
sus mediciones fueron la temperatura, humedad y el caudal a travs de una
tubera por medio de sensores analgicos de temperatura como lo son los LM35,
sensores digitales de temperatura y humedad DHT11 y el sensor de caudal YFS201 que de igual manera es digital.
Mediante la plataforma de pruebas arduino pudimos adquirir las seales de los
sensores para que as el software Matlab los pudiera procesar, para as
posteriormente analizarlos mediante graficas.

Objetivo
Se pretende que con esta investigacin se tenga un conocimiento de los aspectos
bsicos de los sensores , principalmente de su funcionamiento y comportamiento.
El conocimiento relativo sobre los sensores se extiende en gran medida pero
el objetivo no es involucrar todo lo relevante con los sensores si no ms bien lo
indispensable y bsico para lograr una comprensin clara de estos dispositivo, las
seales de salida y como procesarlas.

Marco terico
Sensor
Un sensor o captador, como prefiera llamrsele, no es ms que un dispositivo
diseado para recibir informacin de una magnitud del exterior y transformarla en
otra magnitud, normalmente elctrica, que seamos capaces de cuantificar y
manipular.
Normalmente estos dispositivos se encuentran realizados mediante la utilizacin
de componentes pasivos (resistencias variables, PTC, NTC, LDR, etc. todos
aquellos componentes que varan su magnitud en funcin de alguna variable), y la
utilizacin de componentes activos.

Tren de pulso
Dado que un tren de deltas no es
implementable, el modelo para el muestreo
utilizado es un tren de pulsos. Su amplitud es
1 durante un intervalo muy pequeo para
conseguir un muestreo lo ms ideal posible.
Por este mismo motivo no podremos
recuperar la seal original exacta, debido a
que la Transformada de Fourier de un pulso
es una funcin zinc. La multiplicacin de una
funcin zinc con el espectro de la seal original dar como resultado el espectro
de la seal original ligeramente modificado i repetido cada Fs.
Sensor Analogico y Digital
Los sensores digitales son aquellos que frente a un estmulo pueden cambiar de
estado ya sea de cero a uno o de uno a cero (hablando en trminos de lgica
digital) en este caso no existen estados intermedios y los valores de tensin que
se obtienen son nicamente dos, 5V y 0V (o valores muy prximos).
Ahora bien, como los sensores comnmente sern utilizados con circuitos lgicos,
y ms si se trata de robtica en cuyo caso posiblemente incluyas un
microcontrolador, habr que ver como trabajar con los sensores analgicos. Por
suerte existen unos Circuitos integrados llamados Conversores Analgico/Digital
(Conversores A/D) que transforman la seal analgica en seal digital, y por
supuesto tambin estn los Conversores D/A.
Conversores Analgico/Digital
Los conversores Analgico/Digital los puedes seleccionar entre otras cosas, de
acuerdo a la cantidad de bits de salida,por ejemplo:
Un Conversor A/D de 3 bits dispone de una entrada analgica y 3 terminales de
salida Digitales, es decir que combinando las salidas puede tomar 8 posibles
valores binarios segn el nivel de tensin en su entrada. por aquello de 2 n es decir
que tendrs valores entre 000 y 111, veamos como se corresponden estos valores
con los niveles de tensin.
Entrada
Salida Digital
Analgica
0V

000

0.625 V

001

1.25 V

010

1.875 V

011

2.5 V

100

3.125 V

101

3.75 V

110

4.375 V

111

DHT11

Los DHT11 se componen de un sensor capacitivo para


medir la humedad y de un termistor.
Ciclo de operacin.
Es el tiempo que el sensor tarda en ofrecer una
respuesta desde que se le pide.
Formato de datos de un solo bus para la comunicacin
y sincronizacin entre MCU y el sensor. El proceso de
comunicacin es de 4 ms aproximadamente.
Una transmisin de datos completa es de 40 bits.
Donde obtenemos la temperatura y la humedad.
Ejemplo: Recibimos 40 bits:
0011 0101 0000 0000 0001 1000 0000 0 000 0100 1101
High humidity 8 + Low humidity 8 + High temp. 8 + Low temp. = 8 Parity bit
Calculando
0011 0101+0000 0000+0001 1000+0000 0000= 0100 1101
Datos correctos recibidos
Humedad0011 0101 = 35H = 53%RH
Temperatura0001 1000 = 18H = 24
El microcontrolador externo y el microcontrolador que lleva integrado el sensor, se
hablan entre s de la siguiente manera:
Se inicia la comunicacin.
El sensor responde estableciendo un nivel bajo de 80us y un nivel alto de 80us.
El sensor enva 5 bytes con la informacin de temperatura y humedad.
Ahora que ya sabemos esto, podemos decidir si utilizar la librera que nos
proporciona para arduino, o simplemente realizar stas operaciones nosotros
mismos sin necesidad de librera.
LM35
El LM35 es un sensor de temperatura con una precisin calibrada de 1 C. Su
rango de medicin abarca desde -55 C hasta 150 C. La salida es lineal y cada
grado Celsius equivale a 10 mV, por lo tanto:

150 C = 1500 mV
-55 C = -550 mV
Est calibrado directamente en grados Celsius.
La tensin de salida es proporcional a la temperatura.
Tiene una precisin garantizada de 0.5 C a 25 C.
Baja impedancia de salida.
Baja corriente de alimentacin (60 A).

YF-S201

Este sensor sirve para medir el flujo del


agua, o por ejemplo de un invernadero, o en
su casa como en un proyecto, resulta muy
importante conocer el consumo de
liquido. Este sensor se instala en la lnea del
agua, y utiliza un sensor de efecto Hall.
Sirve para medir la cantidad de lquido que
se ha movido a travs de l. El aspa de
viento tiene un pequeo imn atado, y hay
un sensor magntico de efecto Hall, en el
otro lado del tubo de plstico se puede medir la cantidad de vueltas de la aspa de
viento que ha hecho a travs de la pared de plstico. Este mtodo permite que el
sensor permanezca seguro y seco.
Tipo de sensor: Hall effect
Voltaje de funcionamiento: 5 a 18 V DC
Max consumo de corriente: 15 mA a 5 V
Tipo de salida: 5V TTL
Trabajo Caudal: de 1 a 30 litros / minuto
Temperatura de funcionamiento: -25 a 80
Humedad de trabajo Rango: 35% -80% de humedad relativa
Precisin: 2%
Rango de flujo: 1-30L/min
Modo de deteccin: Vertical
Presin mxima del agua: 2,0 MPa
Ciclo de trabajo de la salida: 50% + 10%
Tiempo de subida de la salida: 0.04us
Tiempo de cada de la salida: 0.18us
Velocidad de flujo caractersticas del pulso: Frecuencia (Hz) = 7,5 * Caudal (L /
min)
Pulsos por litro: 450
Durabilidad: un mnimo de 300.000 ciclos

Materiales

Jumpers
Soldadura
Arduino Mega
Sensor Temperatura/Humedad DHT11
Sensor de Temperatura LM35
Sensor de Caudal YF-S201
Placa Fenolica
Clemas de 2 y de 3 entradas
Regulador de voltaje (Dimmer)
Manguera de de pulgada
Conecciones de de pulgada
PC con matlab

Simulacin

Simuacin de los sensores de caudal(PINES 2 y 3)

Simulacin de los sensores de humedad/Temparatura (PINES 41,


43, 45, 47)

Simulacin de los sensores Temparatura analogicos (PINES A0,


A1, A2, A3)

Circuito completo

Desarrollo
Una vez que se obtuvieron los resultados esperados en la simulacion lo siguente
que se procedio a hacer fue la elavoracion de la plcaca. Ocupando el software
EAGLE se realizo el diseo del PSB para posteriormente imprimirlo y
posteriormete realizar pruebas de continuidad serciorandonos de que ninguna
pista en la plaza se hubiese juntado o se hubiese roto.

Estructura de la placa en EAGLE

Esquema de PCB EAGLE


Una vez que se comprobo que se imprimio y se elaboro la placa se realizaron los
programas en el software Matlab y en la plataforma arduino, para que as de esta
manera Arduino pudiera obtener las diferentes seales de lo sensores y
posteriormente Matlab los pudiera interpretar.
Una ves que Matlab intrpretara las seales este se enfocaria en graficarlos, y
posteriormente guardarlos en un archivo con extencion txt para que el usuario
pudiera diponer de ellos en el momento que el lo deseara.
A continuacin se presenta el programa de Matlab y Arduino empleados en este
proyecto:

Codigo Matlab
%UniversidadPolitcnicadePuebla
%Sensoresyacondicionamientodeseales
%Programapararegistrarlosvaloresdadosporsensoresdetemperaturay
humedad.

closeall;
%Cerrarventanasoprocesosanteriores
clc;
%LimpiolaCommandWindow
delete(instrfind({'Port'},{'/dev/cu.usbmodem1411'}));
activarArduino=serial('/dev/cu.usbmodem1411','BaudRate',115200,
'Terminator','CR/LF');%ConfigurarelpuertoCOMsegnlaPCautilizar
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
fopen(activarArduino);
%Iniciarcomunicaci?nserial

tiempoMuestreo=inf;
%Tiempodecapturaenseneleejex
numeroCapturas=0.52;

%Capturasarealizarporciclo

%Creamoslaventanadondevisualizaremoslossensoresdetemperatura
figure('Name','Monitoreodesensoresdetemperatura');
%Crealaventanadevisualizaci?ndelos12sensoresdetemperatura
axes('XLim',[0tiempoMuestreo],'YLim',[0101]);
%Delimitatodaslas12graficasdetemperatura

%Grficadeldespliegaelprimersensordetemperatura
subplot(3,4,1)
vector1=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura1')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Grficaquedespliegaelsegundosensordetemperatura
subplot(3,4,2)
vector2=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura2')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Graficaquedespliegaeltercersensordetemperatura
subplot(3,4,3)
vector3=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura3')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Graficaquedespliegaelcuartosensordetemperatura
subplot(3,4,4)
vector4=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura4')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Graficaquedespliegaelquintosensordetemperatura
subplot(3,4,5)
vector5=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura5')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Graficaquedespliegaelsextosensordetemperatura
subplot(3,4,6)
vector6=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura6')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Graficadeldespliegaels?ptimosensordetemperatura
subplot(3,4,7)
vector7=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura7')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Graficaquedespliegaeloctavosensordetemperatura
subplot(3,4,8)
vector8=line(nan,nan,'Color','r','LineWidth',2);
title('Sensortemperatura8')
xlabel('Tiempo(s)')
ylabel('Temperatura(C)')
gridon
holdon

%Creamoslaventanadondevisualizaremoslossensoresdehumedad
figure('Name','Monitoreodesensoresdehumedad');
axes('XLim',[0tiempoMuestreo],'YLim',[0101]);

%Graficadeldespliegaelprimersensordehumedad
subplot(2,3,1)
vector9=line(nan,nan,'Color','b','LineWidth',2);
title('Sensorhumedad1')
xlabel('Tiempo(s)')
ylabel('Humedad(%)')
gridon
holdon

%Graficaquedespliegaelsegundosensordehumedad
subplot(2,3,2)
vector10=line(nan,nan,'Color','b','LineWidth',2);
title('Sensorhumedad2')
xlabel('Tiempo(s)')
ylabel('Humedad(%)')
gridon
holdon

%Graficaquedespliegaeltercersensordehumedad
subplot(2,3,3)
vector11=line(nan,nan,'Color','b','LineWidth',2);
title('Sensorhumedad3')
xlabel('Tiempo(s)')
ylabel('Humedad(%)')
gridon
holdon

%Graficaquedespliegaelcuartosensordehumedad
subplot(2,3,4)
vector12=line(nan,nan,'Color','b','LineWidth',2);
title('Sensortemperatura4')
xlabel('Tiempo(s)')
ylabel('Humedad(%)')
gridon
holdon

%Creamoslaventanadondevisualizaremoslossensoresdehumedad
figure('Name','MonitoreodesensoresdeCaudal');
axes('XLim',[0tiempoMuestreo],'YLim',[0101]);

%GraficadeldespliegaelprimersensordeCaudal
subplot(2,3,1)
vector13=line(nan,nan,'Color','b','LineWidth',2);
title('Caudal1')
xlabel('Tiempo(s)')
ylabel('Litros(L)')
gridon
holdon

%GraficaquedespliegaelsegundosensordeCaudal
subplot(2,3,2)
vector14=line(nan,nan,'Color','b','LineWidth',2);
title('Caudal2')
xlabel('Tiempo(s)')
ylabel('Litros(L)')
gridon
holdon

diaryDatos_sensores.txt
fprintf('\n\n');
fprintf('Fechayhora:\t\tTemper1:\tTemper2:\tTemper3:\t');
fprintf('Temper4:\tTemper5:\tTemper6:\tTemper7:\t');
fprintf('Temper8:\tHumedad1:\tHumedad2:\tHumedad3:\t');
fprintf('Humedad4:\tCaudal1:\tCaudal2:\n');
diaryoff

control=1;
ciclos=0;

tic
while(1)
ciclos=toc;
%Utilizarestavariablecuandoseauntiempodefinido
sensor1=fscanf(activarArduino,'%d')';
sensor2=fscanf(activarArduino,'%d')';
sensor3=fscanf(activarArduino,'%d')';
sensor4=fscanf(activarArduino,'%d')';
sensor5=fscanf(activarArduino,'%d')';
sensor6=fscanf(activarArduino,'%d')';
sensor7=fscanf(activarArduino,'%d')';
sensor8=fscanf(activarArduino,'%d')';
sensor9=fscanf(activarArduino,'%d')';
sensor10=fscanf(activarArduino,'%d')';
sensor11=fscanf(activarArduino,'%d')';
sensor12=fscanf(activarArduino,'%d')';
sensor13=fscanf(activarArduino,'%d')';
sensor14=fscanf(activarArduino,'%d')';
temperatura1(control)=(sensor1*5/1024)*100;
temperatura2(control)=(sensor2*5/1024)*100;
temperatura3(control)=(sensor3*5/1024)*100;
temperatura4(control)=(sensor4*5/1024)*100;
temperatura5(control)=sensor5;
temperatura6(control)=sensor6;
temperatura7(control)=sensor7;
temperatura8(control)=sensor8;
humedad1(control)=sensor9;
humedad2(control)=sensor10;
humedad3(control)=sensor11;
humedad4(control)=sensor12;
caudal1(control)=sensor13;
caudal2(control)=sensor14;

x=linspace(0,control/numeroCapturas,control);
set(vector1,'YData',temperatura1(1:control),'XData',x);
set(vector2,'YData',temperatura2(1:control),'XData',x);
set(vector3,'YData',temperatura3(1:control),'XData',x);
set(vector4,'YData',temperatura4(1:control),'XData',x);
set(vector5,'YData',temperatura5(1:control),'XData',x);
set(vector6,'YData',temperatura6(1:control),'XData',x);
set(vector7,'YData',temperatura7(1:control),'XData',x);
set(vector8,'YData',temperatura8(1:control),'XData',x);
set(vector9,'YData',humedad1(1:control),'XData',x);
set(vector10,'YData',humedad2(1:control),'XData',x);
set(vector11,'YData',humedad3(1:control),'XData',x);
set(vector12,'YData',humedad4(1:control),'XData',x);
set(vector13,'YData',caudal1(1:control),'XData',x);
set(vector14,'YData',caudal2(1:control),'XData',x);
drawnow

diaryDatos_sensores.txt
fprintf('%c',datestr(now));

fprintf('\t');
fprintf('%.3f\t\t',temperatura1(control));
fprintf('%.3f\t\t',temperatura2(control));
fprintf('%.3f\t\t',temperatura3(control));
fprintf('%.3f\t\t',temperatura4(control));
fprintf('%.3f\t\t',temperatura5(control));
fprintf('%.3f\t\t',temperatura6(control));
fprintf('%.3f\t\t',temperatura7(control));
fprintf('%.3f\t\t',temperatura8(control));
fprintf('%d\t\t',humedad1(control));
fprintf('%d\t\t',humedad2(control));
fprintf('%d\t\t',humedad3(control));
fprintf('%d\t\t',humedad4(control));
fprintf('%.3f\t\t',caudal1(control));
fprintf('%.3f\t\t',caudal2(control));
fprintf('\n');
diaryoff
control=control+1;
end

Graficas generadas
Codigo Arduino
//Declaracin de la librera del DHT11
#include <DHT.h>
// Se definen los pines en los que seran conectados los sensores DHT11
#define DHT1 47
#define DHT2 45
#define DHT3 43
#define DHT4 41
#define DHTTYPE DHT11

DHT dht1 (DHT1, DHTTYPE);


DHT dht2 (DHT2, DHTTYPE);
DHT dht3 (DHT3, DHTTYPE);
DHT dht4 (DHT4, DHTTYPE);
// Se definen las variables a ocupar para los diferentes procesos.
float vazao;
float vazao1;
int contaPulso;
int contaPulso1;
int temperatura1 = 0;
int temperatura2 = 0;
int temperatura3 = 0;
int temperatura4 = 0;
int temperatura5 = 0;
int temperatura6 = 0;
int temperatura7 = 0;
int temperatura8 = 0;
int humedad1 = 0;
int humedad2 = 0;
int humedad3 = 0;
int humedad4 = 0;
void setup()
{
//Se declara la velocidad del boffer de comunicacin
Serial.begin (115200);
//Se inicializan las funciones del dht11 que contiene la librera
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
//Se delclaran las interrupciones externas en los pines 2 y 3
pinMode(2,INPUT);
attachInterrupt(0, incpulso, RISING);
pinMode(3,INPUT);
attachInterrupt(1, incpulso1, RISING);
}
void loop()
{
//En esta parte todas las variables se asignan a sus corresponcdientes
valores de temperatuya y humedad
temperatura1 = analogRead (A0);
temperatura2 = analogRead (A1);
temperatura3 = analogRead (A2);

temperatura4 = analogRead (A3);


temperatura5 = dht1.readTemperature();
temperatura6 = dht2.readTemperature();
temperatura7 = dht3.readTemperature();
temperatura8 = dht4.readTemperature();
humedad1 = dht1.readHumidity();
humedad2 = dht2.readHumidity();
humedad3 = dht3.readHumidity();
humedad4 = dht4.readHumidity();
// Para evitar un error de lectura por causa de la interrupcion 0 se hace una
comparacion con los primeros datos de temperatura
if(temperatura5&&humedad1>0){
contaPulso = 0; // varivel para los pulsos del primer sensor de caudal
sei();
//Habilita interrupcion
delay (1000); //Aguarda 1 segundo
cli();
//Desabilita interrupcion
contaPulso1 = 0; // varivel para los pulsos del segundo sensor de caudal
sei();
//Habilita interrupcion
delay (1000); //Aguarda 1 segundo
cli();
//Desabilita interrupcion
vazao = contaPulso / 5.5; //Se hace la conversin para L/min
vazao1 = contaPulso1 / 5.5;
}
// En esta parte se organizan los datos para mandarlos por el puerto serial y
matlab los pueda procesar.
Serial.println (temperatura1);
Serial.println (temperatura2);
Serial.println (temperatura3);
Serial.println (temperatura4);
Serial.println (temperatura5);
Serial.println (temperatura6);
Serial.println (temperatura7);
Serial.println (temperatura8);
Serial.println (humedad1);
Serial.println (humedad2);
Serial.println (humedad3);
Serial.println (humedad4);
Serial.println(vazao);
Serial.println(vazao1);
delay (100);
}

// Sub funcin para el contero de los pulsos


void incpulso ()
{
contaPulso++; //Incrementa a varivel de pulsos
}
void incpulso1 ()
{
contaPulso1++; //Incrementa a varivel de pulsos
}

Conclusin
Se concluye que en la electronica aplicada los sensores son fundamentales ya
que con estos podremos la variacion de cualquier fenomeno fisico dentro de un
sistema controlado como lo pudiera ser una linea de produccion que sea necesaria
una temparatura o humedad contante y cualquier variacion de estos pueda llegar a
perjudicar el producto final.
As como en el caso de que para un sistema de llenado de liquidos (refresco,
agua, cerveza, etc.) sea prioritario que dicho liquido tenga un caudal contante y en
dado caso que no se pudiese mantener poder observar la variacion y
posteriormente hacer el analicis pertinente con los datos arrojados.

Bibliografa
Instruments, T. (s.f.). Texas Instruments. Obtenido de http://www.ti.com
Marquez, A. (s.f.). Hetpro. Obtenido de http://hetprostore.com/TUTORIALES/sensor-de-flujo/
Marticorena, J. L. (s.f.). Jos Luis Molina Marticorena . Obtenido de
http://www.profesormolina.com.ar/index.htm
Molina, P. (s.f.). Profesor Molina. Obtenido de
http://www.profesormolina.com.ar/tecnologia/sens_transduct/que_es.htm
MOORE, H. MATLAB PARA INGENIEROS. PEARSON.
Ruben, J. (s.f.). Geek Factory. Obtenido de http://www.geekfactory.mx

Anexos

Tarjeta para la coneccion de los sensores a ocupar.

Sensores de flujo(Caudal).

Graficas finales de los sensores en tiempo real.

Regulador de voltaje para poder variar la velocidad en la cual la


bomba estar arrojando agua a los sensores de flujo.

Você também pode gostar