MPU6050: Arduino के साथ पोजिशनिंग के लिए मॉड्यूल

MPU6050 बोर्ड

यदि आपको कोई प्रोजेक्ट बनाना है और उसे पोजीशन करना है, यानी जानें यह कैसे रखा गया है स्थान के संबंध में, आप मॉड्यूलो का उपयोग कर सकते हैं MPU6050। यही है, यह मॉड्यूल एक निष्क्रिय माप इकाई या IMU (जड़त्वीय मापन इकाइयाँ) है जिसमें 6 डिग्री की स्वतंत्रता (DoF) है। यह 3-अक्ष एक्सीलरोमीटर प्रकार सेंसर और एक 3-अक्ष गायरोस्कोप के लिए धन्यवाद है कि यह काम करने के लिए लागू होता है।

यह MPU6050 यह जान सकता है कि जिस वस्तु में यह है वह इसका उपयोग करने के लिए किस प्रकार स्थित है अनुप्रयोगों नेविगेशन, गोनोमेट्री, स्थिरीकरण, इशारा नियंत्रण, आदि। मोबाइल फोन में आमतौर पर इस प्रकार के सेंसर शामिल होते हैं, उदाहरण के लिए, इशारों के माध्यम से कुछ कार्यों को नियंत्रित करना, जैसे कि स्मार्टफोन को चालू करने पर रोकना, वीडियो गेम में वाहन चलाना जैसे कि यह एक स्टीयरिंग व्हील था, आदि।

एक्सेलेरोमीटर और जाइरोस्कोप क्या है?

एमईएमएस उदाहरण

एमईएमएस उदाहरण

ठीक है, चलिए भागों में चलते हैं। सबसे पहले तो यह देखना है कि ये सेंसर कितने प्रकार के होते हैं त्वरण और घुमावों का पता लगाने में सक्षम हैं, जैसा कि उनके अपने नाम से पता लगाया जा सकता है।

  • accelerometer: त्वरण को मापता है, अर्थात समय की प्रति इकाई गति में परिवर्तन। याद रखें कि भौतिकी में, समय के साथ वेग का परिवर्तन (a = dV / dt) त्वरण की परिभाषा है। न्यूटन के द्वितीय नियम के अनुसार, हमारे पास भी एक = F / m है, और वह यह है कि एक्सीलरोमीटर काम करने के लिए उपयोग करते हैं, अर्थात, वे बल के द्रव्यमान और वस्तु के द्रव्यमान का उपयोग करते हैं। ताकि इसे इलेक्ट्रॉनिक्स में लागू किया जा सके, एमईएमएस (माइक्रो इलेक्ट्रो मैकेनिकल सिस्टम्स) तकनीकों का उपयोग किया जाता है, जो पारंपरिक इलेक्ट्रॉनिक चिप निर्माण तकनीकों से भिन्न होते हैं, क्योंकि एमईएमएस में यांत्रिक भागों का निर्माण होता है। इस मामले में, गति को मापने में सक्षम ट्रैक या तत्व बनाए जाते हैं। इसका तात्पर्य है कि कई अन्य इकाइयाँ ली जा सकती हैं, जैसे कि वेग (यदि त्वरण समय में एकीकृत किया जाता है), अगर इसे फिर से एकीकृत किया जाता है, तो हमारे पास विस्थापन, आदि है। यह कहना है, किसी वस्तु की स्थिति या स्थिति का पता लगाने के लिए बहुत ही दिलचस्प पैरामीटर।
  • जाइरोस्कोप: इसे जाइरोस्कोप भी कहा जाता है, यह एक ऐसा उपकरण है जो किसी वस्तु के कोणीय वेग को मापता है, यानी कोणीय इकाई प्रति समय या कितनी तेजी से एक शरीर अपनी धुरी पर घूमता है। इस मामले में, एमईएमएस तकनीक का उपयोग कोरिओलिस नामक एक प्रभाव का उपयोग करके इस गति को मापने के लिए भी किया जाता है। इसके लिए धन्यवाद, कोणीय वेग को मापा जा सकता है या, समय के संबंध में कोणीय वेग को एकीकृत करके, कोणीय विस्थापन प्राप्त किया जा सकता है।

MPU6050 मॉड्यूल

MPU6050 पिनआउट

अब जब आप जान गए हैं कि एक्सेलेरोमीटर और जायरोस्कोप क्या हैं, MPU6050 मॉड्यूल एक इलेक्ट्रॉनिक बोर्ड है जो इन दो तत्वों को एकीकृत करता है ताकि आप एक तत्व की स्थिति में इन परिवर्तनों को माप सकें और इस प्रकार एक प्रतिक्रिया उत्पन्न करने में सक्षम हो सकें। उदाहरण के लिए, कि जब कोई वस्तु एक एलईडी लाइट को ऊपर ले जाती है, या अन्य बहुत अधिक जटिल चीजें।

जैसा कि मैंने कहा, इसमें स्वतंत्रता के 6 अक्ष हैं, DoF, एक्सेलेरोमीटर के लिए 3 अक्ष X, Y, और Z त्वरण के लिए, और जाइरोस्कोप के लिए अन्य 3 अक्ष कोणीय वेग को मापने के लिए। आपको इस बात को ध्यान में रखना होगा कि आप जिस तरह से माप के लिए मॉड्यूल और रोटेशन की दिशा की स्थिति में गलती करते हैं, अगर आप गलत संकेत करते हैं तो यह थोड़ा अराजक होगा। निम्नलिखित छवि को देखें जहां यह कुल्हाड़ियों की दिशा को निर्दिष्ट करता है (हालांकि, ध्यान दें कि पीसीबी ने भी इसे एक तरफ मुद्रित किया है):

डेटशीट MPU6050

इसे देखते हुए और पिनआउट, कमोबेश आपके पास MPU6050 का उपयोग शुरू करने के लिए सब कुछ स्पष्ट है। जैसा कि आप पिछली छवि में देख सकते हैं, कनेक्शन काफी सरल हैं और यह I2C संचार को अधिकांश माइक्रोकंट्रोलर के साथ संगत करने की अनुमति देता है, जिसमें अरुडिनो भी शामिल है। SCL और SDA पिन में Arduino बोर्ड से सीधे कनेक्शन के लिए बोर्ड पर एक पुल-अप रोकनेवाला है, इसलिए आपको उन्हें खुद को जोड़ने के बारे में चिंता करने की ज़रूरत नहीं है।

I2C बस पर दोनों दिशाओं में काम करने के लिए, आप इनका उपयोग कर सकते हैं पिन और दिशाएँ:

  • AD0 = 1 या उच्च (5v): I0C पते के लिए 69x2।
  • AD0=0 या निम्न (GND या Nc): I0C बस के पते 68x2 के लिए।

याद रखें कि मॉडल का ऑपरेटिंग वोल्टेज 3v3 है, लेकिन सौभाग्य से इसमें एक अंतर्निहित नियामक है, इसलिए इसे बिना समस्या के Arduino के 5v के साथ जोड़ा जा सकता है और यह इसे 3.3v में बदल देगा।

वैसे, जीएनडी का आंतरिक प्रतिरोध होने पर, यदि आप इस पिन को नहीं जोड़ते हैं, तो दिशा डिफ़ॉल्ट रूप से यह 0x68 होगा, चूँकि यह डिफ़ॉल्ट रूप से पृथ्वी से जुड़ा होगा, इसे तार्किक 0 के रूप में समझा जाएगा।

Arduino के साथ एकीकरण

Arduino और MPU6050 कनेक्शन

आप प्राप्त कर सकते हैं I2C बस के बारे में अधिक जानकारी इस आलेख में। आप पहले से ही जानते हैं कि Arduino बोर्ड के आधार पर बस के लिए उपयोग किए जाने वाले पिन अलग-अलग होते हैं, लेकिन Arduino UNO एनालॉग पिन है A4 और A5, SDA (डेटा) और SCL (घड़ी) के लिए क्रमश। बोर्ड को पावर देने के लिए 5v और GND के साथ वे एकमात्र Arduino पिन हैं, जिनका आपको उपयोग करना चाहिए। इसलिए कनेक्शन यथासंभव सरल है.

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. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।