Isi kandungan:

Cara Mengukur Sudut Dengan MPU-6050 (GY-521): 3 Langkah
Cara Mengukur Sudut Dengan MPU-6050 (GY-521): 3 Langkah

Video: Cara Mengukur Sudut Dengan MPU-6050 (GY-521): 3 Langkah

Video: Cara Mengukur Sudut Dengan MPU-6050 (GY-521): 3 Langkah
Video: CARA KERJA MPU6050 Gyroscope dan Accelerometer 2024, November
Anonim
Cara Mengukur Sudut Dengan MPU-6050 (GY-521)
Cara Mengukur Sudut Dengan MPU-6050 (GY-521)

Dalam Instructable ini, kita akan mengukur sudut dengan Arduino. Kami memerlukan beberapa kabel, sebuah Arduino UNO dan GY-521 (MPU-6050) untuk mengukur sudut.

Langkah 1: Menghubungkan MPU-6050 ke Arduino UNO

Menghubungkan MPU-6050 ke Arduino UNO
Menghubungkan MPU-6050 ke Arduino UNO

Kami memerlukan beberapa kabel lelaki-wanita, sensor Arduino UNO dan GY-521 (MPU-6050) untuk mengukur sudut. Kita harus menghubungkan MPU-6050 ke Arduino UNO seperti yang ditunjukkan dalam gambar. Jadi,

  • VCC hingga 5V (MPU-6050 berfungsi dengan 3.3V tetapi GY-521 meningkatkannya menjadi 5V.),
  • GND ke GND,
  • SCL ke A5,
  • SDA hingga A4,
  • ADO ke GND,
  • INT ke pin digital 2.

Langkah 2: Kod

Kod
Kod

Inilah kodnya. Ia menggunakan I2C. Saya mengambil beberapa bahagian kod dari internet. (Bahagian I2C)

// Ditulis oleh Ahmet Burkay KIRNIK // Pengukuran Sudut dengan MPU-6050 (GY-521)

#sertakan

const int MPU_addr = 0x68; int16_t AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;

int minVal = 265; int maxVal = 402;

berganda x; berganda y; berganda z;

batal persediaan () {Wire.begin (); Wire.beginTransmission (MPU_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (benar); Serial.begin (9600); } gelung kosong () {Wire.beginTransmission (MPU_addr); Wire.write (0x3B); Wire.endTransmission (palsu); Wire.requestFrom (MPU_addr, 14, benar); AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); int xAng = peta (AcX, minVal, maxVal, -90, 90); int yAng = peta (AcY, minVal, maxVal, -90, 90); int zAng = peta (AcZ, minVal, maxVal, -90, 90);

x = RAD_TO_DEG * (atan2 (-yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng) + PI);

Serial.print ("AngleX ="); Bersiri.println (x);

Serial.print ("AngleY ="); Bersiri.println (y);

Serial.print ("AngleZ ="); Bersiri.println (z); Serial.println ("-----------------------------------------"); kelewatan (400); }

Langkah 3: Selesai

Selesai!
Selesai!

Sudah disiapkan! Sekiranya tidak berfungsi atau anda memerlukan bantuan, sila tinggalkan komen atau hantarkan e-mel. Anda boleh mendapatkan alamat e-mel saya dari komen. Ngomong-ngomong, bahasa Inggeris saya tidak begitu baik, jadi saya minta maaf atas bahasa Inggeris saya yang buruk.

Ahmet Burkay KIRNIK

Istanbul, Turki

Edit: Selepas 2 tahun, bahasa Inggeris saya menjadi lebih baik, jadi saya membetulkan beberapa kesilapan.

Disyorkan: