Uploaded by Carlos Andres Galan Perez

Laboratorio N°1 Sistema de medición de nivel

advertisement
Laboratório N° 1. Sistema de medición de Nivel,
Curva caracterı́sitica, Adquisición y conversión
ADC con Arduino (ADC: 0-5V), y Graficador
Matlab (GUI).
1st Lousiana Rojas Babativa
2nd Francisco Josse Rojas Rojas
3nd Carlos Andrés Galán Pérez
Ingenierı́a Electrónica
Universidad Nacional de Colombia
Bogotá, Colombia
lorojas@unal.edu.co
Ingenierı́a Electrónica
Universidad Nacional de Colombia
Bogotá, Colombia
frrojasr@unal.edu.co
Ingenierı́a Electrónica
Universidad Nacional de Colombia
Bogotá, Colombia
cgalanp@unal.edu.co
Abstract—This paper aims to show the characterization of a
water level plant, whose height variable will be translated to
voltage by varying a potentiometer. It will work in the linear zone,
to achieve a better characterization. The characteristic curve will
be made using the Arduino IDE, taking a population of 10 voltage
data per water level. Finally we will calibrate the plant using the
MATLAB GUI, using the 5cm reference as the zero setting and
with a range of 20 cm, so our maximum level will correspond to
25cm.
Index Terms—IDE, GUI, Arduino, adjustment, calibration,
reference, linearity.
I. I NTRODUCCI ÓN
Este documento pretende mostrar la construcción de un
sistema de medición de nivel de agua. Este será caracterizado
primeramente mediante la obtención de una curva que
relaciona altura y voltaje, mediante la lectura de la caı́da
de tensión de un potenciómetro de 10KΩ alimentado en
los extremos con 5v. Se trabajará en la zona media del
potenciómetro, para lograr una mejor caracterı́stica lineal.
Posteriormente se llevará a cabo la calibración de nivel, con
5cm como la altura de referencia o ajuste a cero. La variación
será de 20cm, por lo que nuestra altura máxima será de
25cm. Se mostrarán los resultados en el IDE de Arduino y
en el GUI de Matlab.
Para el ajuste de la lectura con IDE de Arduino, realizaremos
un divisor de tensión con 10 resistencias de 10KΩ mediante
una muestra estadı́sitica de 10 datos por medición. Lo mismo
se realizará con el GUI de Matlab pero graficamente. Una
vez hecho esto, se realizará la caracterización de la planta
de nivel, traduciendo la variable de altura, en variable de
tensión, seleccionando la zona con mayor linealidad. Una
vez realizado esto, se calibrará la planta mediante el GUI de
Matlab, mediante una variable denominada diferencia, la cuál
medirá los valores de salida de tensión del puente Wheatstone.
Figure 1. Esquema de la planta de medición de Nivel [1]
La entrada del nivel de referencia mostrará un nivel de
tensión en el GUI, al igual que la salida máxima. Ajustando
estos valores, a los valores deseados de la variable de altura,
obtenemos nuestra curva de calibración, para que de esta manera podamos mostrar la altura correspondiente en el tanque,
en unidades de centı́metros correspondientemente, en función
del tiempo en segundos.
II. M ATERIALES & M ETODOLOG ÍA
A. Materiales
Los materiales empleados para esta practica fueron:
•
•
•
•
•
•
•
•
•
•
Protoboard.
Tanque diseñado por nosotros.
Potenciómetro y Puente de Wheastone.
Flotador.
Multimetro true RMS.
Fuente de alimentación de 5Vdc.
Cables Banana-caimán.
10 resistencias de 1KΩ.
Computador portátil.
Arduino.
B. Métodologı́a
1) Curva caracterı́stica: Se empezará por graficar la curva
caracterı́sitica entre el voltaje en voltios mostrado por el IDE
de Arduino, y la altura en cm medida por una regla colocada
verticalmente, para medir el nivel del agua indicado a su vez
por un flotador de icopor.
Para esto se escoge la zona con mayor linealidad del
potenciómetro, y después de tratar con una población de
20 muestras en distintos intervalos (Una por cada cm de
variación) , escogemos la que menos alinealidad posee o la
que mayormente se parece a la recta de calibración entre
extremos.
2) Prueba década con convertidor ADC através del monitor
serial IDE de Arduino: Por medio de una configuración
de resistencias en serie de valor 1KΩ, conformando una
resistencia total de 10KΩ y alimetada por una fuente de
5V , Realizamos la lectura entre cada nodo de extremo a
extremo por medio del conversor ADC que posee Arduino,
observando su valor mediante el monitor serial IDE.
Para esto tomamos una población de 10 muestras
por medida, para un mejor tratamiento estadı́stico de la
incertidumbre o dispersión de datos.
III. R ESULTADOS
1) Curva caracterı́stica: Antes de empezar con la curva
caracterı́stica, se tomó la decisión de caracterizar el potenciómetro para mejores resultados
Se realizaron una serie de 10 mediciones cada 10 grados (esto
con ayuda del potenciómetro). Luego de promediar y comparar
cada grupo de 4 resistencias, se obtiene una serie de resultados
donde el potenciómetro era más lineal en esa zona.
Ángulo[∠]
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
Rpromedio [kΩ]
Ángulo[∠]
511
150
511
160
511
170
472
180
437
190
400
200
375
210
345
220
318
230
296, 1
240
274
250
235, 5
260
215, 8
270
235, 6
280
198, 4
290
Table I
Rpromedio [kΩ]
181
165
150
137
123
190
96
83
71
59, 6
47, 1
36
15
10, 1
10, 1
TABLA DE C ARACTERIZACI ÓN DEL POTENCI ÓMETRO , A NGULO VS
R ESISTENCIA
3) Prueba de adquisición ADC de la salida Vout de la
planta de nivel: Mediante el método anterior, registramos la
variable de altura en unidades de cm, utilizando el monitor
serial IDE de Arduino. de esta forma calibramos el nivel
del referencia que corresponde a 5cm variando hasta 25cm;
obteniendo un alcance de 20 cm.
4) Prueba década con convertidor ADC através del
graficador de Matlab GUI: De la misma forma anterior,
empleamos la década de resistencias puestas en serie,
midiendo nodo por nodo de extremo a extremo, obteniendo
esta vez una población de 5 muestra por medición. Como el
GUI de Matlab muestrea en función del tiempo, obtendremos
una escalera descendente de 5V hasta los 0V .
5) Prueba de adqusición Vout convertido a Altura en
función del tiempo a través del GUI de Matlab: Al tomar
la diferencia entre los dos terminales de salida del puente de
Wheatstone y variar la altura de nuestra planta de nivel de
agua, inicialmente se grafica el voltaje vs el tiempo, por lo que
tomando el voltaje de referencia mı́nimo y máximo de voltaje,
restamos el mı́nimo de voltaje a la variable diferencia; finalmente multiplicamos por un factor que nos permite amplificar
la diferencia máxima de voltaje, es decir V.max − Vmin a
nuestro alcance de operación que corresponde a una variación
de nivel de 20cm.
Figure 2. Caracterización 170° y 200°
Figure 3. Caracterización 180° y 210°
Figure 4. Caracterización 190° y 200°
Altura[cm]
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Rpromedio [kΩ]
26, 91
24, 75
22, 09
20, 17
17, 97
16, 28
14, 71
13, 4
12, 10
11, 01
9, 78
8, 66
7, 51
6, 57
5, 52
4, 69
3, 74
2, 81
2, 00
1, 2
0, 59
Table II
V oltaje[V ]
1, 315
1, 210
1, 080
0, 986
0, 878
0, 796
0, 719
0, 655
0, 591
0, 538
0, 478
0, 423
0, 367
0, 321
0, 270
0, 229
0, 183
0, 137
0, 098
0, 059
0, 029
TABLA DE VOLTAJE DIFERENCIAL DE SALIDA VS ALTURA
Figure 5. Caracterización 200° y 210°
A partir de esto, se eligió el rango adecuado para manejar
el potenciómetro.
Para la curva caracterı́stica con ayuda del arduino se realizó
la medición del voltaje de salida del puente Wheatstone donde
se tomó un total de 10 mediciones cada cm entre el Lmin=4cm
y el Lmax=24 cm, para finalmente tener 20 juegos de 10
mediciones cada uno.
Se realizó el promedio de cada una, y se calculó el voltaje
de cada uno, para poder tener una relación entre el Voltaje
diferencial de salida (Vout) Vs Altura-Nivel(H(mm)).
Figure 6. Curva caracterı́stica
2) Prueba década convertidor ADC monitor IDE de
Arduino
: Usando 10 resistencias de 1KΩ se creó una d écada
alimentada por 5V del arduino; de esta forma de procedió a
realizar mediciones de voltaje con el mismo. Para ello se usó
el código de medición de voltaje, y se realizaron mediciones
comparando con el multı́metro como se ve en las figuras 2
y 3, consignando los resultados a medida que aumentaba la
resistencia total sobre la que se aplican los 5V en la siguiente
tabla:
RL [KΩ]
1
2
3
4
5
6
7
8
9
10
M ultı́metro [V]
0.491
0.989
1.479
1.962
2.445
2.864
3.384
3.975
4.487
5.000
Arduino[V]
0.49
0.99
1.49
1.97
2.46
2.88
3.4
4.00
4.51
5.00
TABLA I. Valores de voltaje para cada suma de resistencias
con Multı́metro y Arduino
Figure 8. Medición multı́metro vs medición Arduino
Figure 7. Medición de voltaje sobre cada suma de resistencias
Comparando la tabla, se puede ver que el Arduino tiene
buena precisión y exactitud con respecto a las medidas del
multı́metro, principalmente en voltajes mayores a 1V , con
incertidumbre de+ − 10mV , por lo que se reduce la exactitud
en valores de voltaje bajos.
3) Prueba de adquisición ADC de la salida Vout de la
planta de nivel
: De la misma manera realizamos la medición de la
salida de voltaje que registra el Arduino en el monitor IDE,
mostrando una gran linealidad entre los valores intermedios
y una variación de 10 puntos por centı́metro, tal y como se
muestra a continuación para una variación de 20cm:
5) Prueba de adquisición Vout convertido a Altura (cm) en
función del tiempo
: Se registró un nivel mı́nimo de voltaje para el nivel de
referencia como se ve a continuación:
Figure 11. Voltaje de salida para el nivel de referencia de 5cm correspondiente a Vout = 0.493646V
Posteriormente realizamos la misma dedición para el nivel
máximo, correspondiente a 25cm, tal y como se muestra a
continuación:
Figure 9. Valor muestreado por el monitor IDE de Arduino al variar la entrada
de nivel de altura del tanque de 25cm a 5cm
Como se puede ver, se muestreó 10 veces para mayor
certeza.
4) Prueba década con conversor ADC mediante graficador
GUI de Matlab
: Al igual que se probó la década con el monitor IDE de
Arduino, esta vez graficamos 5 muestras por cada medición
de forma descendente, de tal forma que observaremos una
escalera que va desde los 5V hasta los 0V , como se ve a
continuación:
Figure 10. Medición descendente de la década de resistencias de 1KΩ en
función del tiempo en segundos.
Figure 12. Voltaje de salida para el nivel de referencia de 25cm correspondiente a Vout = 0.948192V
De esta forma obtenemos una diferencia de
∆Vout = 0.454545V de tal forma que debemos multiplicar
por un factor de 44, para registrar una variación de altura
de ∆Hin = 20cm. Para la calibración se resta inicialmente
el voltaje de salida mı́nimo, tal y como se muestra en el
siguiente código de Matlab:
a=arduino();
port=’A1’;
portB=’A0’;
height=[];
muestras=10000;
cont=1;
figure()
title(’Divisor de tensión década de 1K’)
hold on;
xlabel(’Tiempo (seg)’)
ylabel(’Voltaje (v)’)
while cont¡=muestras
lectura=readVoltage(a,port);
lecturaB=readVoltage(a,portB);
diferencia=lecturaB-lectura;
height(cont)=44*(diferencia-0.493646);
stem(height)
drawnow;
pause(2)
cont=cont+1;
end
De esta manera pudimos caracterizar la carga del tanque a
un flujo constante:
Figure 14. Diseño circuito
IV. A N ÁLISIS DE RESULTADOS
A. Curva caracterı́stica
Después de muestrar varias curvas en diferentes sectores del
potenciómetro, se escogió la que mayor linealida mostraba, y
se concluye que en la zona central de variación de ángulo del
potenciómetro, este se comporta más lineal que en una zona
cercana a los extremos del potenciómetro:
Figure 13. Carga del tanque a flujo constante desde el nivel de referencia
hasta su nivel máximo de altura.
6) Diseño de amplificador: De acuerdo a todas
las mediciones obtenidas, se realizó un circuito de
acondicionamiento de señal para el sistema de medición
de nivel, basado en un amplificador de instrumentación y
amplificador operacional.
Se diseño un circuito el cual necesitaba de un restador
que nos restara 1.315, seguido de un multiplicador donde su
ganancia tiene que ser aprox de 3,89.Estos datos sa calcularon
de acuerdo a la ecuación de recta de la curva.
Restador para la calibración posterior de la planta:
Figure 15. Distintas zonas del potenciómetro, Voltaje de salida vs ángulo del
potenciómetro.
B. Prueba década conversor ADC con monitor IDE de Arduino
Se puede ver que las cifras significativas son mayores en el
multı́metro que en el monitor IDE de Arduino, sin embargo,
tanto el multı́meto como el Arduino poseen gran exactitud al
momento de comparar las mediciones, por lo que podemos
confiar en los resultados del monitor IDE de Arduino.
C. Prueba de adquisición ADC de salida Vout de la planta
de nivel
Se puede observar que la manera más óptima de trabajar
cualquier sensor o transductor es en su zona lineal, o con
menor alinealidad posible. De esta forma se eligió la recta
con R2 más próximo a 1, de tal forma que la curva entre
voltaje nivel, se acercara más a la recta de calibración, tal y
como se muestra a continuación:
V. C ONCLUSIONES
•
•
•
Figure 16. Gráfica con ecuación sacada de Excel para obtener el voltaje vs
la altura del tanque.
•
Teniendo entonces la expresión:
y = −0.0615
V
x + 1.1564V
m
(1)
con un R2 = 0.9687.
D. Prueba década con convertidor ADC de interfaz gráfica
GUI de Arduino
A comparación del monitor IDE de Arduino, el GUI de
Matlab nos proporciona un muestreo dinámico en función del
tiempo, lo cuál es más fácil de interpretar visualmente con
una correcta escala de ejes coorden.
•
Podemos observar que es bueno escoger la zona de
operación del sensor de trabajo, de tal forma que la
caracterı́zación sea lo más lineal posible.
El IDE del Arduino sirve bastante por su exactitud para el
propósito de la calibración y la toma de datos o población
de muestras por cada medición.
La interfaz gráfica de GUI de Matlab para Arduino es
dinámica, ya que nos permite muestrear en el tiempo,
y nos muestra caracterı́siticas como las perturbaciones,
lo que puede caracterizar mejor el sistema o la planta a
medir.
Es útil considerar los posible daños que pude tener el
sensor, en nuestro caso fue el pegamento que se usó para
adherir el potenciómetro a la pared del tanque. Este alteró
la resistencia del potenciómetro debido a que es un ácido,
proporcionando alteraciones en las mediciones de voltaje
con el Arduino. Se esperó a que el efecto del ácido dejara
de funcionar para la correcta toma de datos.
Una parte importante del buen funcionamiento de las
pruebas, es la buena manipulación de los elementos
fı́sicos del proyecto a utilizar, por lo tanto para lograr
más eficiencia del potenciómetro, fue necesario una caracterı́stica del mismo, teniendo en cuenta varios aspectos
como sensibilidad y exactitud.
R EFERENCES
E. Prueba de adquisición Vout convertido a altura en función
del tiempo a través del GUI de Matlab
Como se mencionó anteriormente con la década leida con
la interfaz que ofrece Matlab para Arduino, es bastante útil,
para incluso observar las oscilaciones que presenta el agua,
cuando esta se perturba, también es útil si se desea medir el
flujo de agua que está saliendo por la manguera de suministro,
e incluso para calcular otras variable fı́sicas, como la altura
del tanque que está suministrando, por medio de la ley de
Torricelli, debido a la facilidad de lectura del tiempo.
Figure 17. Gráfica de Altura vs. Tiempo, donde se puede observar que la
derivada nos proporciona una cantidad para medir el flujo de suministro.
El sobre nivel es debido a la perturbación del agua, lo cuál
nos indica que la interfaz de Matlab GUI para Arduino es
bastante útil para aplicaciones dinámicas.
[1] Manuales y Hojas de Datos de los equipos de laboratorio.
[2] Ruiz
Gutiérrez,
J.,
Arduino:
Manual
de
Programación.
[online]
Arduinobot.pbworks.com.
Disponible
en:
https://arduinobot.pbworks.com/f/Manual+Programacion+Arduino.pdf
[3] Aprendiendo Arduino, ”Puertos Analogicos Arduino Avanzado”, [online] ´ Disponible: https://aprendiendoarduino.wordpress.com/tag/adc/
[4] COOPER–HELFRICK, Instrumentación electrónica moderna y técnicas
de medición. Prentice Hall Hispanoamérica S.A. México : Prentice-Hall
Hispanoamericana, 1991.
[5] COUGHLIN-DISCROLL, Amplificadores Operacionales y Circuitos
integrados lineales. Prentice hall-pearson, 5th ed. México : Pearson Hall,
1999.
Download