Højdemåler i ny version

Jeg har skiftet retning med en højdemåler i en vandraket. Jeg vil fortsat måle trykket, og beregne højden deraf. Men går fra at skrive data til et SD-kort, hvilket giver en spændende graf. Men SD-kortet skal aflæses i en computer, og jeg vil gerne have et resultat så snart raketten rammer jorden.
Derfor har jeg sat et LC Display ind i setuppet. Spændt på om det overlever sammenstødet med jorden.

Højdemåler2

[office src=”https://onedrive.live.com/embed?cid=7C4F7C2F7519A4B4&resid=7C4F7C2F7519A4B4%2110262&authkey=AG9fDbOFnLZsuXM” width=”320″ height=”180″]

Højdemålingerne svinger en smule. Det kan gøres mindre ved at lægge et filter i programmet, men komplicerer tingene for meget:
højdemålinger

Hvis du kan genkende LCD’et, er det fra en Nokia 5110. Da produktionen stoppede, blev der mange millioner displays til overs, og de kan nu erhverves for ca. 10 kr stykket. Dertil har de et meget lavt strømforbrug.

Koden er tilpasset Codebender.cc:

double pressure; //Variabel til tryk i Pascal (Pa) 
double startpressure; //Variabel til tryk i Pascal (Pa) 
double tempC; //Variabel til temperatur i grader Celcius 
double starttempC; //Variabel til temperatur i grader Celcius 
double hojde; // variabel til højden i meter over havet 
double maxHojde = 0;
double starttempK; //Variabel til temperaturen i Kelvin 
int pauseTid = 5000; //tid mellem hver måling 
const double gaskonstant = 8.31; // gaskonstanten i N*m/mol*K 
const double tyngdeacceleration = 9.807; //tyngdeaccelerationen i m/s^2 
const double molarmasse = 0.02896; //Molarmassen af luft i kg/mol
#include "Wire.h" 
#include "Adafruit_BMP085.h" 
Adafruit_BMP085 mySensor; // laver et objekt kaldet mySensor

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);


void setup()   {
  Serial.begin(9600);
mySensor.begin(); // starter tryk-sensoren mySensor 
starttempC = mySensor.readTemperature(); // Måler STARTtemperaturen i grader C fra BMP180 
startpressure=mySensor.readPressure(); // Måler STARTtrykket i Pa 
starttempK = starttempC + 273; // temperaturen i Kelvin

  display.begin();
  // init done
  // you can change the contrast around to adapt the display
  // for the best viewing!
  display.setContrast(50);
  display.clearDisplay();   // clears the screen and buffer
}

void loop() {
  tempC = mySensor.readTemperature(); // Måler temperaturen i grader C fra BMP180 
pressure=mySensor.readPressure(); // Måler trykket i Pa 
hojde = -(starttempK*gaskonstant/(molarmasse*tyngdeacceleration))*log(pressure/startpressure);

  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("Tryk:");
  display.print(pressure);
  display.println(" Pa  ");
  display.print("Hojde:");
  display.print(hojde);
  display.println(" m  ");
  display.println("Max hojde: ");
  display.print(maxHojde);
  display.println(" m  ");
  display.display();
 display.clearDisplay();   // clears the screen and buffer

if (hojde>maxHojde) {
  maxHojde = hojde;
}

 delay(250);

}


Dette indlæg blev udgivet i Arduino, Maker. Bogmærk permalinket.