Arduino temperatur og barometrisk trykkmåler/høydemåler


Reklame - Artikkelen inneholder annonselenker

En veldig liten (10,6 x 13mm) Barometrisk trykkmåler og temperaturmåler som kan også brukes som en høydemåler.

Det som er fint med denne er at den går på I2C kommunikasjon. Det betyr at det er en bus-løsning som kun trenger to ledere i tillegg til + og -. Med en slik bus-løsning kan flere sensorer kobles på de samme to ledningene SDA og SCL..

Det som er kjempeviktig med denne sensoren er at den kun skal ha 3.3v.

Koble opp slik:

Kort 3.3v GND SCL SDA
UNO 3.3v GND A5 A4
Mega 3.3v GND 21 20
Nano 3.3v GND A5 A4

Se denne siden for hvor du kan kjøpe delene.

 

Her er kildekoden til et enkelt program: (Må installere biblioteket SFE_BMP180 som kan finnes her)

/* www.hushagehobby.no 
 * Måling av barometrisk trykk og temperatur. I2C
 * 28/4-2017
 *  
 * Test Arduino Uno- BMP180 GY-68
 */
#include <SFE_BMP180.h>
#include <Wire.h>

SFE_BMP180 pressure;

#define ALTITUDE 45.0 // Høyde hushagehobby.no
double T; //Temperatur
double P;  //Barometrisk trykk


void setup() {
 
Serial.begin(9600);

startTempogtrykk(); 

}

void loop() {
 
lestempogtrykk();
 
  delay(5000);  // Pause for 5 seconds.

}

void startTempogtrykk() {
  
   Serial.println("Starter");
 
  if (pressure.begin())
    Serial.println("BMP180 startet");
  else
  {
    Serial.println("BMP180 startet ikke");
  } 
}

void lestempogtrykk() {

char status;

   status = pressure.startTemperature();
  if (status != 0)
  {
    
    delay(status); //Vent på måler starter

    //Måling av Temperatur
    status = pressure.getTemperature(T); // Temperatur blir lagret i variabelen T
    if (status != 0) //status er 0 vis det er feil på målingen, mens 1 dersom den fungerer
    {
      Serial.print("temperatur: ");
      Serial.print(T,1); //T er temperatur, og 1 er antall tall etter komma
      Serial.print(" deg C, ");

      //Start av barometrisk trykk måling
      status = pressure.startPressure(1); //  0-3 for samplingsintervall. 3 høyest oppløsning.
      if (status != 0) //status er 0 vis det er feil på målingen, mens 1 dersom den fungerer
      {
       
        delay(status); //Vent på måler starter

       //Returnerer det målte trykket:

        status = pressure.getPressure(P,T); //Trykkmaåling. P er variabelen som trykket lagres i. T er det tidligere målte temperaturen som brukes i beregningen av Trykk.
        if (status != 0)
        {
         
          Serial.print("absolutt trykk: ");
          Serial.print(P,1);
          Serial.println(" mb");
         
        }
        else Serial.println("feil på trykkmåling");
      }
      else Serial.println("feil på trykkmåling");
    }
    else Serial.println("feil på temperaturmåling");
  }
  else Serial.println("feil på temperaturmåling");

  }

Det som kan avleses i «Seriell Overvåker» er da :

Dersom det er noe som er uklart eller feil i koden, så skriv gjerne en kommentar



Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *