Tabla de contenido:

¡Aprenda aquí sobre un sensor extremadamente importante !: 11 pasos
¡Aprenda aquí sobre un sensor extremadamente importante !: 11 pasos

Video: ¡Aprenda aquí sobre un sensor extremadamente importante !: 11 pasos

Video: ¡Aprenda aquí sobre un sensor extremadamente importante !: 11 pasos
Video: 🛑 4 SENSORES Que Causan PERDIDA De POTENCIA Si Fallan En Tu CARRO😱 2024, Mes de julio
Anonim
¡Aprenda aquí sobre un sensor extremadamente importante!
¡Aprenda aquí sobre un sensor extremadamente importante!

¿Cómo se puede averiguar el nivel del agua en un tanque de agua? Para monitorear este tipo de cosas, puede usar un sensor de presión. Este es un equipo muy útil para la automatización industrial, en general. Hoy, vamos a hablar sobre esta familia exacta de sensores de presión MPX, específicamente para la medición de presión. Le presentaré el sensor de presión MPX5700 y realizaré un ensamblaje de muestra utilizando el ESP WiFi LoRa 32.

Hoy no usaré la comunicación LoRa en el circuito, ni WiFi ni Bluetooth. Sin embargo, opté por este ESP32 porque ya enseñé en otros videos cómo usar todas las funciones que discuto hoy.

Paso 1: demostración

Demostración
Demostración
Demostración
Demostración

Paso 2: Recursos utilizados

Recursos utilizados
Recursos utilizados

• Sensor de presión diferencial MPX5700DP

• Potenciómetro de 10k (o potenciómetro)

• Protoboard

• Cables de conexión

• Cable USB

• ESP WiFi LoRa 32

• Compresor de aire (opcional)

Paso 3: ¿Por qué medir la presión?

¿Por qué medir la presión?
¿Por qué medir la presión?

• Existen numerosas aplicaciones en las que la presión es una variable de control importante.

• Podemos involucrar sistemas de control neumáticos o hidráulicos.

• Instrumentación médica.

• Robótica.

• Control de procesos industriales o medioambientales.

• Medición de nivel en depósitos de líquido o gas.

Paso 4: La familia de sensores de presión MPX

La familia de sensores de presión MPX
La familia de sensores de presión MPX

• Son transductores de presión en tensión eléctrica.

• Se basan en un sensor piezo resistivo, donde la compresión se convierte en una variación de la resistencia eléctrica.

• Existen versiones capaces de medir pequeñas diferencias de presión (de 0 a 0.04atm), o grandes variaciones (de 0 a 10atm).

• Aparecen en varios paquetes.

• Pueden medir presión absoluta (relativa al vacío), presión diferencial (la diferencia entre dos presiones, p1 y p2) o manométrica (relativa a la presión atmosférica).

Paso 5: el MPX5700DP

El MPX5700DP
El MPX5700DP
El MPX5700DP
El MPX5700DP

• La serie 5700 cuenta con sensores absolutos, diferenciales y de calibre.

• El MPX5700DP puede medir una presión diferencial de 0 a 700 kPa (aproximadamente 7 atm).

• El voltaje de salida varía de 0.2V a 4.7V.

• Su potencia es de 4,75 V a 5,25 V

Paso 6: para la demostración

Para la demostración
Para la demostración

• Esta vez, no haremos una aplicación práctica usando este sensor; solo lo montaremos y realizaremos algunas medidas a modo de demostración.

• Para ello, utilizaremos un compresor de aire directo para aplicar presión en la entrada de alta presión (p1) y obtener la diferencia en relación a la presión atmosférica local (p2).

• El MPX5700DP es un sensor unidireccional, lo que significa que mide diferencias positivas donde p1 siempre debe ser mayor o igual que p2.

• p1> p2 y la diferencia será p1 - p2

• Hay sensores diferenciales de dos vías que pueden evaluar diferencias positivas y negativas.

• Aunque es solo una demostración, podríamos usar fácilmente los principios aquí para controlar, por ejemplo, la presión en un depósito de aire, alimentado por este compresor.

Paso 7: Calibración del ESP ADC

Calibración del ESP ADC
Calibración del ESP ADC
Calibración del ESP ADC
Calibración del ESP ADC
Calibración del ESP ADC
Calibración del ESP ADC

• Como sabemos que la conversión analógico-digital de ESP no es completamente lineal y puede variar de un SoC a otro, comencemos por hacer una simple determinación de su comportamiento.

• Utilizando un potenciómetro y un multímetro, mediremos la tensión aplicada al AD y la relacionaremos con el valor indicado.

• Con un sencillo programa para leer el DA y recoger la información en una tabla, pudimos determinar la curva de su comportamiento.

Paso 8: Calcular la presión

Calcular la presión
Calcular la presión
Calcular la presión
Calcular la presión

• Aunque el fabricante nos proporciona la función con el comportamiento del componente, siempre es recomendable realizar una calibración cuando hablamos de tomar medidas.

• Sin embargo, dado que es solo una demostración, usaremos directamente la función que se encuentra en la hoja de datos. Para ello, lo manipularemos de forma que nos dé la presión en función del valor ADC.

* Recuerde que la fracción del voltaje aplicado al ADC por el voltaje de referencia debe tener el mismo valor que el ADC leído por el ADC total. (Sin tener en cuenta la corrección)

Paso 9: Montaje

Montaje
Montaje
Montaje
Montaje

• Para conectar el sensor, busque la muesca en uno de sus terminales, que indica el pin 1.

• Contando desde allí:

El pin 1 proporciona salida de señal (de 0 V a 4,7 V)

El pin 2 es la referencia. (GND)

Pin 3 para poder. (Vs)

• Como la salida de la señal es 4.7V, usaremos un divisor de voltaje para que el valor máximo sea equivalente a 3V3. Para ello, realizamos el ajuste con el potenciómetro.

Paso 10: código fuente

Código fuente
Código fuente
Código fuente
Código fuente

Código fuente: #Incluye y #define

// Bibliotecas para utilização do display oLED # include // Necessário apenas para o Arduino 1.6.5 e posterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // Os pinos do OLED estão conectado ao ESP32 pelos sigue GPIO's: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST deve ser ajustado por software

Fuente: Variables y constantes globales

Pantalla SSD1306 (0x3c, SDA, SCL, RST); // Instanciando y ajustando los pinos del objeto "display" const int amostras = 10000; // número de amostras coletadas para a média const int pin = 13; // pino de leitura const float fator_atm = 0.0098692327; // fator de conversão para atmosferas const float fator_bar = 0.01; // fator de conversão para bar const float fator_kgf_cm2 = 0.0101971621; // fator de conversão kgf / cm2

Código fuente: Configuración ()

configuración vacía () {pinMode (pin, ENTRADA); // pino de leitura analógica Serial.begin (115200); // iniciando una serie // Inicia o display display.init (); display.flipScreenVertically (); // Vira a tela verticalmente}

Código fuente: Loop ()

void loop () {float medidas = 0.0; // variável para manipular as medidas float pressao = 0.0; // variável para armazenar o valor da pressão // inicia a coleta de amostras do ADC for (int i = 0; i (5000)) // se está ligado a más de 5 segundos {// Limpiar el búfer para mostrar display.clear (); // ajusta o alinhamento para una pantalla esquerda.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta una fuente para Arial 10 display.setFont (ArialMT_Plain_16); // Guarde ningún búfer, muestre una pantalla pressao.drawString (0, 0, String (int (pressao)) + "kPa"); display.drawString (0, 16, String (pressao * fator_atm) + "atm"); display.drawString (0, 32, String (pressao * fator_kgf_cm2) + "kgf / cm2"); // no guardar búfer o valor para ADC display.drawString (0, 48, "adc:" + String (int (medidas))); } else // se está ligado a menos de 5 segundos, exibe una pantalla inicial {// limpa o buffer do display display.clear (); // Ajusta o alinhamento para centralizado display.setTextAlignment (TEXT_ALIGN_CENTER); // ajusta una fuente para Arial 16 display.setFont (ArialMT_Plain_16); // eliminar sin búfer display.drawString (64, 0, "Sensor Pressão"); // eliminar sin búfer display.drawString (64, 18, "Diferencial"); // ajusta una fuente para Arial 10 display.setFont (ArialMT_Plain_10); // eliminar sin búfer display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display (); // transferir o buffer para o display delay (50); }

Código fuente: función que calcula la presión en kPa

float calculaPressao (float medida) {// Calcula a pressão com o // valor do AD corrigido pela função corrigeMedida () // Esta função foi escrita de acordo com dados do fabricante // e NÃO LEVA EM CONSIDERAÇÃO OS POSSÍVEIS DESVIOS DO COMPONENTE (erro) return ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858; }

- IMÁGENES

Código fuente: función que corrige el valor AD

float corrigeMedida (float x) {/ * Esta função foi obtida através da relação entre a tensão aplicada no AD e valor lido * / return 4.821224180510e-02 + 1.180826610901e-03 * x + -6.640183463236e-07 * x * x + 5.235532597676e-10 * x * x * x + -2.020362975028e-13 * x * x * x * x + 3.809807883001e-17 * x * x * x * x * x + -2.896158699016e-21 * x * x * x * x * x * x; }

Paso 11: Archivos

Descarga los archivos:

PDF

INO

Recomendado: