- Wymagane komponenty:
- Czujnik żyroskopowy MPU6050:
- Opis:
- Schemat obwodu i wyjaśnienie:
- Objaśnienie programowania
Czujnik MPU6050 ma wiele funkcji na jednym chipie. Składa się z akcelerometru MEMS, żyroskopu MEMS i czujnika temperatury. Ten moduł jest bardzo dokładny podczas konwersji wartości analogowych na cyfrowe, ponieważ ma 16-bitowy konwerter analogowo-cyfrowy dla każdego kanału. Ten moduł może jednocześnie przechwytywać kanały x, y i z. Posiada interfejs I2C do komunikacji z kontrolerem hosta. Ten moduł MPU6050 to kompaktowy chip zawierający akcelerometr i żyroskop. To bardzo przydatne urządzenie do wielu zastosowań, takich jak drony, roboty, czujniki ruchu. Jest również nazywany akcelerometrem żyroskopowym lub trójosiowym.
Dzisiaj w tym artykule połączymy ten żyroskop MPU6050 z Arduino i pokażemy wartości na wyświetlaczu LCD 16x2.
Wymagane komponenty:
- Arduino Uno
- MPU-6050
- 10K POT
- Przewód połączeniowy
- Płytka prototypowa
- Kabel USB
- Zasilacz
Czujnik żyroskopowy MPU6050:
MPU-6050 to 8-pinowy 6-osiowy żyroskop i akcelerometr w jednym chipie. Moduł ten domyślnie pracuje na komunikacji szeregowej I2C, ale można go skonfigurować dla interfejsu SPI, konfigurując go w rejestrze. W przypadku I2C ma to linie SDA i SCL. Prawie wszystkie piny są wielofunkcyjne, ale tutaj będziemy postępować tylko z pinami trybu I2C.
Konfiguracja pinów:
Vcc: - ten pin służy do zasilania modułu MPU6050 względem masy
GND: - to jest pin masy
SDA: - pin SDA służy do przesyłania danych pomiędzy kontrolerem a modułem mpu6050
SCL: - pin SCL służy do wejścia zegara
XDA: - Jest to linia danych czujnika I2C SDA do konfiguracji i odczytu z czujników zewnętrznych ((opcja) nieużywana w naszym przypadku)
XCL: - To jest linia zegara czujnika I2C SCL do konfiguracji i odczytu z czujników zewnętrznych ((opcjonalnie) nieużywanych w naszym przypadku)
ADO: - I2C Slave Address LSB (nie dotyczy w naszym przypadku)
INT: - Pin przerwania wskazujący gotowość danych.
Opis:
W tym artykule pokazujemy odczyty temperatury, żyroskopu i akcelerometru na wyświetlaczu LCD przy użyciu MPU6050 z Arduino. Ten moduł daje nam wartości wierszy i znormalizowane wartości na wyjściu, ale wartości wierszy nie są stabilne, więc tutaj pokazujemy znormalizowane wartości na LCD. Jeśli potrzebujesz tylko wartości akcelerometru, możesz również użyć akcelerometru ADXL335 z Arduino.
W tym projekcie najpierw pokazaliśmy wartość temperatury na wyświetlaczu LCD i po 10 sekundach pokazujemy wartości żyroskopu, a po 10 sekundach mamy odczyty akcelerometru, jak pokazano na poniższych obrazkach:
Schemat obwodu i wyjaśnienie:
Schemat obwodu do połączenia MPU6050 z Arduino jest bardzo prosty, tutaj użyliśmy wyświetlacza LCD i MPU6050. I tutaj użyliśmy zasilacza USB do laptopa. Potencjometr 10k służy do kontrolowania jasności wyświetlacza LCD. W związku z MPU6050 wykonaliśmy 5 połączeń, w których podłączyliśmy zasilanie 3,3v i masę MPU6050 do 3,3v i masy Arduino. Piny SCL i SDA MPU6050 są połączone z pinami A4 i A5 Arduino. A pin INT w MPU6050 jest podłączony do przerwania 0 Arduino (D2). LCD RS, RW i EN są bezpośrednio podłączone do 8, gnd i 9 Arduino. Pin danych jest bezpośrednio połączony z cyfrowym pinem numer 10, 11, 12 i 13.
Objaśnienie programowania
Część programowa jest również łatwa w tym projekcie. Tutaj użyliśmy tej biblioteki MPU6050, aby połączyć ją z Arduino. Przede wszystkim musimy więc pobrać bibliotekę MPU6050 z GitHub i zainstalować ją w Arduino IDE.
Po nim możemy znaleźć przykładowe kody w przykładzie. Użytkownik może przetestować ten kod, przesyłając go bezpośrednio do Arduino i może zobaczyć wartości na monitorze szeregowym. Lub użytkownik może użyć naszego kodu podanego na końcu artykułu, aby wyświetlić wartości również na wyświetlaczu LCD i monitorze szeregowym.
Podczas kodowania zawarliśmy kilka wymaganych bibliotek, takich jak MPU6050 i LCD.
#zawierać
W funkcji konfiguracji inicjalizujemy oba urządzenia i piszemy wiadomość powitalną na wyświetlaczu LCD
void setup () {lcd.begin (16,2); lcd.createChar (0, stopień); Serial.begin (9600); Serial.println ("Zainicjuj MPU6050"); while (! mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {lcd.clear (); lcd.print ("Nie znaleziono urządzenia"); Serial.println ("Nie można znaleźć prawidłowego czujnika MPU6050, sprawdź okablowanie!"); opóźnienie (500); } count = 0; mpu.calibrateGyro (); mpu.setThreshold (3); W funkcji pętli wywołaliśmy trzy funkcje co 10 sekund do wyświetlania temperatury, żyroskopu i odczytu akcelerometru na wyświetlaczu LCD. Te trzy funkcje to tempShow, gyroShow i accelShow , możesz sprawdzić te funkcje w pełnym kodzie Arduino podanym na końcu tego artykułu:
void loop () {lcd.clear (); lcd.print ("Temperatura"); long st = millis (); Serial.println ("Temperatura"); podczas (millis ()
Żyroskop i akcelerometr MPU6050 służą do wykrywania pozycji i orientacji dowolnego urządzenia. Żyroskop wykorzystuje ziemską grawitację do określenia pozycji osi x, yi z, a akcelerometr wykrywa na podstawie szybkości zmiany ruchu. Korzystaliśmy już z akcelerometru z Arduino w wielu naszych projektach, takich jak:
- Robot sterowany gestami dłoni oparty na akcelerometrze
- System ostrzegania o wypadkach pojazdów oparty na Arduino
- Alarm wykrywacza trzęsień ziemi za pomocą Arduino