หากคุณต้องการสร้างโครงการและวางตำแหน่งนั่นคือรู้ วางไว้อย่างไร เกี่ยวกับพื้นที่คุณสามารถใช้โมดูลนี้ได้ MPU6050. นั่นคือโมดูลนี้เป็นหน่วยวัดความเฉื่อยหรือ IMU (Inertial Measurment Units) ที่มี 6 องศาอิสระ (DoF) ต้องขอบคุณเซ็นเซอร์ชนิด 3 แกน accelerometer และไจโรสโคปแบบ 3 แกนที่ใช้ในการทำงาน
MPU6050 นี้สามารถทราบได้ว่าวัตถุที่บรรจุอยู่ในตำแหน่งใดเพื่อใช้ใน การใช้งาน การนำทาง, goniometry, การป้องกันการสั่นไหว, การควบคุมท่าทาง ฯลฯ โดยปกติโทรศัพท์มือถือจะมีเซ็นเซอร์ประเภทนี้เพื่อควบคุมฟังก์ชันบางอย่างผ่านท่าทางสัมผัสเช่นการหยุดหากสมาร์ทโฟนพลิกคว่ำการขับขี่ยานพาหนะในวิดีโอเกมโดยการหมุนมือถือราวกับว่าเป็นพวงมาลัยเป็นต้น
เครื่องวัดความเร่งและเครื่องวัดการหมุนวนคืออะไร?
เรามาดูส่วนต่างๆกันดีกว่า สิ่งแรกคือต้องดูว่าเซ็นเซอร์ประเภทนี้คืออะไร สามารถตรวจจับการเร่งความเร็วและการเลี้ยวซึ่งสามารถอนุมานได้จากชื่อของพวกเขาเอง
- accelerometer: วัดความเร่งนั่นคือการเปลี่ยนแปลงของความเร็วต่อหนึ่งหน่วยเวลา โปรดจำไว้ว่าในทางฟิสิกส์การเปลี่ยนแปลงความเร็วตามเวลา (a = dV / dt) คือนิยามของความเร่ง ตามกฎข้อที่สองของนิวตันเรามี a = F / m เช่นกันและนั่นคือสิ่งที่เครื่องวัดความเร่งใช้ในการทำงานนั่นคือใช้พารามิเตอร์ของแรงและมวลของวัตถุ เพื่อให้สามารถนำไปใช้ในอุปกรณ์อิเล็กทรอนิกส์ได้จึงใช้เทคนิค MEMS (Micro Electro Mechanical Systems) ซึ่งแตกต่างจากเทคนิคการผลิตชิปอิเล็กทรอนิกส์ทั่วไปเนื่องจากชิ้นส่วนเครื่องจักรกลถูกสร้างขึ้นใน MEMS ในกรณีนี้จะมีการสร้างแทร็กหรือองค์ประกอบที่สามารถวัดความเร่งได้ นั่นหมายความว่าสามารถรับหน่วยอื่น ๆ ได้มากมายเช่นความเร็ว (ถ้าการเร่งความเร็วถูกรวมเข้ากับเวลา) ถ้ามันถูกรวมเข้าด้วยกันอีกครั้งเราจะมีการกระจัดเป็นต้น นั่นคือพารามิเตอร์ที่น่าสนใจมากในการทราบตำแหน่งหรือตรวจจับการเคลื่อนไหวของวัตถุ
- เครื่องมือวัดการหมุนวน: เรียกอีกอย่างว่าไจโรสโคปเป็นอุปกรณ์ที่ใช้วัดความเร็วเชิงมุมของวัตถุนั่นคือการกระจัดเชิงมุมต่อหน่วยเวลาหรือความเร็วที่ร่างกายหมุนรอบแกนของมัน ในกรณีนี้เทคนิค MEMS ยังใช้ในการวัดความเร็วนี้โดยใช้เอฟเฟกต์ที่เรียกว่า Coriolis ด้วยเหตุนี้จึงสามารถวัดความเร็วเชิงมุมได้หรือโดยการรวมความเร็วเชิงมุมเข้ากับเวลาจะได้การกระจัดเชิงมุม
โมดูล MPU6050
ตอนนี้คุณรู้แล้วว่ามาตรความเร่งและไจโรสโคปคืออะไร โมดูล MPU6050 เป็นบอร์ดอิเล็กทรอนิกส์ที่รวมองค์ประกอบทั้งสองนี้เข้าด้วยกันเพื่อให้คุณสามารถวัดการเปลี่ยนแปลงเหล่านี้ในตำแหน่งขององค์ประกอบและทำให้สามารถสร้างปฏิกิริยาได้ ตัวอย่างเช่นเมื่อวัตถุเคลื่อนที่ไฟ LED จะสว่างขึ้นหรือสิ่งอื่น ๆ ที่ซับซ้อนมากขึ้น
อย่างที่บอกมันมี 6 แกนแห่งเสรีภาพ DoF เครื่องวัดความเร่ง X, Y และ Z แบบ 3 แกนและเครื่องวัดการหมุนวน 3 แกนอื่น ๆ เพื่อวัดความเร็วเชิงมุม คุณต้องคำนึงว่าอย่าทำผิดพลาดในการวางตำแหน่งโมดูลและทิศทางการหมุนสำหรับการวัดเนื่องจากถ้าคุณทำเครื่องหมายผิดมันจะวุ่นวายเล็กน้อย ดูภาพต่อไปนี้ซึ่งระบุทิศทางของแกน (อย่างไรก็ตามโปรดสังเกตว่า PCB เองก็พิมพ์ด้านเดียวด้วย):
พิจารณาสิ่งนี้และ 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
คุณสามารถได้รับ ข้อมูลเพิ่มเติมเกี่ยวกับบัส 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 ได้ฟรี ...