Problem to get constant reading from MPU6050 sensor using esp32 when sensor is static position

Hello
I am with a problem that I am using mpu6050 sensor with esp32 .I have tried many libraries many codes to get right reading from the sensor . when the sensor is static accX,accY,accZ
should be 0,0,0 respectively and gyroX, gyroY, gyroZ should be 0,0,9.8 . but I am getting some values and it's constantly change without any movement . so can anyone help me to calibrate my sensor according to the error.

as I said before that I have used many tutorials .there are some link of them:-

LINK1
LINK2
LINK3
LINK4

I don't have a code because I have tried many codes the nearest and fine code is below

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("Adafruit MPU6050 test!");

  // Try to initialize!
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");

  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  Serial.print("Accelerometer range set to: ");
  switch (mpu.getAccelerometerRange()) {
  case MPU6050_RANGE_2_G:
    Serial.println("+-2G");
    break;
  case MPU6050_RANGE_4_G:
    Serial.println("+-4G");
    break;
  case MPU6050_RANGE_8_G:
    Serial.println("+-8G");
    break;
  case MPU6050_RANGE_16_G:
    Serial.println("+-16G");
    break;
  }
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  Serial.print("Gyro range set to: ");
  switch (mpu.getGyroRange()) {
  case MPU6050_RANGE_250_DEG:
    Serial.println("+- 250 deg/s");
    break;
  case MPU6050_RANGE_500_DEG:
    Serial.println("+- 500 deg/s");
    break;
  case MPU6050_RANGE_1000_DEG:
    Serial.println("+- 1000 deg/s");
    break;
  case MPU6050_RANGE_2000_DEG:
    Serial.println("+- 2000 deg/s");
    break;
  }

  mpu.setFilterBandwidth(MPU6050_BAND_5_HZ);
  Serial.print("Filter bandwidth set to: ");
  switch (mpu.getFilterBandwidth()) {
  case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
  case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
  case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
  case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
  case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
  case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
  case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
  }

  Serial.println("");
  delay(100);
}

void loop() {
  /* Get new sensor events with the readings */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  /* Print out the values */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");

  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");

  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");

  Serial.println("");
  delay(500);
}

somebody help me to solve the problem

That sounds like normal, unavoidable sensor noise and/or rate gyro drift. Post examples.

I personally have not used such a sensor, but I know from a friend that this is normal because the sensor is very sensitive. According to him, even if the sensor was placed on a stable concrete base, it would still be able to detect movement, such as just because a car passed by on the street, or even micro earthquakes.

so how can I use this in my project where I want to make a project .the object is detect the vehicle when they are passed through this sensor .like a device in which this sensor is attached and device placed at a street light poles.

so how can I use this in my project where I want to make a project .the object is detect the vehicle when they are passed through this sensor .like a device in which this sensor is attached and device placed at a street light poles.

I guess you need to filter the data using a suitable digital filter as mathematically you can program it yourself or look for a library for the purpose.

All sensors generate noise. For the sensor to detect an event, the event signal has to stand out from the noise.

To get started, experiment with the sensor to see what sorts of signals and noise it returns, for different mounting arrangements, then decide which arrangement might be useful for your project, and how to reliably detect the event.

thank you for the reply.. I am waiting for this.

thank you for the reply

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.