- Необходими компоненти:
- MPU6050 Жиросензор:
- Описание:
- Електрическа схема и обяснение:
- Обяснение на програмирането
MPU6050 сензорът има много функции над един чип. Състои се от акселерометър MEMS, жироскоп MEMS и температурен сензор. Този модул е много точен, докато преобразува аналогови стойности в цифрови, тъй като има 16bit аналогов в цифров преобразувател хардуер за всеки канал. Този модул може да улавя едновременно x, y и z канал. Той има I2C интерфейс за комуникация с хост контролера. Този модул MPU6050 е компактен чип с акселерометър и жироскоп. Това е много полезно устройство за много приложения като дронове, роботи, сензори за движение. Нарича се още жироскоп или тройноосен акселерометър.
Днес в тази статия ще свържем този MPU6050 жироскоп с Arduino и ще покажем стойностите над 16x2 LCD.
Необходими компоненти:
- Arduino Uno
- MPU-6050
- 10K ПОТ
- Тел за джъмпер
- Макет
- USB кабел
- Захранване
MPU6050 Жиросензор:
MPU-6050 е 8-пинов 6-осен жироскоп и акселерометър в един чип. Този модул работи по серийна комуникация на I2C по подразбиране, но може да бъде конфигуриран за интерфейс SPI, като конфигурира регистъра му. За I2C това има SDA и SCL линии. Почти всички щифтове са многофункционални, но тук продължаваме само с щифтове в режим I2C.
Конфигурация на ПИН:
Vcc: - този щифт се използва за захранване на модула MPU6050 по отношение на земята
GND: - това е заземен щифт
SDA: - SDA щифтът се използва за данни между контролера и модула mpu6050
SCL: - SCL щифтът се използва за въвеждане на часовник
XDA: - Това е линия за данни I2C SDA за конфигуриране и четене от външни сензори ((по избор), които не се използват в нашия случай)
XCL: - Това е сензорна линия I2C SCL за часовник за конфигуриране и отчитане от външни сензори ((по избор), които не се използват в нашия случай)
ADO: - I2C Slave Address LSB (не е приложим в нашия случай)
INT: - Прекъсващ щифт за индикация за готовност на данните.
Описание:
В тази статия показваме показания за температура, жироскоп и акселерометър върху LCD, използвайки MPU6050 с Arduino. Този модул ни дава стойности на редове и нормализирани стойности в изхода, но стойностите на редовете не са стабилни, така че тук имаме показва нормализирани стойности на LCD. Ако просто искате стойност на акселерометъра, можете също да използвате акселерометър ADXL335 с Arduino.
В този проект първо показахме температурна стойност над LCD и след 10 секунди показваме жироскопични стойности и след 10 секунди имаме показания на акселерометъра, както е показано на изображенията по-долу:
Електрическа схема и обяснение:
Схемата за свързване на MPU6050 с Arduino е много проста, тук използвахме LCD и MPU6050. И тук използвахме USB захранване за лаптоп. 10k пот се използва за контрол на яркостта на LCD. Във връзка с MPU6050 сме направили 5 връзки, в които сме свързали захранването с 3.3v и земята на MPU6050 към 3.3v и земята на Arduino. SCL и SDA щифтовете на MPU6050 са свързани с A4 и A5 пина на Arduino. И INT изводът на MPU6050 е свързан към прекъсване 0 на Arduino (D2). RS, RW и EN на LCD са директно свързани с 8, gnd и 9 на Arduino. ПИН за данни са директно свързани с цифрови пинове с номера 10, 11, 12 и 13.
Обяснение на програмирането
Частта за програмиране също е лесна за този проект. Тук използвахме тази библиотека MPU6050, за да я свържем с Arduino. И така, на първо място, трябва да изтеглим библиотеката MPU6050 от GitHub и да я инсталираме в Arduino IDE.
След него можем да намерим примерни кодове в примера. Потребителят може да тества този код, като ги качи директно в Arduino и може да вижда стойности през сериен монитор. Или потребителят може да използва нашия код, даден в края на статията, за да показва стойности и върху LCD и сериен монитор.
При кодирането включихме някои необходими библиотеки като MPU6050 и LCD.
#include
Във функцията за настройка инициализираме двете устройства и пишем приветствено съобщение през LCD
void setup () {lcd.begin (16,2); lcd.createChar (0, градус); Serial.begin (9600); Serial.println ("Инициализиране на MPU6050"); докато (! mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {lcd.clear (); lcd.print ("Устройството не е намерено"); Serial.println („Не можах да намеря валиден сензор MPU6050, проверете окабеляването!“); забавяне (500); } брой = 0; mpu.calibrateGyro (); mpu.setThreshold (3); Функция в цикъл , ние извикахме три функции на всеки 10 секунди за показване на температура, жироскоп и акселерометър на LCD. Тези три функции са tempShow, gyroShow и accelShow , можете да проверите тези функции в пълния код на Arduino, даден в края на тази статия:
цикъл void () {lcd.clear (); lcd.print ("Температура"); дълъг st = милис (); Serial.println ("Температура"); докато (милис ()
Жироскопът и акселерометърът MPU6050 се използват за откриване на позицията и ориентацията на всяко устройство. Жироскопът използва земната гравитация, за да определи позициите на оста x, y и z, а акселерометърът открива въз основа на скоростта на промяната на движението. Вече използвахме акселерометъра с Arduino в много от нашите проекти като:
- Робот с ръчен жест, базиран на акселерометър
- Система за предупреждение за инциденти на базата на Arduino
- Аларма за детектор за земетресение с използване на Arduino