Noticias:

Grupo en telegram, del foro de meteorología fácil: https://t.me/meteorologiafacil

Para mas detalles, puedes visitar el siguiente tema http://www.meteorologiafacil.com.ar/foros/index.php?topic=1608.0

Espero que les sea de mucha utilidad.

Menú Principal

Creando mi propia estación automática.

Iniciado por David Met, Abril 05, 2009, 08:40:12 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

David Met

Hola Ricardo. Tengo un pequeño problema y ya me trabé y no se como continuar.
Para medir la presión, voy a utiliza el sensor MPX201.

Ya despejé la fórmula para obtener la presión y que es P = Vout - Voff / sensibilidad.

Dónde:

P = presión.
Vout = es la tensión de salida del sensor.
Voff = es la tensión de offset y que según el datasheet, para el sensor utilizado es 20 mV (típico)
Sensibilidad = es la variación de la tensión de salida con la presión y que según el datasheet es de 0,3mV/Kpa pero la voy a actualizar a Hpa.

El problema que tengo, es que no logro encontrar la forma de hacer la corrección por temperatura. Tu, ¿cómo lo has echo?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

David Met

#61
Para variar, siempre me explico de una forma compleja (por no decir complicada e inentendible) y ahora que lo vuelvo a leer me doy cuenta que di la mitad de la información.

En realidad, encontré la fórmula pero no entiendo como utilizarla.
La fórmula está un poco confusa y no me cierra su uso:



EDITO: El archivo adjunto quedó dañado en la última mudanza del foro y se perdió.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

David Met

No logro entender como despejaron la fórmula  >:( ya que yo la despejé y me da de otra manera.
La fórmula que el datasheet expone es:

TCVFSS = (VFSS / T) x (1 / VFSS [25°c])

Al despejar la fórmula para obtener VFSS me da lo siguiente:

VFSS = TCVFSS x VFSS[25°c] x T

La T es la temperatura, dato conocido por el sensor de temperatura.
VFSS[25°C] es la tensión que entrega a full escala a máxima presión que puede sensar, o sea a 200Kpa VFSS = 60mV
TCVFSS es el coeficiente de temperatura que es otro dato conocido dado por el datasheet y es igual a -0.19%/°C

Lo que más me desconcierta, es que reemplazando los valores, no me da lo que le da en el datasheet, aún usando su fórmula. Me explico, la fórmula que ellos despejaron, reemplazaron los valores y muestran un resultado, pues no me da igual.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ricber

Hola David, por ahora no me complique mucho con las formulas, use el  -0.19%/ºc, y 25ºc como base, osea que 26ºc la salida del sensor va a ser 0.19% menos y asi sucesivamente.
Me entedes

David Met

Ok Ricardo. Te voy hacer caso porque sino, no lo termino.
El tema va hacer para valores inferiores a 25°C, o para ese caso, ¿en vez de restarle debería sumarle la salida?

Por ejemplo, para valores positivos de temperatura. Tomando como referencia lo que me dices, 0,19% y 25°C hago una simple regla de 3. Veamos para un caso de 30°C temperatura del aire y la presión entregada por el sensor es de 1030,4Hpa.

Y = (30°C x 0,19%) / 25°C donde Y es el porcentaje que debo restarle a la presión obtenida.
Y = 0,228%

Pr = Ps - [(Ps x Y) / 100%] donde Pr es la presión real; Ps es la presión entregada por el sensor; Y es el porcentaje que varía
Pr = 1030,4 Hpa - [(1030,4Hpa x 0,228%) / 100%]
Pr = 1028,05Hpa

Veamos un ejemplo para valores inferiores a 25°C

T = -10°C Ps = 1010,9Hpa

Y = [-10°C x 0,19%) / 25°C
Y = -0,076%

Pr = Ps - [(Ps x Y) / 100%]
Pr = 1010,9Hpa - [(1010,9Hpa x 0,076%) / 100%
Pr = 1011,66Hpa

¿Es así como debo hacerlo?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ricber

Hola David, yo lo implemente asi:
al valor que me da conversor le aplico lo siguiente:

1.0019^(25-temp actual)
si la temp es 25 el valor seria 25-25=0 Y 1.0019^0 =1 Y
1* el valor digital queda igual.

Si fuera 26º el calculo seria 25-26 = -1
1.0019^-1= .9981 esto se lo aplico a la salida digital
osea voy a tener un valor inferior, ya que la variacion es inversa.

Si la temp fuera 24º seria 25 - 24=1
1.0019^1 = 1.0019 esto se lo aplico al valor digital osea voy a tener un valor mayor
en 0.19%.

Espero haberlo explicado bien, sino observame lo que no entiendas.



 


David Met

Gracias Ricber.
Hay algo que no entiendo, el siguiente símbolo ^ ¿Qué significa? porque para mi significa que lo eleve, o sea, 2x2x2=8 = 2^3=8
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ricber

Hola, si es asi, es elevar, aunque hay otras forma que tambien se pueden usar.
el tema es asi:
supongamos que la salida del ad sea 100mv a 25º si bajara a 22 serian (3º de diferencia.)
podriamos hacer

100*1.0019=100,19 a 24º
100.19 * 1.0019 = 100.38 a 23º
100.38*1.0019 = 100.57 a 22º

tambien lo puedes hacer ((0.0019*3)+1)*100=100.57

o tambien

100*(1.0019^3)=100.57
como te resulte mas facil de implementar, los 3 casos dan igual.

Para temp mayores los valores serian menores de 100mv p.ej
100*(1.0019^-3)=99.43

O ((.0019*-3)+1)*100=99.43


David Met

Ahora si te entendí.
Muchas gracias. Voy a analizarlo bien detenidamente y luego te muestro como lo voy a implementar según mejor me convenga en ASM  :P
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

David Met

Algo que me olvidé de consultarte, tu error en porcentaje por temperatura ¿es de 1,0019%/°C?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ricber

Hola David, el error por temperatura va a depender, me parece, del error del sensor de temp., porque si el sensor tiene un error p.ej cuando hay 13º me dice que hay 14º estariamos corrgiendo el sensor de presion sobre la base de 14º. (los valores estan un poco exagerados).
Un abrazo

David Met

No, no me entendiste la temperatura o yo no ten entiendo a ti.
Al principio creía que había entendido, pero cuando estuve mirando más detalladamente y de donde sale cada cosa, no entiendo esto:

100*1.0019=100,19 a 24º
100.19 * 1.0019 = 100.38 a 23º
100.38*1.0019 = 100.57 a 22º

con esto:

((0.0019*3)+1)*100=100.57

Lo que está en negrita me produce confusión. Entiendo el procedimiento para tratar el error por temperatura, pero no entiendo porque en una fórmula se utiliza 1,0019 y en otra 0,0019
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Ricber

Hola David, en esta formula
((0.0019*3)+1)*100=100.57
tambien se le suma 1, (en negrita y cursiva) lo que pasa es que primero juntamos la variacion de la temperatura y despues le sumamos el 1.
Pero para que te sea mas facil entender, supongamos que en vez de 3º de variacion fuera 1º el calculo seria 
((0.0019*1)+1)*100=100.19, resolviendo el parentesis quedaria 1.0019 que despues lo multiplicamos por 100 en este ejemplo.
Se entiende?


David Met

#73
Muchas gracias Ricber, ahora si se de donde sale cada cosa.
Entendía la diferencia de temperatura y como implementarlo pero no me cerraba porqué en un lado era 0,0019 y en otro 1,0019. Ahora entendí eso.
:\

EDITO: Opte por la siguiente fórmula ((0,19 * Dt) + 1) * V = Vr

donde Dt es la diferencia de temperatura a 25°C
V es la tensión obtenida en el CAD del PIC
Vr es la tensión real con corrección de temperatura.

Gracias de nuevo.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

yebeere

#74
Hola amigos,
Quiero compartir con Uds. el proyecto que estoy elaborando y por el que descubrí este foro. Antes de continuar con el proyecto les quiero comentar que mi formación académica es en el ámbito informático y no electrónico, por lo tanto el desarrollo de la Estación meteorológica automática fue encarado como medio de aprender el uso de microcontroladores. Además del desafío de aprender el uso y programación de los microcontroladores, quiero desarrollar este dispositivo para que el mismo reporte sus datos a través del sistema de radioaficionados conocido como APRS (la radio, mi otra afición).
La premisa del proyecto es que los costos no sean elevados, es por este motivo que cada sensor (dentro de lo posible) lo desarrollo en forma artesanal y con elementos recuperados.
La idea es que mida:
•   Temperatura exterior (lm35)
•   Velocidad del viento (anemómetro de copas – Sensor óptico/mecánico)
•   Dirección del viento ( Veleta de 8 posiciones sensores  ópticos/mecánicos)
•   Humedad  (Todavía no implementado pero será del tipo HIH-3610 o lo que se consiga )
•   Presión (Todavía no implementado pero será un MPX4115 de Motorola ya que está compensado por temperatura)
•   Sensor de lluvia.(circuito impreso con dos pistas entrelazadas muy próximas, en fabricación)
•   Pluviómetro (de doble cazoleta basculante con sensor óptico/mecánico o reed switch/imán  en desarrollo)
Como les contaba estoy tratando de utilizar la mayor parte de los materiales accesibles y/o reciclados, por ejemplo algunos de los sensores ópticos son recuperados de fotocopiadoras viejas (Gracias a mi amigo Warner que es servicio técnico de Minolta), las copas del anemómetro se realizaron con "maracas" de cotillón cortadas al medio, utilicé caños de 60 mm de desagües, etc.
Como computadora central uso un PIC de Microtrol 16f877A, que posee entradas digitales y analógicas lo que me evita el uso de conversores A/D los cuales son onerosos. Para mostrar los valores he colocado un display LCD de 16 caracteres  por 2 líneas.  La comunicación con la PC se realiza a través del puerto serie RS-232. El lenguaje de programación con el que he comenzado es PicBasic Pro 2.5 dado que no quería incorporar mas problemas, pero luego lo mudaré a C.

Construcción del Anemómetro:
Me decidí por un anemómetro del tipo de copas (o cazoletas) por su simplicidad constructiva. Las 3 copas separadas 120 grados una de otra moverán una rueda con 24 perforaciones (recuperada de una fotocopiadora) y el  sensor óptico (también recuperado) con 24 perforaciones harán que el PIC cuente 24 pulsos/vuelta. Para facilitar la rotación del sistema de copas utilicé el rodamiento y anclaje de una disquetera de 5 ¼  abandonada hace mucho tiempo, estos rodamientos de alta precisión permiten el giro de las copas minimizando el rozamiento. El muestreo se realiza en 1 segundo, las velocidades se promedian (debo modificar el soft para que promedien en 10 min. según lo que he leído) y por software guardo la ráfaga máxima y el promedio. }
Para calibrarlo utilicé el sistema del auto: un día sin viento realice el muestreo a distintas velocidades, verificadas con el GPS, este método no es muy preciso pero es el único al no disponer de un sistema patrón. No obstante las pruebas me mostraron un comportamiento lineal que me permitió encontrar una relación directa entre la velocidad y los pulsos contados, asimismo he contrastado los valores con estaciones meteorológicas de la zona y son bastante parecidos.


Tipo de los Sensores recuperados


Adaptación electrónica de los sensores ópticos



Fotos del anemómetro finalizado:




Dirección del viento. Veleta
En esta etapa he realizado una veleta utilizando 3 sensores ópticos (estos comprados) conectados con la adaptación utilizada en el anemómetro, y un disco codificado que permite obtener 8 posiciones, los que se leen en 3 entradas digitales del PIC.
En un futuro realizaré una veleta con 4 sensores para obtener 16 direcciones con el mismo sistema.
Al igual que el anemómetro se monto sobre rodamientos de disquetera de 5 ¼ recuperados.


En el análisis  previo surgió como posibilidad el uso de un potenciómetro de una vuelta lo que me facilitaría la lectura al necesitar sólo un cable para la obtención del dato. Probé con un potenciómetro de un control analógico de un Joystick de Play Station pero resulto muy endeble en construcción y no lo consideré muy bueno para realizar el sensor. Luego busque infructuosamente algún pote de este tipo en los comercios del ramo en mi localidad pero no conseguí ninguno que se adapte a este sistema, por lo que quedará para una etapa posterior. El modelo sería algo así


Por lo tanto la implementación quedo de la siguiente manera:



El conjunto Anemómetro – Veleta quedó conformado de la siguiente manera:


Medición de Temperatura con LM35.
Opté por este sensor debido a su económico precio.  El LM35 reacciona linealmente (o casi) entre temperaturas  de -50° a 150° Celsius variando la tensión de su pata de salida en 10mV/°C por lo tanto para registrar en el rango de temperaturas ambientes (-30 °C a 50 °C) hay que realizar una adaptación en la implementación electrónica. Esta adaptación la encontré en http://www.ucontrol.com.ar/Articulos/E-S/e-s.htm#26 la que una vez realizada y calibrada resulto bastante acertada a la realidad contrastada con un termómetro de bulbo. Probado a temperaturas de 40°C y cercanas a -20°C en el Frízer.


Según el artículo: con el circuito mostrado más arriba obtenemos lo deseado.   Su implementación es muy sencilla y para tal es necesario en uso de 2 entradas análogas del PIC y la entrada de tensión de referencia para el convertidor.
Las resistencia de 1K5 y 3K3 (deben ser de 1%) proveen la tensión de referencia y con tales valores será de aproximadamente 3.5Vcc
Los diodos 1N914 le otorgan al LM35 de una tensión de masa superior a la masa real del circuito y esto es lo que nos permite medir temperaturas por debajo de 0°C.
Por el motivo anterior y considerando que la tensión que el LM35 tomará como masa puede variar con la temperatura es necesario conoces esa tensión para luego con los consiguientes cálculos matemáticos obtener la temperatura real, para conoces esa tensión de "masa" se usa la entrada AN1.
La señal de salida del LM35 es introducida al PIC por medio de AN0, entonces a esta altura ya tenemos todas las señales necesarias dentro del PIC, por lo que solo falta realizar los cálculos.

Para los mismo se hace lo siguiente:

Si AN0 > AN1

(Valor de AN0) - (Valor de AN1) = (Valor Temp.)

Si AN0 < AN1

(Valor de AN1) - (Valor de AN0) = (Valor Temp.)

Una ves obtenido Valor Temp hacemos:

(Valor Temp.) * (344 / 1023) = Temp   ----------> si usamos conversor de 10 bits
(Valor Temp.) * (344 /  255 ) = Temp   ----------> si usamos conversor de   8 bits

    donde:
    344 = tensión de referencia * 100

Entonces ya tenemos la temperatura real, solo faltaría saber si es por sobre o debajo de cero grado, para lo cual analizamos nuevamente cual de los 2 valores de entrada era el mayor:

Si AN0 > AN1 la temperatura es por sobre cero grado centígrado o sea +XX°C

Si AN0 < AN1 la temperatura es por debajo de cero grados centígrados o sea -XX°C
El sensor de temperatura quedó de la siguiente manera:


Bueno, hasta aca llegue con el informe, en un par de días continuo con la implementación de la placa del PIC y lo que llevo elaborado del software del mismo. A su vez algo que tengo funcionando en la PC para recibir los datos  (en PERL sobre LINUX)
Gracias por la atención

DANIEL - LU5YBR