MPU-6050 முடுக்கமானி மற்றும் கைரோஸ்கோப் தொகுதியை எவ்வாறு பயன்படுத்துவது
MPU-6050 என்பது ஒரு பல்துறை சென்சார் ஆகும், இது 3-அச்சு முடுக்கமானி மற்றும் 3-அச்சு கைரோஸ்கோப்பை ஒரே தொகுப்பில் இணைக்கிறது. இந்த டுடோரியலில், இந்த தொகுதியை Arduino உடன் இணைத்து முடுக்கம் மற்றும் கோண வேகத்தை அளவிடுவது எப்படி என்பதை ஆராய்வோம். இதன் விளைவாக, சென்சாரிலிருந்து நிகழ்நேர தரவைக் காண்பிக்கும் ஒரு எளிய நிரல் இருக்கும், இது உங்கள் சாதனத்தின் முடுக்கம் மற்றும் நோக்குநிலை இரண்டையும் கண்காணிக்க உங்களை அனுமதிக்கிறது.

இந்த வழிகாட்டியைப் பின்பற்றுவதன் மூலம், வன்பொருளை அமைப்பது, கூறுகளை சரியாக இணைப்பது, மற்றும் MPU-6050 ஐ இயக்க தேவையான குறியீட்டை எழுதுவது எப்படி என்பதை நீங்கள் கற்றுக்கொள்வீர்கள். இது இயக்க உணர்திறன் மற்றும் நோக்குநிலை கண்டறிதல் சம்பந்தப்பட்ட மேலும் திட்டங்களுக்கு உங்களுக்கு ஒரு அடித்தளத்தை வழங்கும். கூடுதல் தெளிவுக்காக, இந்த டுடோரியலுடன் வரும் வீடியோவைப் பார்க்க மறக்காதீர்கள் (வீடியோவில் 00:00 இல்).
வன்பொருள் விளக்கம்
இந்த திட்டத்தின் முக்கிய கூறு MPU-6050 சென்சார் ஆகும், இது முடுக்கமானி மற்றும் கைரோஸ்கோப் தரவு இரண்டையும் வழங்குகிறது. முடுக்கமானி X, Y, மற்றும் Z அச்சுகளில் நேரியல் முடுக்கத்தை அளவிடுகிறது, அதே நேரத்தில் கைரோஸ்கோப் அதே அச்சுகளைச் சுற்றியுள்ள சுழற்சி விகிதங்களை அளவிடுகிறது. இந்த கலவையானது இயக்க கண்காணிப்பு தேவைப்படும் பயன்பாடுகளுக்கு MPU-6050 ஐ ஒரு சிறந்த தேர்வாக ஆக்குகிறது.
கூடுதலாக, தொகுதி தகவல்தொடர்புக்கு I2C இடைமுகத்தைப் பயன்படுத்துகிறது, இது இணைப்புகளை எளிதாக்குகிறது மற்றும் பல சாதனங்களை ஒரே பேருந்தில் இணைக்க அனுமதிக்கிறது. சென்சார் VCC பின்னூடாக இயக்கப்படுகிறது, இது பொதுவாக 3.3V மற்றும் 5V க்கு இடையில் மின்னழுத்தம் தேவைப்படுகிறது. தரையானது Arduino இன் பொதுவான தரையுடன் இணைக்கப்பட்டுள்ளது.
டேட்டாஷீட் விவரங்கள்
| உற்பத்தியாளர் | InvenSense |
|---|---|
| பகுதி எண் | MPU-6050 |
| லாஜிக்/IO மின்னழுத்தம் | 3.3 – 5 V |
| வழங்கல் மின்னழுத்தம் | 3.3 – 5 V |
| வெளியீட்டு மின்னோட்டம் (ஒரு சேனலுக்கு) | … |
| உச்ச மின்னோட்டம் (ஒரு சேனலுக்கு) | … |
| PWM அதிர்வெண் வழிகாட்டுதல் | … |
| உள்ளீட்டு லாஜிக் வரம்புகள் | … |
| மின்னழுத்த வீழ்ச்சி / RDS(on) / செறிவு | … |
| வெப்ப வரம்புகள் | … |
| தொகுப்பு | QFN |
| குறிப்புகள் / மாறுபாடுகள் | … |
- VCC பின்னை 3.3V அல்லது 5V உடன் இணைக்கவும்.
- GND பின்னை தரையுடன் இணைக்கவும்.
- SDA (தரவு) மற்றும் SCL (கடிகாரம்) வழியாக I2C தகவல்தொடர்பைப் பயன்படுத்தவும்.
- SDA மற்றும் SCL கோடுகளில் புல்-அப் மின்தடையங்கள் இருப்பதை உறுதிசெய்யவும்.
- சென்சாரை சேதப்படுத்தாமல் இருக்க சரியான மின்னழுத்த அளவுகளை சரிபார்க்கவும்.
வயரிங் வழிமுறைகள்

MPU-6050 ஐ உங்கள் Arduino உடன் இணைக்க, MPU-6050 இன் VCC பின்னை Arduino இன் 5V பின்னுடன் இணைப்பதன் மூலம் தொடங்கவும். அடுத்து, MPU-6050 இன் GND பின்னை Arduino இன் GND பின்களில் ஒன்றுடன் இணைக்கவும். I2C தகவல்தொடர்புக்கு, MPU-6050 இன் SDA பின்னை Arduino இன் A4 பின்னுடன் இணைக்கவும், மேலும் SCL பின்னை A5 பின்னுடன் இணைக்கவும். உங்கள் குறியீட்டில் பொருத்தமான நூலகங்களைச் சேர்ப்பதன் மூலம் உங்கள் Arduino I2C தகவல்தொடர்பைப் பயன்படுத்த அமைக்கப்பட்டுள்ளதை உறுதிசெய்யவும்.
சிஸ்டத்தை இயக்குவதற்கு முன் உங்கள் இணைப்புகளை இருமுறை சரிபார்க்கவும். பிரெட்போர்டைப் பயன்படுத்தினால், இணைப்புகள் பாதுகாப்பானவை மற்றும் குறுகிய சுற்றுகள் இல்லை என்பதை உறுதிசெய்யவும். தொகுதி எதிர்பார்த்தபடி பதிலளிக்கவில்லை என்றால், வயரிங்கை சரிபார்த்து, உங்கள் குறியீட்டில் MPU-6050 இன் I2C முகவரியைச் சரிபார்க்கவும்.
குறியீடு எடுத்துக்காட்டுகள் & விளக்கம்
பின்வரும் குறியீடு துணுக்கு MPU-6050 ஐ துவக்கி அதிலிருந்து தரவைப் படிக்கத் தொடங்குகிறது. முக்கிய அடையாளங்காட்டிகளில் mpu6050 அடங்கும், இது MPU6050 வகுப்பின் நிகழ்வாகும், மேலும் timer, இது தரவு வெளியீட்டின் நேரத்தைக் கட்டுப்படுத்தப் பயன்படுகிறது.
MPU6050 mpu6050(Wire);
long timer = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}
இந்த அமைவு செயல்பாட்டில், நாம் தொடர் தகவல்தொடர்பு மற்றும் MPU-6050 சென்சாரை துவக்குகிறோம். mpu6050.calcGyroOffsets(true) அழைப்பு முக்கியமானது, ஏனெனில் இது கைரோஸ்கோப் ஆஃப்செட்களை அளவீடு செய்கிறது, துல்லியமான அளவீடுகளை உறுதி செய்கிறது.
லூப் செயல்பாட்டில், நாம் சென்சார் தரவை தொடர்ந்து புதுப்பித்து அதை தொடர் மானிட்டரில் அச்சிடுகிறோம். பின்வரும் குறியீடு துணுக்கு வெப்பநிலை மற்றும் முடுக்கம் தரவை எவ்வாறு படித்து அச்சிடுவது என்பதைக் காட்டுகிறது:
if(millis() - timer > 1000){
Serial.print("temp : ");Serial.println(mpu6050.getTemp());
Serial.print("accX : ");Serial.print(mpu6050.getAccX());
Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}
இந்த தொகுதி கடைசி வெளியீட்டிலிருந்து ஒரு வினாடி கடந்துவிட்டதா என்பதைச் சரிபார்க்கிறது. பின்னர் அது MPU-6050 இலிருந்து வெப்பநிலை மற்றும் முடுக்கம் மதிப்புகளைப் பெற்று அவற்றை தொடர் மானிட்டரில் அச்சிடுகிறது. இந்த மதிப்புகள் நிகழ்நேரத்தில் புதுப்பிக்கப்படுவதை நீங்கள் கவனிக்கலாம்.
செயல்விளக்கம் / என்ன எதிர்பார்க்கலாம்
எல்லாம் இணைக்கப்பட்டு குறியீடு பதிவேற்றப்பட்டவுடன், ஒவ்வொரு வினாடியும் தொடர் மானிட்டரில் வெப்பநிலை மற்றும் முடுக்கம் தரவு அச்சிடப்படுவதை நீங்கள் எதிர்பார்க்கலாம். நீங்கள் MPU-6050 ஐ சாய்த்தால் அல்லது நகர்த்தினால், முடுக்கம் மதிப்புகள் அதற்கேற்ப மாற வேண்டும். தவறான வயரிங் அல்லது போதுமான மின்சாரம் வழங்கல் ஒழுங்கற்ற அளவீடுகள் அல்லது எந்த தரவும் இல்லாமல் போகலாம் என்பதை நினைவில் கொள்ளுங்கள் (வீடியோவில் 01:30 இல்).
/*
*
* This code is basic usage of the MPU-6050 Accelerometer and Gyroscope.
*
* This code displays all data:
* -Gyroscope X, Gyroscope Y, Gyroscope Z
* -Gyroscope Angle X, Gyroscope Angle Y, Gyroscope Angle Z
* -Accel X, Accel Y, Accel Z
* -Accel Angle X, Accel Angle Y, Accel Angle Z,
*
* Library and code have been taken from:
* https://github.com/tockn/MPU6050_tockn
*
* Updated by Ahmad Shamshiri on July 03, 2018 in Ajax, Ontario, Canada
* for Robojax.com
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/uhh7ik02aDc
*
*/
#include <MPU6050_tockn.h>
#include <Wire.h>
MPU6050 mpu6050(Wire);
long timer = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}
void loop() {
mpu6050.update();
if(millis() - timer > 1000){
Serial.println("=======================================================");
Serial.print("temp : ");Serial.println(mpu6050.getTemp());
Serial.print("accX : ");Serial.print(mpu6050.getAccX());
Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());
Serial.println("=======================================================\n");
timer = millis();
}
}
/*
*
* This code is basic usage of the MPU-6050 Accelerometer and Gyroscope.
*
* This code displays:
* - Angle X, Angle Y, Angle Z,
*
* Library and code have been taken from:
* https://github.com/tockn/MPU6050_tockn
*
* Updated by Ahmad Shamshiri on July 03, 2018 in Ajax, Ontario, Canada
* for Robojax.com
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/uhh7ik02aDc
*
*/
#include <MPU6050_tockn.h>
#include <Wire.h>
MPU6050 mpu6050(Wire);
long timer = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}
void loop() {
mpu6050.update();
if(millis() - timer > 1000){
Serial.println("=======================================================");
Serial.print("temp : ");Serial.println(mpu6050.getTemp());
Serial.print("accX : ");Serial.print(mpu6050.getAccX());
Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());
Serial.println("=======================================================\n");
timer = millis();
}
}
நீங்கள் தேவைப்படும் எண்ணங்கள்
-
அமேசான்Purchase MPU-6050 from Amazonamzn.to
வளங்கள் மற்றும் மேற்கோள்கள்
-
வெளியுறுப்புManufacturer websiteinvensense.com
கோப்புகள்📁
ஆர்டினோ நூலகங்கள் (ஜிப்)
-
Arduino library for MPU9250
robojax-MPU9250-master.zip3.38 MB
மற்ற கோப்புகள்
-
MPU6050_tockn-masterArduino library for the MPU6050 accelerometer and gyroscope module. Provides functions to read acceleration, gyro, and temperature data, with calibration and angle calculation. Designed for easy integration into motion-sensing projects.
robojax-MPU6050_tockn-master.zip