MPU6050: moduł do pozycjonowania z Arduino

Płyta MPU6050

Jeśli potrzebujesz stworzyć projekt i go spozycjonować, to wiedz jak to jest umieszczone jeśli chodzi o przestrzeń, możesz skorzystać z modułu MPU6050. Oznacza to, że ten moduł jest inercyjną jednostką pomiarową lub IMU (inercyjne jednostki pomiarowe) z 6 stopniami swobody (DoF). Dzieje się tak dzięki 3-osiowym czujnikom typu akcelerometru i 3-osiowemu żyroskopowi, który implementuje do pracy.

To MPU6050 może wiedzieć, w jaki sposób obiekt zawierający plik jest ustawiony do użycia w aplikacje nawigacja, goniometria, stabilizacja, sterowanie gestami itp. Telefony komórkowe zwykle zawierają tego typu czujniki, na przykład do sterowania niektórymi funkcjami za pomocą gestów, takich jak zatrzymywanie się, gdy smartfon jest obrócony, prowadzenie pojazdów w grach wideo przez obracanie telefonu tak, jakby to była kierownica itp.

Co to jest akcelerometr i żyroskop?

Przykłady MEMS

Przykłady MEMS

Cóż, chodźmy na części. Pierwszą rzeczą jest sprawdzenie, jakie to typy czujników potrafią wykryć przyspieszenie i zakręty, jak można wywnioskować z ich nazwisk.

  • Akcelerometr: mierzy przyspieszenie, czyli zmianę prędkości w jednostce czasu. Pamiętaj, że w fizyce zmiana prędkości w czasie (a = dV / dt) jest definicją przyspieszenia. Zgodnie z Drugą zasadą Newtona mamy również to, że a = F / m, a to właśnie akcelerometry wykorzystują do pracy, to znaczy wykorzystują parametry siły i masy obiektu. Aby można było to zaimplementować w elektronice, stosuje się techniki MEMS (Micro Electro Mechanical Systems), które różnią się od konwencjonalnych technik wytwarzania chipów elektronicznych, ponieważ części mechaniczne są tworzone w MEMS. W takim przypadku powstają tory lub elementy zdolne do pomiaru przyspieszeń. Oznacza to, że można wziąć wiele innych jednostek, takich jak prędkość (jeśli przyspieszenie jest całkowane w czasie), jeśli jest ono ponownie całkowane, mamy przemieszczenie itp. To znaczy bardzo interesujące parametry pozwalające poznać położenie lub wykryć ruch obiektu.
  • żyroskop: zwany także żyroskopem, jest to urządzenie, które mierzy prędkość kątową obiektu, to znaczy przemieszczenie kątowe na jednostkę czasu lub szybkość, z jaką ciało obraca się wokół własnej osi. W tym przypadku techniki MEMS są również używane do pomiaru tej prędkości za pomocą efektu znanego jako Coriolis. Dzięki temu można zmierzyć prędkość kątową lub, całkując prędkość kątową względem czasu, uzyskać przemieszczenie kątowe.

Moduł MPU6050

Pinout MPU6050

Teraz, gdy wiesz, czym jest akcelerometr i żyroskop, moduł MPU6050 Jest to tablica elektroniczna, która integruje te dwa elementy, aby umożliwić pomiar tych zmian położenia elementu, a tym samym być w stanie wygenerować reakcję. Na przykład, gdy obiekt się porusza, zapala się dioda LED lub inne znacznie bardziej złożone rzeczy.

Jak powiedziałem, ma 6 osi wolności, DoF, 3-osiowy akcelerometr przyspieszenia X, Y i Z oraz inny 3-osiowy żyroskop do pomiaru prędkości kątowej. Trzeba się liczyć z tym, żeby nie pomylić się w sposobie ustawienia modułu i kierunku obrotów dla pomiarów, bo źle zrobiony znak będzie trochę chaotyczny. Spójrz na poniższy obrazek, na którym określa kierunek osi (jednak zwróć uwagę, że sama płytka drukowana również ma wydrukowany po jednej stronie):

Arkusz danych MPU6050

Biorąc pod uwagę to i pinoutmniej więcej wszystko jest jasne, aby rozpocząć korzystanie z MPU6050. Jak widać na poprzednim obrazku, połączenia są dość proste i pozwala to na kompatybilność komunikacji I2C z większością mikrokontrolerów, w tym Arduino. Piny SCL i SDA mają na płytce rezystor podciągający do bezpośredniego połączenia z płytką Arduino, więc nie musisz się martwić o ich samodzielne dodawanie.

Aby pracować w obu kierunkach na magistrali I2C, możesz ich użyć szpilki i wskazówki:

  • AD0 = 1 lub High (5v): dla adresu I0C 69x2.
  • AD0 = 0 lub Low (GND lub Nc): dla adresu 0x68 magistrali I2C.

Pamiętaj, że napięcie robocze modelu to 3v3, ale na szczęście ma on wbudowany regulator, dzięki czemu można go bez problemu spasować z Arduino na 5v i zamieni je na 3.3v.

Nawiasem mówiąc, mając wewnętrzną rezystancję do GND, jeśli ten pin nie jest podłączony, adres domyślnie będzie to 0x68, ponieważ będzie domyślnie połączony z ziemią, interpretując to jako logiczne 0.

Integracja z Arduino

Połączenie Arduino i MPU6050

Możesz dostać więcej informacji o magistrali I2C w tym artykule. Wiesz już, że w zależności od płyty Arduino piny użyte do magistrali różnią się, ale w Arduino UNO to pin analogowy A4 i A5, dla SDA (dane) i SCL (zegar) odpowiednio. Są to jedyne piny Arduino, wraz z 5v i GND do zasilania płytki, których powinieneś używać. Więc połączenie jest tak proste, jak to tylko możliwe.

W przypadku funkcji MPU6050 możesz skorzystać z bibliotek, o których możesz uzyskać więcej informacji w tym linku do I2C modułu i magistrali MPU6050.

Programowanie płytki Arduino nie jest zbyt proste w przypadku MPU6050, więc nie jest dla początkujących. Ponadto, znając granice przyspieszeń lub zakresów kątów, możesz przeprowadzić kalibrację, aby określić dokładny ruch lub przyspieszenie. Jednak, abyś mógł przynajmniej mieć przykład komentowania jego używania, możesz zobaczyć ten kod z Przykładowy szkic dla Twojego Arduino IDE który odczyta wartości zarejestrowane przez akcelerometr i żyroskop:

// 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);
}

Jeśli jesteś początkującym i nie wiesz dobrze jak programować za pomocą Arduino IDEBędzie to trudne do zrozumienia, więc możesz bezpłatnie zapoznać się z naszą instrukcją z kursem wprowadzającym do programowania Arduino ...


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.