Mündəricat:

MPU-6050 (GY-521) ilə Açı necə ölçmək olar: 3 addım
MPU-6050 (GY-521) ilə Açı necə ölçmək olar: 3 addım

Video: MPU-6050 (GY-521) ilə Açı necə ölçmək olar: 3 addım

Video: MPU-6050 (GY-521) ilə Açı necə ölçmək olar: 3 addım
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Noyabr
Anonim
MPU-6050 (GY-521) ilə Açı necə ölçmək olar
MPU-6050 (GY-521) ilə Açı necə ölçmək olar

Bu təlimatda Arduino ilə bucağı ölçəcəyik. Bucağı ölçmək üçün bəzi kabellərə, Arduino UNO və GY-521 (MPU-6050) ehtiyacımız var.

Addım 1: MPU-6050-ni Arduino UNO-ya bağlayın

MPU-6050-nin Arduino UNO-ya qoşulması
MPU-6050-nin Arduino UNO-ya qoşulması

Bucağı ölçmək üçün bir neçə kişi-qadın kabelinə, Arduino UNO və GY-521 (MPU-6050) sensoruna ehtiyacımız var. MPU-6050-ni şəkildə göstərildiyi kimi Arduino UNO-ya bağlamalıyıq. Belə ki,

  • VCC 5V-ə qədər (MPU-6050 3.3V ilə işləyir, lakin GY-521 5V-ə qədər artırır.),
  • GND - GND,
  • A5 -ə SCL,
  • SDA -dan A4 -ə qədər,
  • GND -yə ADO,
  • Rəqəmsal pin 2 -ə INT.

Addım 2: Kod

Kod
Kod

İşdə kod budur. I2C istifadə edir. Kodun bəzi hissələrini internetdən aldım. (I2C hissəsi)

// Ahmet Burkay KIRNIK tərəfindən yazılmışdır // MPU-6050 ilə açının ölçülməsi (GY-521)

#daxil edin

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

int minVal = 265; int maxVal = 402;

ikiqat x; ikiqat y; ikiqat z;

void setup () {Wire.begin (); Wire.beginTransmission (MPU_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (doğru); Serial.begin (9600); } void loop () {Wire.beginTransmission (MPU_addr); Wire.write (0x3B); Wire.endTransmission (yanlış); Wire.requestFrom (MPU_addr, 14, doğru); AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); int xAng = xəritə (AcX, minVal, maxVal, -90, 90); int yAng = xəritə (AcY, minVal, maxVal, -90, 90); int zAng = xəritə (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 ="); Serial.println (x);

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

Serial.print ("AngleZ ="); Serial.println (z); Serial.println ("-----------------------------------------"); gecikmə (400); }

Addım 3: Bitti

Bitdi!
Bitdi!

Tamamlandı! İşə yaramırsa və ya köməyə ehtiyacınız varsa, şərh yazın və ya e -poçt göndərin. E -poçt ünvanımı şərhlərdən tapa bilərsiniz. Yeri gəlmişkən, ingilis dilim o qədər də yaxşı deyil, buna görə də pis ingilis dilim üçün üzr istəyirəm.

Ahmet Burkay KIRNIK

İstanbul/TÜRKİYƏ

Düzəliş: 2 ildən sonra ingilis dilim yaxşılaşdı və bəzi səhvləri düzəltdim.

Tövsiyə: