HELP! Connecting MPU-6050 to Barebones Breadboard Arduino

I’ve been having some trouble using the MPU-6050 with an Atmega328P chip which is using its internal 8Mhz clock. I suspect that it could be Wire.h library but I am not sure and any help making the two work would be great.

Here is my set-up:

MPU-6050 to Atmega328p

VCC – 5V
Gnd – Gnd
SCL – Pin 25 (A5)
SDA – Pin 24 (A4)

Here is the code (Written by Joop Brokking):

SETUP:

void setup_mpu_6050_registers(){
  //Activate the MPU-6050
  Wire.beginTransmission(0x68);                                        //Start communicating with the MPU-6050
  Wire.write(0x6B);                                                    //Send the requested starting register
  Wire.write(0x00);                                                    //Set the requested starting register
  Wire.endTransmission();                                              //End the transmission
  //Configure the accelerometer (+/-8g)
  Wire.beginTransmission(0x68);                                        //Start communicating with the MPU-6050
  Wire.write(0x1C);                                                    //Send the requested starting register
  Wire.write(0x10);                                                    //Set the requested starting register
  Wire.endTransmission();                                              //End the transmission
  //Configure the gyro (500dps full scale)
  Wire.beginTransmission(0x68);                                        //Start communicating with the MPU-6050
  Wire.write(0x1B);                                                    //Send the requested starting register
  Wire.write(0x08);                                                    //Set the requested starting register
  Wire.endTransmission();                                              //End the transmission
}

GATHER DATA:

void read_mpu_6050_data(){                                             //Subroutine for reading the raw gyro and accelerometer data
  Wire.beginTransmission(0x68);                                        //Start communicating with the MPU-6050
  Wire.write(0x3B);                                                    //Send the requested starting register
  Wire.endTransmission();                                              //End the transmission
  Wire.requestFrom(0x68,14);                                           //Request 14 bytes from the MPU-6050
  while(Wire.available() < 14);                                        //Wait until all the bytes are received
  acc_x = Wire.read()<<8|Wire.read();                                  //Add the low and high byte to the acc_x variable
  acc_y = Wire.read()<<8|Wire.read();                                  //Add the low and high byte to the acc_y variable
  acc_z = Wire.read()<<8|Wire.read();                                  //Add the low and high byte to the acc_z variable
  temperature = Wire.read()<<8|Wire.read();                            //Add the low and high byte to the temperature variable
  gyro_x = Wire.read()<<8|Wire.read();                                 //Add the low and high byte to the gyro_x variable
  gyro_y = Wire.read()<<8|Wire.read();                                 //Add the low and high byte to the gyro_y variable
  gyro_z = Wire.read()<<8|Wire.read();                                 //Add the low and high byte to the gyro_z variable

}

I am not sure why my set-up isn’t working. I think it has something to do with the use of the internal clock because when I do this same setup with an external 16 Mhz clock then it will work with no other changes.

Anyone have any ideas on how I could use the MPU 6050 with the Atmega328p with internal 8mhz clock???

Clock speed shouldnt cause any issues here.

You need 2 0.1uf decoupling caps between gnd and vcc, right next to the chip, one for each supply pin, otherwise chip may freeze or reset unpredictably. (Many tutorials omit these, if reading one that does, stop, because that means the author doesnt know what they're doing)

The MPU-6050 is a 3.3V device, so run your bare bones processor on 3.3V, otherwise you will destroy the sensor.

Pullup resistors on the I2C lines are absolutely required. 2.2K to 4.7K should work.

Thanks jremington and DrAzzy!!!
I did what you guys told me to do and it worked!

Thanks for all the help