MEDINDO TEMPERATURA E PRESSÃO ATMOSFÉRICA – COM BMP280 E PIC16F688 (REF316)

3

Com poucos componentes, meça temperatura e pressão atmosférica …

Por volta do ano de 2014 foi lançado pela Bosch Sensortec o componente de nome BMP280. Este sensor tem reduzidas dimensões. Sendo menor que um grão de arroz, tem apenas 2,5 mm de comprimento por 2 mm de largura com uma altura de 0,95mm. Tem baixíssimo consumo de energia e com uma exatidão relativa de 0,12 hPa para pressão. Na medição de temperatura ele tem precisão de 1 grau centígrado. Este componente é difícil de ser soldado em placa de circuito impresso requerendo cuidados especiais. Para nossa alegria, existe a venda um módulo para Arduino com o BMP280 soldado e ligado a 6 pinos que facilitam seu uso em placa de montagem experimental. Então, eu resolvi adquirir um desses módulos e montei o esquema abaixo:

Encontrei muitas montagens usando o BMP280 na internet. A maioria fazia uso de alguma versão da placa Arduíno. Encontrei também versões com PIC de 40 pinos, como o 16F877A. Estas opções, apesar de funcionais, resulta em sobrar muitos pinos sem uso e eleva o custo da montagem.
Pensei em usar um PIC de dimensões menores, de preço mais acessível, optando pelo 16F688 de 14 pinos, mas com 4k de memória flash. Este último fator foi muito relevante na sua escolha, visto que o programa usa cálculos pesados para obter a temperatura e pressão atmosférica. Um simples 16F628A não dá conta do recado com sua flash de apenas 2K. Com respeito aos ‘cálculos’ que devem ser feitos pelo microcontrolador, o BMP280 tem 9 registradores internos que guardam informações gravadas pelo fabricante, os chamados ‘valores de calibração’. O programa processa 3 deles para modificar a leitura da temperatura e assim obter um valor preciso. O restante deles são usados para ‘afinar’ a leitura da pressão atmosférica.
A máxima precisão dos cálculos só pode ser conseguida com ponto flutuante ou variáveis de 64 bits. Isto gera um consumo incrível da flash! Com a limitada capacidade de flash do PIC, a escolha natural foi trabalhar apenas com variáveis do tipo ‘int32’, conforme sugerido pelo datasheet do componente, com resultados bem satisfatórios.
O módulo que peguei não tem interface de 5v para 3v. Ela é necessária visto que o componente trabalha com tensões de 1,75 Volts até o máximo de 3,6 Volts. Para contornar este problema usamos 2 diodos em série com os 5 Volts da alimentação do PIC, o que resultou em uma tensão por volta de 3 Volts. Na comunicação SPI, foi usado 3 transistores BC548 (ou outro NPN de uso geral) para isolar a tensão do PIC do BMP280. Se você adquirir um módulo próprio para 5 Volts, então não necessitará usar os 2 diodos nem os 3 transistores.
Uma nota importante: Não programe o PIC ‘in-circuit’ pois o pino 13 está ligado direto ao BMP280 e na hora da programação existirá tensão prejudicial para o BMP280, podendo danifica-lo permanentemente. Programe o PIC fora do circuito e somente depois de programado você poderá colocar no seu circuito experimental ou placa de circuito impresso.
A visualização no LCD será, por exemplo, desta forma:

Temp: 27.28 ºC // primeira linha
Pres: 969.12hPa // segunda linha

O estudo da variação das pressões ao longo dos dias fornece informações que poderão ser usadas para previsão do tempo. Poderá consultar vários sites que explicam como tirar proveito deste dispositivo.
A alimentação pode ser feita com fonte de 9 a 12 volts, conforme o circuito proposto, ou alterada para funcionar com 4 pilhas AA em série com um diodo (6V- 0,7= 5,3V).
Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Breadboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue pasta zipada com os arquivos da montagem:

TEMP_PRESSURE_688.ZIP

Manuais:
16F688 datasheet
BMP280 datasheet
LCD MODULE datasheet

Curiosidades:
O formato das conchas
As penas do pinguim imperador
O bigode do gato
A incrível audição do grilo

Outros assuntos:
Caminho para a felicidade
Vamos nos sentir seguros algum dia?
Como lidar com a dor da morte?
Você perdeu a alegria de viver?

Vídeos:
Esportes – Com estas dicas a diversão é garantida!
Porque existe tanto sofrimento?
Na frente dos meus olhos
Maravilhas da criação de Deus – Água

Até o próximo artigo!

3

2 comments

  1. 0

    Hola estimado Claudio, soy un lector de tu blog, me encanta todos sus proyectos, soy estudiante de mecatronica y hace mucho tiempo reviso sus proyectos que son una maravilla, a la vez pedirle mil disculpas por copiar algunos de sus proyectos, bien estoy empezando a programar pic con el lenguaje de programación XC8, pero no domino muy bien, me encantaría que Hague una copia de este post en ese lenguaje, le agradecería infinita mente, espero ser valorado positivamente y aprender mucho de sus aportes en esta comunidad, un fuerte abrazo desde Lima – Perú, salu2…

    1. 0

      ¡Hola Plopes!
      Muchas gracias por sus expresiones de aprecio.
      Desgraciadamente la versión de Xc8 gratuita no puede compilar este archivo ‘c’ que desea. Esto se debe a la limitación impuesta por el fabricante. Tal vez la versión pagada consiga, pero no tengo ella. Deseo que logre alcanzar sus objetivos y éxito en sus estudios. (traduccion Google traductor)

Leave a Reply