MPU6050: โมดูลสำหรับกำหนดตำแหน่งกับ Arduino

บอร์ด MPU6050

หากคุณต้องการสร้างโครงการและวางตำแหน่งนั่นคือรู้ วางไว้อย่างไร เกี่ยวกับพื้นที่คุณสามารถใช้โมดูลนี้ได้ MPU6050. นั่นคือโมดูลนี้เป็นหน่วยวัดความเฉื่อยหรือ IMU (Inertial Measurment Units) ที่มี 6 องศาอิสระ (DoF) ต้องขอบคุณเซ็นเซอร์ชนิด 3 แกน accelerometer และไจโรสโคปแบบ 3 แกนที่ใช้ในการทำงาน

MPU6050 นี้สามารถทราบได้ว่าวัตถุที่บรรจุอยู่ในตำแหน่งใดเพื่อใช้ใน การใช้งาน การนำทาง, goniometry, การป้องกันการสั่นไหว, การควบคุมท่าทาง ฯลฯ โดยปกติโทรศัพท์มือถือจะมีเซ็นเซอร์ประเภทนี้เพื่อควบคุมฟังก์ชันบางอย่างผ่านท่าทางสัมผัสเช่นการหยุดหากสมาร์ทโฟนพลิกคว่ำการขับขี่ยานพาหนะในวิดีโอเกมโดยการหมุนมือถือราวกับว่าเป็นพวงมาลัยเป็นต้น

เครื่องวัดความเร่งและเครื่องวัดการหมุนวนคืออะไร?

ตัวอย่าง MEMS

ตัวอย่าง MEMS

เรามาดูส่วนต่างๆกันดีกว่า สิ่งแรกคือต้องดูว่าเซ็นเซอร์ประเภทนี้คืออะไร สามารถตรวจจับการเร่งความเร็วและการเลี้ยวซึ่งสามารถอนุมานได้จากชื่อของพวกเขาเอง

  • accelerometer: วัดความเร่งนั่นคือการเปลี่ยนแปลงของความเร็วต่อหนึ่งหน่วยเวลา โปรดจำไว้ว่าในทางฟิสิกส์การเปลี่ยนแปลงความเร็วตามเวลา (a = dV / dt) คือนิยามของความเร่ง ตามกฎข้อที่สองของนิวตันเรามี a = F / m เช่นกันและนั่นคือสิ่งที่เครื่องวัดความเร่งใช้ในการทำงานนั่นคือใช้พารามิเตอร์ของแรงและมวลของวัตถุ เพื่อให้สามารถนำไปใช้ในอุปกรณ์อิเล็กทรอนิกส์ได้จึงใช้เทคนิค MEMS (Micro Electro Mechanical Systems) ซึ่งแตกต่างจากเทคนิคการผลิตชิปอิเล็กทรอนิกส์ทั่วไปเนื่องจากชิ้นส่วนเครื่องจักรกลถูกสร้างขึ้นใน MEMS ในกรณีนี้จะมีการสร้างแทร็กหรือองค์ประกอบที่สามารถวัดความเร่งได้ นั่นหมายความว่าสามารถรับหน่วยอื่น ๆ ได้มากมายเช่นความเร็ว (ถ้าการเร่งความเร็วถูกรวมเข้ากับเวลา) ถ้ามันถูกรวมเข้าด้วยกันอีกครั้งเราจะมีการกระจัดเป็นต้น นั่นคือพารามิเตอร์ที่น่าสนใจมากในการทราบตำแหน่งหรือตรวจจับการเคลื่อนไหวของวัตถุ
  • เครื่องมือวัดการหมุนวน: เรียกอีกอย่างว่าไจโรสโคปเป็นอุปกรณ์ที่ใช้วัดความเร็วเชิงมุมของวัตถุนั่นคือการกระจัดเชิงมุมต่อหน่วยเวลาหรือความเร็วที่ร่างกายหมุนรอบแกนของมัน ในกรณีนี้เทคนิค MEMS ยังใช้ในการวัดความเร็วนี้โดยใช้เอฟเฟกต์ที่เรียกว่า Coriolis ด้วยเหตุนี้จึงสามารถวัดความเร็วเชิงมุมได้หรือโดยการรวมความเร็วเชิงมุมเข้ากับเวลาจะได้การกระจัดเชิงมุม

โมดูล MPU6050

MPU6050 พินเอาต์

ตอนนี้คุณรู้แล้วว่ามาตรความเร่งและไจโรสโคปคืออะไร โมดูล MPU6050 เป็นบอร์ดอิเล็กทรอนิกส์ที่รวมองค์ประกอบทั้งสองนี้เข้าด้วยกันเพื่อให้คุณสามารถวัดการเปลี่ยนแปลงเหล่านี้ในตำแหน่งขององค์ประกอบและทำให้สามารถสร้างปฏิกิริยาได้ ตัวอย่างเช่นเมื่อวัตถุเคลื่อนที่ไฟ LED จะสว่างขึ้นหรือสิ่งอื่น ๆ ที่ซับซ้อนมากขึ้น

อย่างที่บอกมันมี 6 แกนแห่งเสรีภาพ DoF เครื่องวัดความเร่ง X, Y และ Z แบบ 3 แกนและเครื่องวัดการหมุนวน 3 แกนอื่น ๆ เพื่อวัดความเร็วเชิงมุม คุณต้องคำนึงว่าอย่าทำผิดพลาดในการวางตำแหน่งโมดูลและทิศทางการหมุนสำหรับการวัดเนื่องจากถ้าคุณทำเครื่องหมายผิดมันจะวุ่นวายเล็กน้อย ดูภาพต่อไปนี้ซึ่งระบุทิศทางของแกน (อย่างไรก็ตามโปรดสังเกตว่า PCB เองก็พิมพ์ด้านเดียวด้วย):

เอกสารข้อมูล MPU6050

พิจารณาสิ่งนี้และ pinoutไม่มากก็น้อยคุณมีทุกอย่างชัดเจนในการเริ่มใช้ MPU6050 ดังที่คุณเห็นในภาพก่อนหน้านี้การเชื่อมต่อค่อนข้างง่ายและช่วยให้การสื่อสาร I2C เข้ากันได้กับไมโครคอนโทรลเลอร์ส่วนใหญ่รวมถึง Arduino พิน SCL และ SDA มีตัวต้านทานแบบดึงขึ้นบนบอร์ดสำหรับการเชื่อมต่อโดยตรงกับบอร์ด Arduino ดังนั้นคุณจึงไม่ต้องกังวลกับการเพิ่มด้วยตัวเอง

ในการทำงานกับทั้งสองทิศทางบนบัส I2C คุณสามารถใช้สิ่งเหล่านี้ได้ หมุดและทิศทาง:

  • AD0 = 1 หรือสูง (5v): สำหรับที่อยู่ I0C 69x2
  • AD0 = 0 หรือต่ำ (GND หรือ Nc): สำหรับที่อยู่ 0x68 ของบัส I2C

โปรดจำไว้ว่าแรงดันไฟฟ้าในการทำงานของโมเดลคือ 3v3 แต่โชคดีที่มีตัวควบคุมในตัวดังนั้นจึงสามารถใช้งาน 5v ของ Arduino ได้โดยไม่มีปัญหาและจะเปลี่ยนเป็น 3.3v

อย่างไรก็ตามการมีความต้านทานภายในต่อ GND หากไม่ได้เชื่อมต่อพินนี้ที่อยู่ โดยค่าเริ่มต้นจะเป็น 0x68เนื่องจากมันจะเชื่อมต่อกับโลกโดยปริยายแปลว่ามันเป็น 0 แบบลอจิคัล

บูรณาการกับ Arduino

การเชื่อมต่อ Arduino และ MPU6050

คุณสามารถได้รับ ข้อมูลเพิ่มเติมเกี่ยวกับบัส I2C ในบทความนี้. คุณรู้อยู่แล้วว่าพินที่ใช้กับบัสแตกต่างกันไปขึ้นอยู่กับบอร์ด Arduino แต่ในไฟล์ Arduino UNO คือพินอนาล็อก A4 และ A5 สำหรับ SDA (ข้อมูล) และ SCL (นาฬิกา) ตามลำดับ เป็นพิน Arduino เพียงตัวเดียวพร้อมกับ 5v และ GND หนึ่งตัวเพื่อจ่ายไฟให้กับบอร์ดที่คุณควรใช้ ดังนั้นการเชื่อมต่อจึงง่ายที่สุด

สำหรับฟังก์ชั่นของ MPU6050 คุณสามารถใช้ไลบรารีซึ่งคุณสามารถรับข้อมูลเพิ่มเติมได้ในลิงค์นี้สำหรับไฟล์ I2C ของโมดูลและของบัส MPU6050.

การเขียนโปรแกรมบอร์ด Arduino ไม่ตรงไปตรงมากับ MPU6050 ดังนั้นจึงไม่เหมาะสำหรับผู้เริ่มต้น นอกจากนี้เมื่อทราบถึงขีด จำกัด ของการเร่งความเร็วหรือช่วงของมุมคุณสามารถปรับเทียบเพื่อตรวจสอบการเคลื่อนที่หรือความเร่งที่แน่นอนได้ อย่างไรก็ตามเพื่อให้คุณมีตัวอย่างวิธีแสดงความคิดเห็นเกี่ยวกับการใช้งานอย่างน้อยคุณสามารถดูรหัสนี้ได้จากไฟล์ ตัวอย่างร่างสำหรับ Arduino IDE ของคุณ ซึ่งจะอ่านค่าที่บันทึกโดยเครื่องวัดความเร่งและเครื่องวัดการหมุนวน:

// Bibliotecas necesarias:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C
MPU6050 sensor;

// Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(57600);    //Función para iniciar el puerto serie con 57600 baudios
  Wire.begin();           //Inicio para el bus I2C 
  sensor.initialize();    //Iniciando del sensor MPU6050

  if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
  else Serial.println("Error al iniciar el sensor");
}

void loop() {
  // Leer las aceleraciones y velocidades angulares
  sensor.getAcceleration(&ax, &ay, &az);
  sensor.getRotation(&gx, &gy, &gz);

  // Muestra las lecturas que va registrando separadas por una tabulación 
  Serial.print("a[x y z] g[x y z]:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);

  delay(100);
}

หากคุณเป็นมือใหม่และยังไม่รู้จักดี วิธีการเขียนโปรแกรมด้วย Arduino IDEนี่จะเป็นเรื่องยากสำหรับคุณที่จะเข้าใจดังนั้นคุณสามารถอ่านคู่มือของเรากับหลักสูตรเบื้องต้นเกี่ยวกับการเขียนโปรแกรม Arduino ได้ฟรี ...


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา