Paso 4: Crear el código de
Este paso fue por lejos la mayoría tiempo intensivo parte de este proyecto. Por suerte para usted, he hecho la mayor parte de la obra ya! En este paso, se intentará explicar la mecánica de fluidos y el camino que tomó llegar del voltaje aire volumen mediante algunas ecuaciones relevantes. Yo también he unido mi Arduino de código como un documento pdf, así que siéntase libre de echar un vistazo y cambiar los parámetros necesarios para su diseño.
1. conversión entre señales analógicas y digitales:
Cuando una señal analógica (como el voltaje producido por el sensor de presión) es procesada por el Arduino, se convierte en un valor digital entre 0 y 1023. Nuestro primer paso en el código después de la lectura de este valor es para convertir a un valor analógico. Aquí es el bit de código haciendo precisamente eso:
inputVolt = analogRead(analogInPin); Lee voltaje (0 a 1023)
voltios = inputVolt*(vs/1023.0);
2. conversión de un voltaje a presión:
El propósito del transductor de presión es hacer una diferencia de presión en una tensión, pero ahora queremos determinar la diferencia de presión basada en un voltaje dado. La hoja de datos proporciona una ecuación para hacer precisamente eso, y con alguna reorganización, la presión puede calcularse como sigue:
pressure_psi = (15/2)*(volt-2.492669); Presión en psi
Usted puede notar que un valor de 2.492669 se utiliza en vez del 2.5 que esperaba el sensor para producir en el equilibrio. Determiné este valor más preciso después de una serie de calibraciones demostró que no era mi valor de equilibrio en exactamente 2.5 V. Puede que necesite ajustar este número según las tendencias de su propio sensor.
3. psi a Pa
La ecuación dada en la hoja de datos nos da la presión en psi. Para facilitar aún más los cálculos, esto convertimos a Pascal, que es la unidad SI de presión.
pressure_pa = pressure_psi * 6894.75729; Presión en Pa
4. calcular el flujo másico de presión
Este siguiente paso implica algunos conocimientos de mecánica de fluidos y creativo algebra, pero en última instancia, le permite convertir su diferencia de presión en una tasa de flujo de masa. Puede ordenarse con la siguiente ecuación para resolver para W, la tasa de flujo másico en kg/s:
dP=((W^2)/2rho)*(1/A2^2−1/A1^2)
Donde dP es el cambio de presión en el tubo de Pa, W es la tasa de flujo másico en kg/s, rho es la densidad del aire en kg/m ^ 3 y A1 y A2 son las áreas de sección transversal de las dos secciones diferentes del tubo en m ^ 2. Después de reorganizar e incluyendo valores de rho y el A1 y A2 para mi diseño de tubo específico, pudo calcular W con el siguiente código:
massFlow = 1000*sqrt((abs(pressure_pa)*2*rho)/((1/(pow(area_2,2)))-(1/(pow(area_1,2))); Flujo másico de aire
La sintaxis en Arduino hace esto un poco desordenada, así que asegúrese de comprobar sus paréntesis. También incluye un factor de 1000 así que en el paso 5, terminan con L/s en vez de m ^ 3/s, que permite el volumen en una unidad estándar.
5. masa flujo a flujo volumétrico
Este paso es relativamente fácil-podemos convertir flujo de masa en flujo volumétrico dividiendo por la densidad.
volFlow = massFlow/rho; Flujo volumétrico de aire
6. cálculo de volumen
Finalmente, hemos llegado a un punto donde puede calcularse el volumen. Ya que Arduino no tiene la capacidad para realizar integrales, tenemos que agregar manualmente la tasa de flujo volumétrico en el tiempo. Puesto que el flujo volumétrico es simplemente el volumen con el tiempo, podemos resumir la tasa de flujo volumétrico en pequeños pedacitos de tiempo para calcular el volumen total. Esto puede hacerse usando un retraso en Arduino y multiplicando cada valor de la tasa de flujo volumétrico por un pequeño valor de dt.
volumen = volFlow * dt + volumen; Volumen total (esencialmente integrado en el tiempo)
DT = 0.001;
Delay(1);
Es la matemática! El resto del código sólo es configuración de la pantalla, definiendo variables y establecer los controles de botón.
El si declaración en el código hace que el volumen debe calcularse sólo cuando se empuja el botón del. Esta característica evita el cálculo de ser afectado por el ruido y también permite al usuario indicar cuando realmente fluye aire a través del tubo.