Primeiros Passos com o BMP180




Introdução

Você já viajou de carro para algum lugar mais alto ou mais baixo que sua cidade natal? Você deve ter sentido a pressão em seus ouvidos alterar conforme você estava subindo ou descendo a serra. Isso se deve ao fato que a pressão atmosférica varia conforme a altitude de sua localização aumenta ou diminui. É possível realizar a leitura da pressão que está sendo imposta ao seu corpo através de um barômetro. O sensor BMP180 é capaz de realizar leituras de pressão, como um barômetro, e de temperatura, como um sensor DHT11. O BMP180 utiliza a comunicação I2C para enviar os dados de suas leituras para o Arduino.

Neste tutorial, você vai aprender a realizar leituras das variáveis do sensor barométrico através da comunicação I2C do módulo com a BlackBoard UNO.

Lista de Materiais

Teoria

Oversample

Controladores AVR da Atmel, como o ATmega328 de placas da plataforma Arduino UNO, possuem conversores ADC (Analog to Digital Converter) com uma resolução de 10 bits. Na maioria dos casos, uma resolução de 10 bits é o bastante para obter leituras precisas de sensores, porém, em alguns casos específicos é necessário aumentar a resolução do conversor ADC ou utilizar outro conversor ADC externo. "Oversample and decimation" é o método utilizado para aumentar a resolução do conversor ADC interno dos processadores da Atmel, sem a necessidade de utilizar um conversor externo. Esse método, basicamente, aumenta consideravelmente a frequência de amostragem da porta utilizada para aumentar a resolução do conversor e reduzir possíveis ruídos a leitura. A biblioteca utilizada por este tutorial utiliza comandos de oversampling para adquirir leituras mais precisas e seu parâmetros.

Circuito

Para realizar leituras de pressão e temperatura através do sensor BMP180, monte o circuito a seguir.

circuito
Circuito Elétrico

Código

Para esse tutorial, é necessário realizar a instalação da biblioteca SFE_BMP180 da Low Power Lab. Caso você não saiba como realizar a instalação da biblioteca, você pode aprender através do tutorial Adicionando Bibliotecas na IDE Arduino. Com a biblioteca adicionada à Arduino IDE, carregue o código a seguir para sua placa.

Para este código, é necessário alterar o valor da variável ALTITUDE para o valor, em metros, da altitude de seu local de teste do sensor, em relação ao nível do mar. É possível pesquisar o seu endereço atual no Google Earth para obter essa informação.

Entendendo o Código

O comando SFE_BMP180 modulo inicia o objeto modulo em função da biblioteca "SFE_BMP180", e esse objeto é utilizado posteriormente para realizar leituras através do sensor e imprimir os valores no monitor serial. Já dentro do laço setup(), a função modulo.begin() inicializa o objeto modulo para ser usado em seguida.

O conjunto de comandos acima é responsável por inicializar a leitura de temperatura (startTemperature()) e medir o valor de temperatura (getTemperature(temperatura)). O comando status = modulo.startTemperature() utiliza a variável auxiliar status como um resultado para verificação. Essa verificação é feita através da condição if(status != 0), que verifica se o valor atribuído à variável é diferente de zero (ou seja, sem erro). O comando delay(status) realiza uma pequena pausa para garantir que a leitura seja finalizada. Caso a verificação seja feita com sucesso, o valor é medido e gravado na variável temperatura, que é impressa em seguida no monitor serial.

Assim como o conjunto descrito anteriormente, o conjunto de comandos acima é responsável pela inicialização e medição de pressão do sensor, isso devido às funções startPressure() e getPressure(), respectivamente. O conjunto também realiza uma verificação sobre a leitura feita através da variável auxiliar status. A função getPressure(pressao,temperatura) atribui o valor medido de pressão à variável pressao, em função da variável temperatura.

O conjunto de comandos acima é responsável pela conversão para a pressão relativa ao nível do mar, em função das variáveis pressao e ALTITUDE, além de imprimir o resultado obtido no monitor serial. A conversão é feita com a função sealevel(), que utiliza a altitude informada e a pressão lida previamente.

O Que Deve Acontecer

Após carregar o código à placa com o circuito montado e abrir o monitor serial com a velocidade de 9600 bps, é possível observar as leituras retornadas pelo sensor, como na imagem abaixo.

resultado
Resultado Final
Avatar