Como instalar o sensor de pressão barométrica BMP180 em um Arduino

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


O sensor de pressão barométrica BMP180 é um ótimo sensor que pode ser usado para prever o clima, detectar altitude e medir a velocidade vertical. É perfeito para estações meteorológicas, veículos com controle remoto, balões meteorológicos e muitos outros projetos. Também é um sensor extremamente sensível. Como você verá em um minuto, ele pode detectar alterações na altitude de apenas alguns centímetros.

Como instalar o sensor de pressão barométrica BMP180 em um Arduino 5

Neste tutorial, mostrarei como configurar o BMP180 em um Arduino, para que você possa medir a pressão barométrica e a altitude do solo ou do nível do mar.

Mas antes de entrar em detalhes, vamos conhecer um pouco da pressão barométrica e como o BMP180 funciona.

O que é pressão barométrica?

Pressão barométrica (também conhecida como pressão atmosférica), é a pressão causada pelo peso do ar pressionando a Terra. Imagine uma coluna de ar subindo da superfície da Terra até o topo da atmosfera. O ar na atmosfera tem massa, então a gravidade faz com que o peso dessa coluna exerça pressão na superfície.

Tutorial do Arduino BMP180 - Diagrama de pressão atmosférica

A pressão criada por uma coluna de 1 × 1 polegada de ar que chega ao topo da atmosfera é definida como uma atmosfera (atm) de pressão. Essa coluna de ar pesa 14,7 libras, razão pela qual um atm é igual a 14,7 libras por polegada quadrada (psi).

A unidade SI para pressão é o Pascal (Pa). Um Pascal é definido como um Newton de força por metro quadrado. O BMP180 gera leituras de pressão em Pascal, mas são convertidas em hectoPascal (hPa) pela biblioteca de software que vamos usar. Você pode usar a tabela abaixo para converter de hPa para outras unidades comuns de pressão:

Unidade 1 hPa =
Pascal 100 Pa
Newtons por metro quadrado 100 N / m
Atmosfera 0.000986923 atm
Barra 0,001 bar
Millibar 1 mbar
Milímetros de mercúrio 0.750063755 mmHg
Torr 0.750061683 torr
Libras por polegada quadrada 0,014503774 psi

Como o BMP180 funciona

O BMP180 é um sensor piezoresistivo que detecta pressão. Os sensores piezoresistivos são compostos de um material semicondutor (geralmente silício) que altera a resistência quando uma força mecânica como a pressão atmosférica é aplicada.

O BMP180 mede pressão e temperatura, porque a temperatura altera a densidade dos gases como o ar. Em temperaturas mais altas, o ar não é tão denso e pesado, portanto aplica menos pressão no sensor. Em temperaturas mais baixas, o ar é mais denso e pesa mais, por isso exerce mais pressão no sensor. O sensor utiliza medições de temperatura em tempo real para compensar as leituras de pressão por alterações na densidade do ar.

O BMP180 gera um valor de temperatura não compensada (UT) e um valor de pressão não compensada (UP). A medição da temperatura é realizada primeiro, seguida pela medição da pressão. Este fluxograma descreve as etapas que o sensor executa ao realizar uma medição:

Tutorial do Arduino BMP180 - Fluxograma de medição

O BMP180 possui uma EEPROM de 176 bits que contém 11 coeficientes de calibração diferentes, exclusivos de cada sensor. Estes, juntamente com o UP e o UT, são usados ​​para calcular a verdadeira pressão e temperatura barométrica. A verdadeira pressão e temperatura são calculadas usando algoritmos bastante complexos:

Leia Também  Estas soluções de hospedagem são as mais populares

Tutorial do Arduino BMP180 - Algoritmos de pressão e temperatura

Essa matemática é realizada pela biblioteca que vamos usar, portanto, não precisamos codificá-la no esboço.

O sensor que estou usando neste tutorial é uma placa da Adafruit que usa o sensor de pressão barométrica Bosch BMP180:

Tutorial do Arduino BMP180 - Sensor BMP180

O Bosch BMP180 funciona com 3.3V, mas muitas placas de interrupção têm um regulador de tensão e um comutador de nível I2C, para que você possa alimentá-lo com 3.3V ou 5V.

Este diagrama mostra a pinagem do BMP180:

Tutorial do sensor de pressão Arduino - Diagrama de pinos BMP180

Conectando o BMP180 ao Arduino

O BMP180 se comunica com o Arduino através do I2C. Os pinos I2C do Arduino (SDA e SCL) são diferentes, dependendo do seu Arduino. Verifique a tabela abaixo para encontrar os pinos I2C de algumas placas comuns do Arduino:

Como configurar um teclado em um Arduino - Arduino I2C Pins

Para um Arduino Uno, as conexões terão a seguinte aparência:

Sensor de pressão barométrica do Arduino - Diagrama de fiação BMP180

Conectei o BMP180 ao pino de 5V neste exemplo, mas você também pode alimentá-lo a partir do pino de 3,3V.

Instalando a biblioteca BMP180

Antes de começarmos a programar o BMP180, faça o download e instale a biblioteca. Vou usar uma biblioteca BMP180 realmente útil da Sparkfun. Ele cuida de toda a matemática para calcular as verdadeiras leituras de temperatura e pressão, bem como da matemática para calcular a altitude.

Você pode baixar um arquivo ZIP da biblioteca neste link. Para instalá-lo, abra o IDE do Arduino, vá para Sketch> Include Library> Add Library e selecione o arquivo ZIP que você acabou de baixar.

Usando pressão barométrica para prever o clima

Alterações na pressão barométrica podem ser usadas para prever o clima. Uma pressão barométrica em queda é causada por uma massa de ar subindo da superfície da Terra. O vácuo criado pelo aumento da massa de ar forma uma área de baixa pressão na superfície. À medida que a massa de ar aumenta em altitude, ela esfria e se comprime. Isso condensa o vapor de água no ar, formando nuvens de chuva. Geralmente também traz vento, porque o ar circundante na superfície flui para a área de baixa pressão.

Uma pressão barométrica crescente é causada por uma massa de ar na atmosfera superior caindo na Terra. O peso da massa em queda pressiona a superfície, aumentando a pressão do ar abaixo dela. A massa de ar fica mais quente e se expande à medida que se aproxima da superfície. O ar quente em expansão é geralmente baixo em umidade, o que impede a formação de nuvens. Pressões barométricas crescentes geralmente indicam que o tempo quente e ensolarado está chegando.

Tutorial do Arduino BMP180 - Diagrama do tempo de alta pressão x baixa pressão

Pressão e temperatura de saída para o monitor serial

Este esboço imprimirá a pressão barométrica e a temperatura no monitor serial:

#include 
#include 

SFE_BMP180 bmp180;

void setup() 
  Serial.begin(9600);
  bool success = bmp180.begin();

  if (success) 
    Serial.println("BMP180 init success");
  


void loop() {

  char status;
  double T, P;
  bool success = false;

  status = bmp180.startTemperature();

  if (status != 0) 
    delay(1000);
    status = bmp180.getTemperature(T);

    if (status != 0) 
      status = bmp180.startPressure(3);

      if (status != 0) 
        delay(status);
        status = bmp180.getPressure(P, T);

        if (status != 0) 
          Serial.print("Pressure: ");
          Serial.print(P);
          Serial.println(" hPa");

          Serial.print("Temperature: ");
          Serial.print(T);
          Serial.println(" C");
        
      
    
  
}

Tente mover o sensor para cima e para baixo e você verá o valor da pressão mudar. O sensor é realmente sensível!

Tutorial do Arduino BMP180 - Pressão e temperatura não compensadas

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Esta é a pressão barométrica na sua localização e altitude atual. A pressão barométrica mudará de acordo com as condições climáticas locais, mas também mudará dependendo da sua altitude. Para comparar suas leituras com estações meteorológicas em diferentes altitudes e leituras de notícias e boletins meteorológicos, você deve ajustar essa leitura para remover o efeito da altitude. Todos os valores de pressão barométrica relatados por estações de notícias e meteorológicas adicionam uma certa pressão às leituras para fazer parecer que a medição foi feita a partir do nível do mar. Se você estiver construindo uma estação meteorológica, também desejará ajustar suas leituras.

A biblioteca Sparkfun tem uma função chamada nível de vedação (P, A) isso faz isso por você. Você só precisa fornecer a altitude (a partir do nível do mar) da sua localização atual. No esboço abaixo, insira sua altitude (em metros) na linha 6:

#include 
#include 

SFE_BMP180 bmp180;

int Altitude = 5; //current altitude in meters

void setup() 
  Serial.begin(9600);
  bool success = bmp180.begin();

  if (success) 
    Serial.println("BMP180 init success");
  


void loop() {

  char status;
  double T, P;
  bool success = false;

  status = bmp180.startTemperature();

  if (status != 0) 
    delay(1000);
    status = bmp180.getTemperature(T);

    if (status != 0) 
      status = bmp180.startPressure(3);

      if (status != 0) 
        delay(status);
        status = bmp180.getPressure(P, T);

        if (status != 0) 
          float comp = bmp180.sealevel(P, Altitude);
          
          Serial.print("Pressure: ");
          Serial.print(comp);
          Serial.println(" hPa");

          Serial.print("Temperature: ");
          Serial.print(T);
          Serial.println(" C");
        
      
    
  
}

A altitude da minha localização atual é de apenas 5 metros, então a diferença é pequena, mas afeta a pressão:

Tutorial do Arduino BMP180 - Pressão e temperatura compensadas

Explicação do Código

Primeiro, criamos um objeto chamado bmp180:

SFE_BMP180 bmp180;

Para inicializar o sensor BMP180 e baixar os coeficientes de calibração, precisamos chamar o início() método. Em caso de sucesso, ele retorna um valor diferente de zero:

sucesso bool = bmp180.begin ();

Seguindo o diagrama de fluxo mostrado anteriormente, primeiro usamos o startTemperature () método para iniciar uma medição de temperatura. Em caso de sucesso, ele também retorna um valor diferente de zero:

status = bmp180.startTemperature ();

Depois, esperamos pelo menos 4,5 milissegundos e usamos getTemperature (T) para receber o valor e armazená-lo na variável T:

status = bmp180.getTemperature (T);

o startPressure () O método envia o comando para iniciar a medição da pressão. Fornecemos um valor de superamostragem como parâmetro, que pode estar entre 0 e 3. Um valor de 3 fornece uma alta resolução, mas também um atraso maior entre as medições. Um valor 0 fornece uma resolução mais baixa, mas é mais rápido. A função retorna o número de milissegundos que o Arduino precisa esperar antes de ler o valor da pressão no sensor:

status = bmp180.startPressure (3);

Então usamos o getPressure () método para ler o valor da pressão e armazená-lo na variável P:

status = bmp180.getPressure (P, T);

Se você notar, também passamos a variável T, Já que o cálculo da pressão depende da temperatura.

Usando a pressão barométrica para medir a altitude

A pressão barométrica muda dependendo da altitude do sensor. Em altitudes mais baixas, há mais ar acima do sensor, portanto a pressão é maior. Em altitudes mais altas, há menos ar acima do sensor, portanto a pressão é menor. Uma mudança de 1 hPa de pressão atmosférica corresponde a uma mudança de altitude de cerca de 8 metros. Neste próximo exemplo, usaremos os dados de pressão do BMP180 para obter uma medida precisa da altitude.

A altitude pode ser calculada usando a fórmula barométrica internacional:

altitude = 44330  times  left (1-  left ( frac P P_ 0  right) ^  frac 1 5.255  right) \ \ P:  Atmospheric  pressão  no  local  atual  (em  hPa) \ P_ 0:  Atmosférica  pressão  no  nível do mar  (em  hPa)

Felizmente, a biblioteca realiza esse cálculo, portanto, não precisamos nos preocupar em fazer essas contas no esboço.

A pressão atmosférica na sua localização atual será medida pelo BMP180. A pressão atmosférica ao nível do mar é a pressão atmosférica na sua localização atual, ajustada para remover os efeitos da altitude. Pode ser encontrado de uma de duas maneiras. A maneira mais precisa é usar o BMP180, que explicarei abaixo. Outra maneira é obtê-lo em um mapa on-line como este.

Altitude relativa ao nível do mar

Este esboço mostra a altitude na sua localização atual em relação ao nível do mar. Você precisa inserir a pressão atmosférica no nível do mar para a sua localização atual na linha 5, onde diz:

float Po = 1013,0;

#include 
#include 

SFE_BMP180 bmp180;
float Po = 1013.0;

void setup() 
  Serial.begin(9600);
  bool success = bmp180.begin();

  if (success) 
    Serial.println("BMP180 init success");
  


void loop() {
  char status;
  double T, P, alt;
  bool success = false;

  status = bmp180.startTemperature();

  if (status != 0) 
    delay(1000);
    status = bmp180.getTemperature(T);

    if (status != 0) 
      status = bmp180.startPressure(3);

      if (status != 0) 
        delay(status);
        status = bmp180.getPressure(P, T);

        if (status != 0) 
          alt = bmp180.altitude(P, Po);

          Serial.print("Altitude: ");
          Serial.print(alt);
          Serial.println(" Meters");
        
      
    
  
}

Abra o monitor serial e sua altitude atual em relação ao nível do mar será exibida:

Tutorial do Arduino BMP180 - Altitude no monitor serial

Altitude relativa ao solo

Para projetos como altímetros, você deseja conhecer a altitude do seu sensor em relação ao solo. Para fazer isso, você precisa usar a pressão atmosférica da sua localização atual em vez da pressão do nível do mar. Use o esquema de pressão e temperatura para obter a pressão atmosférica local. Em seguida, insira esse valor na linha 5 do esboço de altitude.

Por exemplo, se você medisse uma pressão atmosférica local de 1011,5 hPa, alteraria a linha 5 do esboço de altitude para:

float Po = 1011,5;

Como encontrar a pressão do nível do mar na sua região

A maneira mais precisa de encontrar a pressão do nível do mar na sua localização atual é usar o BMP180 para medi-la. O valor resultante pode ser inserido no esboço de altitude para uma medição de elevação mais precisa.

A pressão do nível do mar pode ser calculada a partir da fórmula barométrica internacional, reorganizada para resolver a pressão do nível do mar (P0 0):

P_ 0 =  frac P  left (1-  frac Altitude 44330  right) ^ 5,255 \ \ P_ 0:  Atmospheric  pressure  at  sea  nível  (em  hPa) \ P:  Pressão atmosférica  em  sua  localização  atual  (em  hPa) \ Altitude:  Altitude  em  sua  localização  atual  (em  metros)

A pressão atmosférica na sua localização atual será medida pelo BMP180. Para obter a altitude da sua localização atual, você pode usar um aplicativo para smartphone ou pesquisar um mapa de elevação on-line.

O desenho abaixo gera a pressão do nível do mar em sua localização atual para o monitor serial. Insira sua altitude atual na linha 5, onde diz:

alt flutuante = 5,0;

#include 
#include 

SFE_BMP180 bmp180;
float alt = 5.0; // Altitude of current location in meters

void setup() 
  Serial.begin(9600);
  bool success = bmp180.begin();

  if (success) 
    Serial.println("BMP180 init success");
  


void loop() {
  char status;
  double T, P, seaLevelPressure;
  bool success = false;

  status = bmp180.startTemperature();

  if (status != 0) 
    delay(1000);
    status = bmp180.getTemperature(T);

    if (status != 0) 
      status = bmp180.startPressure(3);

      if (status != 0) 
        delay(status);
        status = bmp180.getPressure(P, T);

        if (status != 0) 
          seaLevelPressure = bmp180.sealevel(P, alt);

          Serial.print("Pressure at sea level: ");
          Serial.print(seaLevelPressure);
          Serial.println(" hPa");
        
      
    
  
}

É sobre isso. Espero que este artigo ajude você a conectar o BMP180 ao Arduino. Informe-nos nos comentários se tiver alguma dúvida e também quais projetos você está construindo!

Krishna Pattabiraman é uma escritora convidada frequente do Circuit Basics e fundadora do www.codelectron.com.

Artigos imperdíveis:
https://responsibleradio.com/20-ideias-bem-sucedidas-de-negocios-em-casa-na-india/

https://draincleaningdenverco.com/ganhar-dinheiro-com-a-compra-e-venda-de-dominios/

https://weeventos.com.br/1-e-1-uma-historia-da-lata-nao-e-nao-quero/

https://clipstudio.com.br/melhore-a-sua-pagina-de-destino-taxas-de-conversao-usando-estas-6-regras/

https://multieletropecas.com.br/4-cursos-de-design-grafico-que-voce-deve-considerar-para-sua-carreira-profissional-freelancer/

https://holidayservice-tn.com/o-lado-brilhante-e-obscuro-do-anonimato-um-apelo-para-uma-responsabilidade-mais-pessoal-lifestyle-x/

https://teleingressos.com.br/como-os-alunos-podem-ganhar-ate-us-500-por-aviso-outros-sobre-o-texto-e-a-conducao/

https://proverasfestas.com.br/apenas-80-dos-medidores-inteligentes-de-8m-do-reino-unido-sao-garantidos-para-ficar-inteligentes-se-voce-mudar/

https://coniferinc.com/4ps-e-6ps-mix-de-marketing/

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br