Manual

do

Maker

.

com

Sensor de pressão atmosférica MS5611

Sensor de pressão atmosférica MS5611

Esse sensor de pressão atmosférica MS5611 é o primeiro da linha "popular" que vejo para concorrer com o BMP180 ou BMP280. Além da medição da pressão atmosférica, ele também lê temperatura. Sua resolução é de 10cm na variação de altitude com tempo de conversão de 1ms. Consumo de 0.15uA e tensão entre 1.8 e 3.6V. Porém, na placa GY-63 tem um regulador linear LDO (Low DropOut) configurado para comportar a alimentação em 5V. O sensor de temperatura tem uma precisão com variação em torno de 0.8C. O nível lógico também está configurado para 5V, portanto pode ser utilizado tranquilamente em Arduino UNO, Nano, Mega, Leonardo - ou no caso desse artigo, estou usando a MH-Tiny, que tem o mesmo mapeamento de pinos do Arduino Nano e do qual já escrevi outros dois artigos, que você encontra aí na caixa de pesquisa ou no menu Arduino.

mh-tiny-pinout-1024x809.webp

Agora que já vimos as características do sensor de pressão atmosférica MS5611 e o pinout da placa (que como citado, serão os mesmos pinos para as demais placas), podemos iniciar o código. O wiring já não é mais novidade há centenas de artigos, certo? SDA ->A4 e SCL->A5. VCC->5V e GND->GND.

A biblioteca utilizada foi a (olha só que surpresa) MS5611, que pode ser instalada pelo gerenciador de bibliotecas do Arduino IDE ou pelo PlatformIO usando sua IDE preferida. Não seja resistente a experimentar vscode com PlatformIO, será uma experiência muito agradável, se você usa só a IDE do Arduino atualmente.

Enfim, a biblioteca que escolhi é a mais utilizada. A única coisa que mudei em relação ao exemplo foi a criação do objeto como ponteiro, mas não se atenha aos detalhes, apenas experimente.

#include <Arduino.h>

#include "MS5611.h"

MS5611 *ms5611 = new MS5611(0x77);   // 0x76 = CSB to VCC; 0x77 = CSB to GND


uint32_t start, stop, count;


void setup()
{
  Serial.begin(115200);
  Serial.print(__FILE__);
  Serial.print("MS5611 lib version: ");
  Serial.println(MS5611_LIB_VERSION);

  bool b = ms5611->begin();
  Serial.println(b ? "found" : "not found");

  count = 0;
  Serial.println("CNT\tDUR\tRES\tTEMP\tPRES");
  delay(1000);
}

void loop()
{
  start = micros();
  int result = ms5611->read();
  stop = micros();

  Serial.print(count);
  count++;
  Serial.print("\t");
  Serial.print(stop - start);
  Serial.print("\t");
  Serial.print(result);
  Serial.print("\t");
  Serial.print(ms5611->getTemperature(), 2);
  Serial.print("\t");
  Serial.print(ms5611->getPressure(), 2);
  Serial.println();

  delay(1000);
}

Compile, suba o código e abra a serial. Depois de provar o conceito, introduza sua aplicação. Particularmente, pretendo colocar em um robô, que estou há bastante tempo enrolando pra terminar o projeto, mas vai ser divertido usar esse sensor nele.

Usei um BMP180 para exemplificar a medição da carbonatação de cerveja. A pressão da garrafa é bem superior a 1 atmosfera, esse sensor não serve para esse propósito, mas é interessante o artigo.

Tem mais um experimento diferente que quero fazer com ele, vamos ver se para o próximo artigo relacionado sai um vídeo também.

E normalmente quando escrevo sobre sensores, eles vem da Curto Circuito, que é (na minha opinião) o lugar mais completo em relação a sensores. - Mas placas também não ficam pra menos; a MH-Tiny também é da Curto, seu valor é 30% menor que um Nano e a placa é preta com barra de pinos amarela. Lindona! Confira o artigo relacionado a ela.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.