Why is my SPL06 displaying incorrect data?

Currently trying to make a flight computer, and what I am using for barometric pressure data is a SPL06, the code im trying to use to test it so I can then convert it into my own code, seems to be showing incorrect data, could someone help?

SCL and SDA pins are connected to A4 and A5

image

This is the data thats being shown, the biggest thing (nearly only thing) I care about is the altitude data.

#include <SPL06-007.h>
#include <Wire.h>


void setup() {
  Wire.begin();    // begin Wire(I2C)
  Serial.begin(115200); // begin Serial

  Serial.println("\nGoertek-SPL06-007 Demo\n");

  SPL_init(); // Setup initial SPL chip registers   
}

void loop() {

  // ---- Register Values ----------------
  Serial.print("ID: ");
  Serial.println(get_spl_id());

  Serial.print("PRS_CFG: ");
  Serial.println(get_spl_prs_cfg(),BIN);

  Serial.print("TMP_CFG: ");
  Serial.println(get_spl_tmp_cfg(),BIN);

  Serial.print("MEAS_CFG: ");
  Serial.println(get_spl_meas_cfg(),BIN);

  Serial.print("CFG_REG: ");
  Serial.println(get_spl_cfg_reg(),BIN);

  Serial.print("INT_STS: ");
  Serial.println(get_spl_int_sts(),BIN);

  Serial.print("FIFO_STS: ");
  Serial.println(get_spl_fifo_sts(),BIN);


  // ---- Coefficients ----------------
  Serial.print("c0: ");
  Serial.println(get_c0());

  Serial.print("c1: ");
  Serial.println(get_c1());

  Serial.print("c00: ");
  Serial.println(get_c00());

  Serial.print("c10: ");
  Serial.println(get_c10());

  Serial.print("c01: ");
  Serial.println(get_c01());

  Serial.print("c11: ");
  Serial.println(get_c11());
  
  Serial.print("c20: ");
  Serial.println(get_c20());
  
  Serial.print("c21: ");
  Serial.println(get_c21());

  Serial.print("c30: ");
  Serial.println(get_c30());


  // ---- Temperature Values ----------------  
  Serial.print("traw: ");
  Serial.println(get_traw());

  Serial.print("traw_sc: ");
  Serial.println(get_traw_sc(),3);
  
  Serial.print("Temperature: ");
  Serial.print(get_temp_c());
  Serial.println(" C");
  
  Serial.print("Temperature: ");
  Serial.print(get_temp_f());
  Serial.println(" F");
  

  // ---- Pressure Values ----------------
  Serial.print("praw: ");
  Serial.println(get_praw());
  
  Serial.print("praw_sc: ");
  Serial.println(get_praw_sc(),3);

  Serial.print("pcomp: ");
  Serial.println(get_pcomp(),2);

  Serial.print("Measured Air Pressure: ");
  Serial.print(get_pressure(),2);
  Serial.println(" mb");


  // ---- Altitude Values ----------------
  double local_pressure = 1011.3; // Look up local sea level pressure on google // Local pressure from airport website 8/22
  Serial.print("Local Airport Sea Level Pressure: ");
  Serial.print(local_pressure,2);
  Serial.println(" mb");
  
  Serial.print("altitude: ");
  Serial.print(get_altitude(get_pressure(),local_pressure),1);
  Serial.println(" m");

  Serial.print("altitude: ");
  Serial.print(get_altitude_f(get_pressure(),local_pressure),1); // convert from meters to feet
  Serial.println(" ft");



  Serial.println("\n");
  delay(2000);
}

Please post a link to the technical manual or datasheet.
Air pressure varies according to the weather so setting airport pessure as a constant will not work. Airport data is usually measured as height above average sea level, MSL.
Setting the altimeter to show that number calibrates the altimeter for the current air pressure.

1 Like

faced the same problem. I tried using a sensor with two libraries:spl06-001 and spl06-007, but the data is incorrect with both. Have you found a solution yet?