Índice:

Aprenda aqui sobre um sensor extremamente importante !: 11 etapas
Aprenda aqui sobre um sensor extremamente importante !: 11 etapas

Vídeo: Aprenda aqui sobre um sensor extremamente importante !: 11 etapas

Vídeo: Aprenda aqui sobre um sensor extremamente importante !: 11 etapas
Vídeo: Aula 11 funcionamento e teste do Sensor Map 2024, Julho
Anonim
Aprenda aqui sobre um sensor extremamente importante!
Aprenda aqui sobre um sensor extremamente importante!

Como você pode saber sobre o nível de água em um tanque de água? Para monitorar esse tipo de coisa, você pode usar um sensor de pressão. Este é um equipamento muito útil para automação industrial em geral. Hoje, vamos falar sobre esta família exata de sensores de pressão MPX, especificamente para medição de pressão. Apresentarei o sensor de pressão MPX5700 e realizarei uma montagem de amostra usando o ESP WiFi LoRa 32.

Não vou usar comunicação LoRa no circuito hoje, nem WiFi nem Bluetooth. Porém, optei por esse ESP32 porque já ensinei em outros vídeos como usar todos os recursos que discuto hoje.

Etapa 1: Demonstração

Demonstração
Demonstração
Demonstração
Demonstração

Etapa 2: Recursos usados

Recursos Usados
Recursos Usados

• Sensor de pressão diferencial MPX5700DP

• potenciômetro de 10k (ou trimpot)

• Protoboard

• Fios de conexão

• Cabo USB

• ESP WiFi LoRa 32

• Compressor de ar (opcional)

Etapa 3: Por que medir a pressão?

Por que medir a pressão?
Por que medir a pressão?

• Existem inúmeras aplicações onde a pressão é uma variável de controle importante.

• Podemos envolver sistemas de controle pneumático ou hidráulico.

• Instrumentação médica.

• Robótica.

• Controle de processos industriais ou ambientais.

• Medição de nível em reservatórios de líquido ou gás.

Etapa 4: A família MPX de sensores de pressão

A família MPX de sensores de pressão
A família MPX de sensores de pressão

• São transdutores de pressão em tensão elétrica.

• Baseiam-se em um sensor piezo-resistivo, onde a compressão é convertida em uma variação da resistência elétrica.

• Existem versões capazes de medir pequenas diferenças de pressão (de 0 a 0,04atm) ou grandes variações (de 0 a 10atm).

• Eles aparecem em vários pacotes.

• Eles podem medir a pressão absoluta (em relação ao vácuo), a pressão diferencial (a diferença entre duas pressões, p1 e p2) ou manômetro (em relação à pressão atmosférica).

Etapa 5: O MPX5700DP

O MPX5700DP
O MPX5700DP
O MPX5700DP
O MPX5700DP

• A série 5700 apresenta sensores absolutos, diferenciais e de manômetro.

• O MPX5700DP pode medir uma pressão diferencial de 0 a 700kPa (aproximadamente 7atm).

• A tensão de saída varia de 0,2 V a 4,7 V.

• Sua alimentação é de 4,75 V a 5,25 V

Etapa 6: para a demonstração

Para a demonstração
Para a demonstração

• Desta vez, não faremos uma aplicação prática utilizando este sensor; iremos apenas montá-lo e realizar algumas medições como uma demonstração.

• Para isso, usaremos um compressor de ar direto para aplicar pressão na entrada de alta pressão (p1) e obter a diferença em relação à pressão atmosférica local (p2).

• O MPX5700DP é um sensor unidirecional, o que significa que ele mede diferenças positivas onde p1 deve ser sempre maior ou igual a p2.

• p1> p2 e a diferença será p1 - p2

• Existem sensores diferenciais bidirecionais que podem avaliar diferenças negativas e positivas.

• Embora seja apenas uma demonstração, poderíamos facilmente usar os princípios aqui para controlar, por exemplo, a pressão em um reservatório de ar, alimentado por este compressor.

Etapa 7: Calibrar o ESP ADC

Calibrando o ESP ADC
Calibrando o ESP ADC
Calibrando o ESP ADC
Calibrando o ESP ADC
Calibrando o ESP ADC
Calibrando o ESP ADC

• Como sabemos que a conversão analógico-digital do ESP não é completamente linear e pode variar de um SoC para outro, vamos começar fazendo uma determinação simples de seu comportamento.

• Usando um potenciômetro e um multímetro, vamos medir a tensão aplicada ao AD e relacioná-la ao valor indicado.

• Com um programa simples de leitura do AD e coleta das informações em uma tabela, pudemos determinar a curva de seu comportamento.

Etapa 8: Calculando a pressão

Calculando a pressão
Calculando a pressão
Calculando a pressão
Calculando a pressão

• Embora o fabricante nos forneça a função com o comportamento do componente, é sempre aconselhável realizar uma calibração quando se trata de fazer medições.

• No entanto, por se tratar apenas de uma demonstração, usaremos diretamente a função encontrada na ficha técnica. Para isso, vamos manipulá-lo de forma que nos dê a pressão em função do valor do ADC.

* Lembre-se que a fração da tensão aplicada ao ADC pela tensão de referência deve ter o mesmo valor que o ADC lido pelo ADC total. (Desconsiderando a correção)

Etapa 9: Montagem

conjunto
conjunto
conjunto
conjunto

• Para conectar o sensor, procure o entalhe em um de seus terminais, que indica o pino 1.

• Contando a partir daí:

O pino 1 fornece saída de sinal (de 0 V a 4,7 V)

O pino 2 é a referência. (GND)

Pino 3 para alimentação. (Vs)

• Como o sinal de saída é 4,7 V, usaremos um divisor de tensão para que o valor máximo seja equivalente a 3 V3. Para isso, fizemos o ajuste com o potenciômetro.

Etapa 10: Código Fonte

Código Fonte
Código Fonte
Código Fonte
Código Fonte

Código-fonte: #Includes and #defines

// 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 conectados ao ESP32 pelos seguintes GPIO's: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST deve ser usado por software

Fonte: Variáveis globais e constantes

Display SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display" const int. = 10000; // número de 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 Fonte: Configuração ()

void setup () {pinMode (pin, INPUT); // pino de leitura analógica Serial.begin (115200); // inicia um serial // Inicia o display display.init (); display.flipScreenVertically (); // Vira a tela verticalmente}

Código-fonte: Loop ()

void loop () {float medidas = 0,0; // variável para manipular como medidas float pressao = 0,0; // variável para armazenar o valor da pressão // inicia a coleta de propriedade do ADC para (int i = 0; i (5000)) // se está ligado a mais que 5 segundos {// Limpa o buffer do display display.clear (); // ajusta o alinhamento para a exibição esquerda.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_16); // Escreve no buffer exibe um pressao display.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"); // leva sem buffer o valor do ADC display.drawString (0, 48, "adc:" + String (int (medidas))); } else // se está ligado a menos de 5 segundos, exibe a tela inicial {// limpa o buffer do display display.clear (); // Ajusta o alinhamento para centralizado display.setTextAlignment (TEXT_ALIGN_CENTER); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); // sem buffer display.drawString (64, 0, "Sensor Pressão"); // levou no buffer display.drawString (64, 18, "Diferencial"); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_10); // sem buffer display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display (); // transfere o buffer para o display delay (50); }

Código fonte: Função que calcula a pressão em 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) retorno ((corrigeMedida (medida) / 3,3) - 0,04) / 0,0012858; }

- IMAGENS

Código fonte: função que corrige o valor AD

float corrigeMedida (float x) {/ * Esta função foi obtida através da relação entre a aplicaçã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; }

Etapa 11: Arquivos

Baixe os arquivos:

PDF

EU NÃO

Recomendado: