- Reikalingi komponentai:
- MPU6050 giroskopo jutiklis:
- Apibūdinimas:
- Grandinės schema ir paaiškinimas:
- Programavimo paaiškinimas
MPU6050 jutiklis turi daug funkcijų per vieną lustą. Jį sudaro MEMS akselerometras, MEMS giroskopas ir temperatūros jutiklis. Šis modulis yra labai tikslus konvertuojant analogines vertes į skaitmenines, nes kiekvienam kanalui yra skirta 16 bitų analoginio į skaitmeninį keitiklio aparatūrą. Šis modulis vienu metu gali užfiksuoti x, y ir z kanalus. Jis turi I2C sąsają, kad galėtų bendrauti su pagrindinio kompiuterio valdikliu. Šis „ MPU6050“ modulis yra kompaktiškas lustas, turintis ir akselerometrą, ir giroskopą. Tai yra labai naudingas prietaisas daugeliui programų, pavyzdžiui, dronams, robotams, judesio jutikliams. Jis taip pat vadinamas giroskopu arba trigubos ašies akselerometru.
Šiandien šiame straipsnyje mes susiesime šį „MPU6050“ giroskopą su „Arduino“ ir parodysime vertes per 16x2 LCD ekraną.
Reikalingi komponentai:
- Arduino Uno
- MPU-6050
- 10K POT
- Džemperio viela
- Bandomoji Lenta
- USB kabelis
- Maitinimo šaltinis
MPU6050 giroskopo jutiklis:
MPU-6050 yra 8 kontaktų 6 ašių giroskopas ir akselerometras vienoje mikroschemoje. Šis modulis veikia pagal I2C nuoseklųjį ryšį pagal numatytuosius nustatymus, tačiau jį galima sukonfigūruoti SPI sąsajai sukonfigūruojant jo registrą. „I2C“ tai turi SDA ir SCL linijas. Beveik visi kaiščiai yra daugiafunkciniai, tačiau čia mes dirbame tik su I2C režimo kaiščiais.
Smeigtuko konfigūracija:
Vcc: - šis kaištis naudojamas MPU6050 moduliui maitinti atsižvelgiant į žemę
GND: - tai žemės smeigtukas
SDA: - SDA kaištis naudojamas duomenims tarp valdiklio ir „mpu6050“ modulio
SCL: - SCL kaištis naudojamas laikrodžio įvedimui
XDA: - Tai jutiklio I2C SDA duomenų linija, skirta konfigūruoti ir skaityti iš išorinių jutiklių ((pasirinktinai), mūsų atveju nenaudojama)
XCL: - tai jutiklio I2C SCL laikrodžio linija, skirta konfigūruoti ir skaityti iš išorinių jutiklių ((pasirinktinai), mūsų atveju nenaudojama)
ADO: - I2C vergo adresas LSB (mūsų atveju netaikomas)
INT: - pertraukimo kaištis, rodantis paruoštus duomenis.
Apibūdinimas:
Šiame straipsnyje mes parodome temperatūros, giroskopo ir akselerometro rodmenis per LCD, naudodami MPU6050 su „Arduino“. Šis modulis pateikia eilutės reikšmes ir normalizuotas išvesties reikšmes, tačiau eilutės vertės nėra stabilios, todėl čia mes rodome normalizuotas vertes per LCD. Jei norite tik akselerometro vertės, taip pat galite naudoti akselerometrą ADXL335 su „Arduino“.
Šiame projekte mes pirmiausia parodėme temperatūros vertę per LCD, o po 10 sekundžių parodome giroskopo reikšmes, o po 10 sekundžių turime akselerometro rodmenis, kaip parodyta toliau pateiktuose paveikslėliuose:
Grandinės schema ir paaiškinimas:
Grandinės schema, skirta susieti MPU6050 su „Arduino“, yra labai paprasta, nes čia mes naudojome LCD ir MPU6050. Ir čia mes panaudojome nešiojamojo kompiuterio USB maitinimo šaltinį. LCD ryškumui reguliuoti naudojamas 10 000 puodas. Ryšium su MPU6050, mes padarėme 5 jungtis, kuriose mes prijungėme 3,3 V maitinimo šaltinį ir MPU6050 įžeminimą prie 3,3 V ir „Arduino“ įžeminimo. MPL6050 SCL ir SDA kaiščiai yra sujungti su „Arduino“ A4 ir A5 kaiščiais. MPU6050 INT kaištis yra prijungtas prie „Arduino“ (D2) 0 pertraukimo. LCD RS, RW ir EN yra tiesiogiai prijungti prie 8, gnd ir 9 „Arduino“. Duomenų kaiščiai yra tiesiogiai prijungti prie skaitmeninių kaiščių numerių 10, 11, 12 ir 13.
Programavimo paaiškinimas
Šiam projektui taip pat lengva programuoti. Čia mes naudojome šią MPU6050 biblioteką, kad susietume ją su „Arduino“. Taigi pirmiausia turime atsisiųsti „MPU6050“ biblioteką iš „GitHub“ ir įdiegti ją į „Arduino IDE“.
Po jo pavyzdyje galime rasti kodų pavyzdžius. Vartotojas gali išbandyti tą kodą tiesiogiai įkeldamas juos į „Arduino“ ir gali matyti reikšmes per nuoseklųjį monitorių. Arba vartotojas gali naudoti mūsų kodą, pateiktą straipsnio pabaigoje, taip pat rodyti vertes per LCD ir nuoseklųjį monitorių.
Į kodavimą įtraukėme keletą reikalingų bibliotekų, tokių kaip MPU6050 ir LCD.
# įtraukti
Naudodamiesi sąrankos funkcija, mes inicijuojame abu įrenginius ir rašome sveikinimo pranešimą per LCD
negaliojanti sąranka () {lcd.begin (16,2); lcd.createChar (0, laipsnis); Serijos pradžia (9600); Serial.println ("Inicijuoti MPU6050"); while (! mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {lcd.clear (); lcd.print („Įrenginys nerastas“); Serial.println ("Nepavyko rasti galiojančio MPU6050 jutiklio, patikrinkite laidus!"); vėlavimas (500); } skaičius = 0; mpu.calibrateGyro (); mpu.setThreshold (3); Pagal ciklo funkciją kas 10 sekundžių iškvietėme tris funkcijas temperatūros, giroskopo ir akselerometro rodmenų rodymui LCD. Šios trys funkcijos yra tempShow, gyroShow ir accelShow , šias funkcijas galite patikrinti visame Arduino kode, pateiktame šio straipsnio pabaigoje:
tuštuma kilpa () {lcd.clear (); lcd.print ("Temperatūra"); ilgas st = milis (); Serial.println („Temperatūra“); o (milis ()
MPU6050 giroskopas ir akselerometras naudojami aptikti bet kurio prietaiso padėtį ir orientaciją. Giroskopas naudoja žemės gravitaciją, kad nustatytų x, y ir z ašies padėtį, o akselerometras aptinka pagal judėjimo pokyčio greitį. Akselerometrą su „Arduino“ jau naudojome daugelyje savo projektų, tokių kaip:
- Akselerometru paremtas robotas, valdomas rankomis
- „Arduino“ pagrįsta transporto priemonių įspėjimo apie avarijas sistema
- Žemės drebėjimo detektoriaus signalizacija naudojant „Arduino“