MPU6050: Arduino менен жайгашуу үчүн модуль

MPU6050 такта

Эгер сиз долбоор түзүп, аны жайгаштырышыңыз керек болсо, башкача айтканда, билиңиз ал кандайча жайгаштырылган космоско байланыштуу, сиз модулун колдоно аласыз MPU6050. Башкача айтканда, бул модуль инерциялык өлчөө бирдиги же IMU (Инерциялык Өлчөө Бирдиктери) 6 эркиндик даражасына ээ (DoF). Бул 3 огу акселерометр түрүндөгү сенсорлор жана ал иштей турган 3 огу гироскоптун жардамы менен.

Бул MPU6050 камтылган объекттин колдонууга кандайча жайгаштырылгандыгын биле алат өтүнмөлөр навигация, гониометрия, турукташтыруу, жаңсоолорду көзөмөлдөө ж.б. Мобилдик телефондор адатта сенсорлордун ушул түрүн камтыйт, мисалы, жесттер аркылуу белгилүү бир функцияларды башкарат, мисалы, смартфон оодарылып калганда токтоо, видеотасмаларда унааларды рулду дөңгөлөктөй айлантып айдоо жана башкалар.

Акселерометр жана гироскоп деген эмне?

MEMS Мисалдары

MEMS Мисалдары

Анда эмесе, бөлүп-бөлүп жөнөйлү. Биринчиден, сенсорлордун бул түрлөрү эмне экендигин көрүү ылдамданууну жана бурулуштарды аныктай алышат, алардын аталыштарынан чыгарууга болот.

  • акселерометр: ылдамданууну, башкача айтканда, убакыт бирдигиндеги ылдамдыктын өзгөрүүсүн өлчөйт. Физикада ылдамдыктын убакыт менен өзгөрүшү (a = dV / dt) ылдамдануунун аныктамасы экендигин унутпаңыз. Ньютондун Экинчи Мыйзамына ылайык, бизде ошондой эле a = F / m, жана ошол үчүн акселерометрлер иштейт, башкача айтканда, алар нерсенин күчүнүн жана массасынын параметрлерин колдонушат. Муну электроникада ишке ашыруу үчүн кадимки электрондук чип өндүрүү ыкмаларынан айырмаланган MEMS (Micro Electro Mechanical Systems) ыкмалары колдонулат, анткени механикалык бөлүктөр MEMSте жаралат. Бул учурда ылдамданууну өлчөөгө жөндөмдүү тректер же элементтер түзүлөт. Бул башка көптөгөн бирдиктерди, мисалы, ылдамдыкты (эгерде ылдамдануу убагында интегралдашса), эгер дагы биригип кетсе, бизде орун алмаштырууну ж.б. Башкача айтканда, объектинин абалын билүү же кыймылын аныктоо үчүн абдан кызыктуу параметрлер.
  • Гироскоп: ошондой эле гироскоп деп аталат, бул нерсенин бурчтук ылдамдыгын, башкача айтканда, убакыт бирдигиндеги бурчтук жылышууну же дененин өз огунун айланасында канчалык тез айланышын өлчөөчү шайман. Бул учурда, MEMS ыкмалары Coriolis деп аталган эффектти колдонуп, айтылган ылдамдыкты өлчөө үчүн колдонулат. Мунун аркасында бурчтук ылдамдыкты өлчөөгө болот же бурчтук ылдамдыкты убакыт боюнча интеграциялоо менен, бурчтук жылышууну алууга болот.

MPU6050 модулу

MPU6050 бекиткичи

Эми сиз акселерометр жана гироскоп эмне экендигин билип, MPU6050 модулу Бул электрондук такта, бул эки элементти бириктирип, элементтин позициясындагы ушул өзгөрүүлөрдү өлчөөгө мүмкүнчүлүк берет жана ошону менен реакцияны пайда кылат. Мисалы, бир нерсе кыймылдатканда светодиод күйөт же башка бир топ татаал нерселер.

Жогоруда айткандай, анын эркиндиктин 6 огу бар, DoF, 3 огу X, Y жана Z ылдамдануу акселерометр жана башка 3 огу гироскоп бурчтук ылдамдыкты өлчөө үчүн. Өлчөө үчүн модулду жана айлануу багытын жайгаштырууда ката кетирбөө керектигин эске алышыңыз керек, анткени туура эмес белгини койсоңуз, ал бир аз башаламан болот. Ал октордун багытын көрсөткөн төмөнкү сүрөттү караңыз (бирок, ПКБнын өзү да бир жагына бастырганын байкаңыз):

Datuheet MPU6050

Ушул жана pinout, аздыр-көптүр сизде MPU6050 колдонууну баштоо үчүн баары ачык. Мурунку сүрөттө көрүнүп тургандай, туташуулар өтө жөнөкөй жана I2C байланышы көпчүлүк микроконтроллерлерге, анын ичинде Arduino менен шайкеш келүүгө мүмкүндүк берет. SCL жана SDA төөнөгүчтөрүндө Arduino тактасына түздөн-түз туташуу үчүн бортто тартылуу резистору бар, андыктан аларды өзүңүз кошуудан чочулабайсыз.

I2C автобуста эки багыт менен иштөө үчүн, сиз аларды колдоно аласыз төөнөгүчтөр жана багыттар:

  • AD0 = 1 же Жогорку (5v): I0C дареги үчүн 69x2.
  • AD0 = 0 же төмөн (GND же Nc): I0C автобусунун 68x2 дареги үчүн.

Моделдин иштөө чыңалуусу 3v3, бирок бактыга жараша, анын орнотулган регулятору бар, ошондуктан аны Arduino 5v менен көйгөйсүз орнотсо болот жана ал 3.3vге айланат.

Баса, GNDге ички каршылык көрсөтүү, эгерде бул пин байланышпаса, дарек демейки боюнча 0x68 болот, демек, ал логикалык 0 деп чечмелеп, жерге байланыштуу болот.

Arduino менен интеграциялоо

Arduino жана MPU6050 туташуусу

Сиз ала аласыз I2C автобус жөнүндө көбүрөөк маалымат ушул макалада. Arduino тактасына жараша автобус үчүн колдонулган төөнөгүчтөр ар кандай экендигин, бирок Arduino UNO аналогдук төөнөгүч SDA (маалыматтар) жана SCL (саат) үчүн A4 жана A5 тиешелүүлүгүнө жараша. Алар колдонушу керек болгон 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. Маалыматтар үчүн жооптуу: Мигель Анхель Гатан
  2. Маалыматтын максаты: СПАМды көзөмөлдөө, комментарийлерди башкаруу.
  3. Мыйзамдуулук: Сиздин макулдугуңуз
  4. Маалыматтарды берүү: Маалыматтар үчүнчү жактарга юридикалык милдеттенмелерден тышкары билдирилбейт.
  5. Маалыматтарды сактоо: Occentus Networks (ЕС) тарабынан уюштурулган маалыматтар базасы
  6. Укуктар: Каалаган убакта маалыматыңызды чектеп, калыбына келтирип жана жок кыла аласыз.