Cómo calibrar un sensor de flujo de líquido

Los medidores de flujo de fluidos son fáciles de calibrar por debajo del 10% de tolerancia del que está usando con su Raspberry Pi. Eso es porque dependen de cosas como la temperatura, la viscosidad, el número de Reynold, la velocidad, etc.

Pero dado que está utilizando una computadora para controlarla, es posible que pueda lograr el 1%.

Hay 2 formas de “calibrar” algo. Lo normal es probarlo con los estándares y certificar que está dentro de las especificaciones del fabricante o un estándar específico de la industria.

Pero la manera mejor y más simple de calibrar es medir la medida real de algo y tabular los errores reales. Eso es lo que hay que hacer aquí.

Básicamente, coloque controles arbitrarios para la velocidad de flujo en el rango de su interés y vea lo que hace. Volcar el flujo en un recipiente y medir cuánto en cuánto tiempo. Luego aumente la velocidad de flujo a través de la región de su interés. Tabule las velocidades de flujo reales para los comandos de velocidad real.

Querrás repetir un día más tarde, al menos una vez. Sugeriría 3 ejecuciones, para que pueda calcular la desviación estándar de la incertidumbre de su sistema. eso también le dirá si puede continuar usando el medidor de flujo de $ 10 o si necesita uno mejor.

Debe tener en cuenta la temperatura y repetir las pruebas a otra temperatura.

Y si lo está usando con diferentes líquidos, repita también con ellos.

Entonces es solo cuestión de poner las tablas en su código y extrapolar los puntos intermedios, y quizás también una entrada de sensor de temperatura. Uno leería la frecuencia del pulso, verificaría la temperatura, buscaría en las entradas de la tabla que enmarcan la lectura y extrapolaría un valor de salida.

No puedo ayudarte con tu código: ha pasado demasiado tiempo desde que usé el ensamblaje.

buena suerte.

Voy a agregar a la buena respuesta de Jock. Cuando esté midiendo los flujos, deseará orientar el medidor de flujo de la misma manera que estará en uso. También debe instalar tuberías o mangueras similares a las que va a usar. no desea simplemente conectarle una manguera y dejarla correr en un balde. Esto usa el dispositivo como una boquilla y está introduciendo un montón o errores innecesarios en el sistema.

Este medidor de flujo devuelve un pulso por aproximadamente 2.25 ml. Esto significa que tiene la opción de contar pulsos por período de tiempo o tiempo entre pulsos.

Eché un vistazo a su código que tiene al menos un error: 1 litro = 0.001 ml, no 0.0001 ml. Tiene un 0 adicional después del punto decimal en .000225. Debería ser .00225. En realidad, sería más fácil de leer si se escribiera 0.00225.

En esta linea

threading.Timer (1, milliliterRate) .start ()

parece que está intentando llamar a una función de forma recursiva ya que milliliterRate es el nombre de la función desde la que la está llamando. Creo que si ejecutas tanto tiempo obtendrás un error de pila de algún tipo.

No tengo una Raspberry Pi en mi poder para probar su código, pero por lo que puedo seguir, no creo que se ejecute sin arrojar errores de tiempo de ejecución. Parece ser innecesario, complicado y complicado.
Básicamente quieres

1) registra el tiempo.

2) comenzar a contar pulsos

3) una vez que haya pasado suficiente tiempo, deje de contar pulsos

4) convertir pulsos a velocidad de flujo.

5) cero todos los valores

6) repetir

La otra opción es:

  1. detectar un pulso
  2. registre el tiempo del pulso.
  3. detectar el siguiente pulso
  4. grabar ese tiempo
  5. reste la segunda vez de la primera.
  6. Convierta el tiempo por volumen en volumen por tiempo.

Si está utilizando la segunda opción, necesitará tiempos precisos a microsegundos. Hay muchas opciones de tiempo, temporizador y reloj y tendría que explorar cómo funcionan.

Para calibrar lo que va a hacer es establecer un flujo constante a través de su medidor de flujo y luego tomar un montón de mediciones en ese flujo. Los guardaría en un archivo para poder hacer algunas estadísticas sobre ellos y ver qué tan consistente era el medidor. Haría esto por al menos 5 caudales diferentes entre los flujos mínimo y máximo que esperaba. Si la temperatura del fluido va a cambiar con el tiempo, la repetirá para diferentes temperaturas.
Exportaría el archivo fuera de la frambuesa y lo graficaría para ver qué tan fluidos eran los datos. Si no fuera lo suficientemente bueno para su uso, estaría tentado a ajustarle una ecuación de potencia muy probable. La ecuación probablemente tomaría la forma de V = (aNV ^ b) (cT ^ d) donde V es el caudal volumétrico, NV es el caudal volumétrico nominal, T es la temperatura en una escala absoluta y a, b, c, d son constantes Si no puede hacer que una ecuación se ajuste, entonces, como sugiere Jock, debe ir con una tabla de búsqueda.

Editado para agregar un responde al comentario original de los carteles.

Primero, determinemos cuáles son los requisitos de tiempo. Las especificaciones para este medidor de flujo ofrecen un rango de 1 a 30 litros por minuto y 2.25 ml por pulso. Con el flujo más bajo de 1 L / min, recibirá 1 / 0.0225 pulsos por minuto, que es 444.444 pulsos / min. o 7.407 pulsos por segundo. Tomar el recíproco de esto significa que obtienes un pulso cada 135 milisegundos. A 30 L / min, los números correspondientes son 13,333.3 pulsos / min, 222.222 pulsos / seg o un pulso cada 4.5 milisegundos.

La siguiente pregunta es qué significa tiempo en una computadora o, lo que es más importante, a qué se refiere un reloj en una computadora. En una computadora, generalmente tiene un mínimo de dos relojes. Uno se llama reloj de tiempo real y realiza un seguimiento de cuándo es. Esto es lo que pensamos cuando decimos reloj. Por ejemplo, son las 2:30 pm del 21 de agosto de 2016. La forma en que las computadoras realizan un seguimiento de esto es en forma de tantos segundos desde un punto cero llamado época. La resolución de esto depende principalmente del hardware y del sistema operativo. Además, una Raspberry Pi no tiene un reloj real que mantenga la hora en que se apaga. Esto significa que si escribe date en un indicador de shell, obtendrá la fecha que la frambuesa pi pensó que era cuando se apagó o comenzará de nuevo desde la época. No estoy seguro de lo que hará. Para acceder a esta información en Python utilizamos la función time.time ()

Ahora intentemos time.time () y veamos qué hace. Estoy en Windows 7 en una computadora portátil con un AMD E-450 y la versión de Python que estoy usando es 2.7.10 tal vez 2.7.11. Si va a ejecutar esto en 3.x lo que sea, tendrá que rehacer la declaración de impresión

Ejecuté este programa varias veces.

#Time demo
desde tiempo de importación
para i en rango (10):
t1 = tiempo ()
t2 = tiempo ()
imprima “t1 =% .5f t2 =% .5f diferencia =% .5f”% (t1, t2, t2-t1)

Esta es mi primera carrera

t1 = 1471806162.63900 t2 = 1471806162.63900 diferencia = 0.00000

t1 = 1471806162.64000 t2 = 1471806162.64000 diferencia = 0.00000

t1 = 1471806162.64000 t2 = 1471806162.64000 diferencia = 0.00000

t1 = 1471806162.64000 t2 = 1471806162.64000 diferencia = 0.00000

t1 = 1471806162.64000 t2 = 1471806162.64000 diferencia = 0.00000

t1 = 1471806162.64000 t2 = 1471806162.64000 diferencia = 0.00000

t1 = 1471806162.64000 t2 = 1471806162.64000 diferencia = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 diferencia = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 diferencia = 0.00000

t1 = 1471806162.64100 t2 = 1471806162.64100 diferencia = 0.00000

y esta es mi tercera carrera

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

t1 = 1471806244.52200 t2 = 1471806244.52200 diferencia = 0.00000

Observe dos cosas, time.time () solo devuelve el tiempo con una precisión de un milisegundo y que en la primera ejecución tardó 2 milisegundos en ejecutar este ciclo simple y en la tercera ejecución tardó menos de un milisegundo en ejecutar el tercero.

¿Qué tan significativo es un milisegundo? Examine el caso de flujo de 30 L / min y estamos tomando el tiempo de pulso a pulso. Obtiene un pulso cada 4.5 milisegundos, pero no tiene la resolución para medir los 4.5 milisegundos, lo que significa que la diferencia de tiempo será de 4 ms o 5 ms. Ahora, un espaciado de pulso de 5 ms se traducirá a 27 L / min y un pulso de 4 ms se traducirá a 33 L / m. A 1 L / min, el error será mucho mejor si el tiempo llega a 134 milisegundos en lugar de 135 ms, el flujo se traducirá a 1.007 L / min. Esto todavía se acerca a un error del 1% además de las inconsistencias que existan con el dispositivo en sí.

En su lugar, intente contar pulsos durante 1 segundo. Bueno, a 222.22 pulsos por segundo, registraría 222 o 223 pulsos en un segundo. El primer caso 29.97 L / min y el segundo le da 30.1 L / min, que es mucho mejor. Espere, intente con el otro extremo 1 L / m es 7.4 pulsos por segundo, así que en el segundo va a contar 7 pulsos que calculan a 0.945 L / m, un error del 6%. Más sobre todo entre 0.945 y 1.19 L / min se medirá como 0.945 L / m.

Por supuesto, puede ir a time.clock () para una gran mejora

desde el reloj de importación de tiempo
para i en rango (10):
t1 = reloj ()
t2 = reloj ()
imprime “t1 =% .8f t2 =% .8f diferencia =% .8f”% (t1, t2, t2-t1)

Lo que produce esto:

t1 = 1169.33820822 t2 = 1169.33821009 diferencia = 0.00000187

t1 = 1169.33907113 t2 = 1169.33907300 diferencia = 0.00000187

t1 = 1169.33943197 t2 = 1169.33943322 diferencia = 0.00000124

t1 = 1169.33961862 t2 = 1169.33961924 diferencia = 0.00000062

t1 = 1169.33969141 t2 = 1169.33969203 diferencia = 0.00000062

t1 = 1169.33975113 t2 = 1169.33975175 diferencia = 0.00000062

t1 = 1169.33980961 t2 = 1169.33980961 diferencia = 0.00000000

t1 = 1169.33987120 t2 = 1169.33987183 diferencia = 0.00000062

t1 = 1169.33993466 t2 = 1169.33993466 diferencia = 0.00000000

t1 = 1169.33998817 t2 = 1169.33998879 diferencia = 0.00000062

Esta tarde este programa está dando una variación de aproximadamente 1 microsegundo. Anoche corría más cerca de 5 microsegundos. Todo depende de qué más esté sucediendo en el sistema.

Ahora hablemos sobre el dispositivo.

Algunas de las fuentes de error son:

1) Las dimensiones de la no son perfectas. Por ejemplo, si el dispositivo es más grande en las tres dimensiones, entonces tiene 1.01 ^ 3 = 1.03 o aproximadamente 3%. Un error del 1% en el tamaño es aproximadamente el diámetro de un cabello humano. Esto se ve afectado por la temperatura. No sé de qué está hecho, pero para el nylon a más de 50 ° C el efecto será de aproximadamente 1%.

Hay otro problema Supongo que hay alguna fuga alrededor de la rueda de paletas. Esta fuga dependerá de la viscosidad del fluido. La viscosidad de un fluido depende en gran medida de la temperatura. Para caudales bajos, esta fuga es una fracción mayor del volumen total que a caudales más altos.

Otros problemas con los que te vas a encontrar. Si vas a atrapar el líquido en un balde, ¿cómo vas a medir el volumen? Si tenía un cilindro graduado grande, tienen una precisión de aproximadamente 1%. Si está tratando de medir un volumen de 30 L con un cilindro graduado de 1 L, agregará un error con cada medición. Tendría que sacar mi libro de encuestas para calcular cuánto se estima que suma cada medición. Probablemente la herramienta más precisa que tiene en casa es una cinta métrica. Ahora suponga que construyó una caja de madera cúbica de 300 mm de lado e hizo todo lo que tenía que hacer para evitar la inclinación de los lados. Esto contendrá 27L. Sin embargo, en lugar de 300 mm, en realidad era de 301 mm de lado. Retendría 27.3L, que es un error del 1%. Construir una caja de madera con una precisión de mm requeriría un ebanista experto.

Mi predicción es que lucharás con esto para obtener un error constante por debajo del 5%.

Preguntas por una mesa. Digamos que para calibrar esto, decide contar los clics durante 10 segundos. Configura su sistema y lo ajusta para que fluya 1L / min. Después de repetidas pruebas, determina que con un flujo de 1L / min obtiene 70 pulsos en 10 segundos. Repite esto durante 5 L / min y así sucesivamente hasta 30L / min. Ahora tienes una mesa que se parece a esto.

Pulsos de flujo

(L / min) (número)

1 70

5 360

10 740

15 1120

20 1500

25 1900

30 2450

Ahora tiene dos opciones: puede intentar ajustar una ecuación a estos datos. Intencionalmente hice esto no lineal en los extremos y lineal en el centro. Por un lado, mi instinto me dice que esta puede ser la forma en que funciona el sensor y también porque va a dificultar el ajuste de una curva. Podría dividirlo y convertirlo en tres ecuaciones, por ejemplo, una para pulsos entre 70 y 740, otra para pulsos entre 740 y 1500 y una tercera para pulsos entre 1500 y 2450. Tendrá que ajustar las curvas lo suficientemente bien como para tener resultados extraños cerca de las transiciones. También puedes simplemente trabajar con la mesa. Digamos que cuento 99 pulsos en 10 segundos. Voy a la mesa y determino que 99 está entre 70 y 360. Allí tengo 29 pulsos más de los que tendría para 1 L / min. Si uso una interpolación lineal, entonces 360 – 70 es 290. 29/290 es 0.1, así que estoy una décima parte de 1 L / min a 5 L / min. Para calcular eso hago 5 – 1 = 4, así que termino con 1.4 L / min.

Mucho de esto se reduce a lo que está haciendo y a la precisión que realmente necesita.

Para la calibración del sensor de flujo de líquido, debe tener en cuenta los pulsos generados por el sensor de flujo. A continuación se encuentran la guía de calibración punto a punto para el sensor de flujo.

  • Necesita 1 medidor de flujo, bomba, tubería, báscula, temporizador
  • Ensamble el medidor de flujo en la tubería y coloque la balanza en la salida
  • arranque la bomba y tome la lectura de 1 minuto
  • Calcule la cantidad de agua que llega en la balanza en un minuto
  • pon esa válvula en tu sensor de flujo
  • verifique las otras lecturas con la válvula de estrangulamiento
  • medidor de flujo está calibrado

Si desea calibrar con mayor precisión con un laboratorio de calibración de flujo acreditado, envíe un sensor de flujo a los dispositivos de control de proceso

Los dispositivos de control de procesos están proporcionando servicios de calibración de medidores de flujo en Mumbai, India.

Calibración del medidor de flujo en India – Dispositivos de control de procesos

Hola,

Dirigiéndome directamente a su pregunta, no diré que es imposible, pero no será fácil para usted hacerlo en casa, ya que tendrá que calibrarlo “contra” un medidor de flujo más preciso y preciso.

Teóricamente los montará en serie y luego ajustará la salida de su medidor de flujo hasta que coincida con el resultado del medidor de flujo de referencia.

Este es el procedimiento a realizar, ya sea en la plataforma de calibración o en casa.

Espero haber sido de su ayuda pero, sin embargo, estoy a su entera disposición mientras tanto para cualquier cosa que pueda ser de ayuda.

Un cordial saludo desde Portugal / David