
Nakasalansan mula sa 12 mga larawan. Paraan=B (R=44,S=4)
Sa mundo ngayon ng teknolohiya at electronics, ang mga sensor ng MEMS (Micro-Electro-Mechanical Systems) ay naging isang pangunahing tool para sa lahat ng uri ng mga proyekto, mula sa robotics hanggang sa home automation at wearable. Mga module na pinagsama ang mga accelerometer at gyroscope, gaya ng MPU6050 at LSM9DS1, ay dalawa sa mga pinakasikat na opsyon salamat sa kanilang versatility, mababang gastos, at kadalian ng pagsasama sa mga microcontroller tulad ng Arduino at iba pang mga platform. Ang masusing pag-unawa sa kanilang operasyon, mga natatanging tampok, pagkakaiba, at maging ang pinakamahusay na paraan upang magamit ang mga ito ay mahalaga para sa pagdidisenyo ng mga tumpak na sistema na sukatin ang paggalaw, oryentasyon at hilig.
Sa artikulong ito ay dadalhin ka namin nang sunud-sunod sa lahat ng kailangan mong malaman tungkol sa mga sensor MPU6050 y LSM9DS1: kung paano gumagana ang mga ito, anong mga application ang mayroon sila, kung paano isama ang mga ito sa iyong proyekto, i-calibrate ang mga ito, bigyang-kahulugan nang tama ang kanilang mga pagbabasa at sulitin ang kanilang mga kakayahan, pagsasama-sama ng impormasyong nakalap sa pinakamahusay na mga tutorial at teknikal na artikulo, sa ilalim ng praktikal at na-update na pananaw na may malapit na wika, upang makamit ang mga propesyonal na resulta sa iyong mga pag-unlad.
Ano ang isang sensor ng MEMS at paano ito gumagana?
Bago pumunta sa mga partikular na modelong MPU6050 at LSM9DS1, mahalagang maging malinaw tungkol sa konsepto ng MEMS sensor. Ang mga aparatong ito, na tinatawag ding Micro Electro Mechanical System, isama ang mga microscopic na mekanikal na bahagi at mga electronic circuit sa iisang chip, para ma-detect nila ang mga pisikal na variation—gaya ng mga acceleration, rotation, o vibrations—at i-convert ang mga ito sa mga electrical signal na maaaring bigyang-kahulugan ng mga digital system.
Sa kaso ng MEMS accelerometers at gyroscope, ang kanilang operasyon ay batay sa mga prinsipyo tulad ng:
- Ang batas ng acceleration ni Newton (a = F/m), gamit ang mga panloob na istruktura na kumikilos bilang mga mikroskopikong masa at bukal.
- Ginagamit ang Coriolis effect upang makita ang mga angular na paggalaw, sinasamantala ang pagpapalihis na nararanasan ng maliliit na masa kapag umiikot sa loob ng chip.
- Ang mga panloob na nagko-convert ng ADC upang baguhin ang mga pisikal na pagkakaiba-iba sa mga digital na halaga na may mataas na resolution (karaniwan ay 16 bits).
Ang mga kakayahang ito ay ginagawang lubhang kapaki-pakinabang ang MEMS sa mga application na nangangailangan pagsukat ng oryentasyon, hilig o paggalaw sa tatlong dimensyon, gaya ng mga navigation system, camera stabilization, smart watches, drones, robots, at marami pang iba.
Mga pangunahing tampok ng MPU6050
El MPU6050 Ito marahil ang pinakamalawak na ginagamit na sensor ng paggalaw ng MEMS sa mga gumagawa, mga inhinyero at mga hobbyist na naghahanap ng isang matipid at maaasahang solusyon para sa pagsukat ng acceleration at pag-ikot sa tatlong axes.
Kabilang sa mga pangunahing teknikal na pagtutukoy nito ang:
- 3-axis accelerometer: May kakayahang mag-detect ng mga acceleration sa X, Y at Z axes, na may programmable range na ±2g, ±4g, ±8g at ±16g.
- 3 axis dyayroskop: Sinusukat ang angular velocities sa lahat ng tatlong axes, na may adjustable sensitivity sa ±250, ±500, ±1000 at ±2000 degrees bawat segundo.
- Digital na motion processor (DMP): Nagsasama ng panloob na microprocessor na nakatuon sa pagsasagawa ng mga kumplikadong kalkulasyon Motion Fusion (sensor fusion), pagkalkula ng data tulad ng mga quaternion, Euler angle at rotation matrice nang hindi kinakailangang i-load ang mga kalkulasyon na iyon sa pangunahing microcontroller.
- Digital na output sa pamamagitan ng I2C: Mga komunikasyon sa pamamagitan ng I2C bus na may dalawang posibleng address (nai-configure sa pamamagitan ng pin AD0 hanggang 0x68 o 0x69), na nagpapahintulot sa operasyon sa karamihan ng Arduino, ESP at mga katulad na board.
- 16-bit na ADC converter: Nag-aalok ito ng mataas na resolution sa pangongolekta ng data.
- Pinagsamang sensor ng temperatura
- Posibilidad ng pagpapalawak gamit ang isang panlabas na magnetometer: Sa pamamagitan ng auxiliary bus ng I2C, mababasa ng MPU6050 ang iba pang konektadong mga sensor gaya ng sikat na HMC5883L (magnetometer), upang bumuo ng kumpletong 9-axis na IMU.
- Flexible na operating boltahe: Maaari itong paandarin sa 3,3V o kahit na 5V kung ang motherboard tulad ng GY-521 ay ginagamit, na may kasamang regulator.
Higit pa rito, ang compact na laki ng module (mga 25 x 15 mm) at ang katotohanang ito ay handa na para sa pagsasama sa isang breadboard ay ginagawa itong perpekto para sa parehong pagsubok at panghuling pag-unlad.
Ano ang LSM9DS1 at paano ito naiiba?
Naman, ang LSM9DS1 Ito ay isang mas advanced at modernong opsyon sa loob ng pamilya MEMS IMU, bagama't ito ay hindi gaanong popular kaysa sa MPU6050 sa mga baguhan na proyekto. Pinagsasama nito ang sumusunod sa isang chip:
- Un 3-axis accelerometer
- Un 3 axis gyroscope
- Un magnetometer din 3-axis
Nangangahulugan ito na ang LSM9DS1 ay a 9 DoF (Degrees of Freedom) IMU, na nagbibigay-daan sa iyong sukatin ang acceleration, angular velocity at ang magnetic field ng Earth sa tatlong dimensyon, na nagbibigay ng kumpleto at tumpak na pagbabasa ng ganap na posisyon at oryentasyon may kinalaman sa Earth.
Ang mga pangunahing bentahe nito sa MPU6050 ay kinabibilangan ng:
- Pinagsasama ang tatlong sensor sa isang pisikal na chip, pagtitipid ng espasyo at pagpapasimple ng mga koneksyon.
- Maaari kang makipag-usap pareho sa pamamagitan ng I2C bilang SPI, na nagbibigay ng higit na kakayahang magamit para sa iba't ibang platform.
- Ang mga saklaw at sensitivity ng bawat sensor (accelerometer, gyroscope, magnetometer) ay mas madaling i-configure.
- Mayroon itong advanced na digital filtering at mga opsyon sa pagtuklas ng kaganapan.
Ang LSM9DS1 ay kadalasang pinipili para sa mga proyekto kung saan kinakailangan ang ganap na oryentasyon (hal., mga compass, navigation system, o flight stabilization) nang hindi nangangailangan ng karagdagang mga panlabas na sensor.
Mga prinsipyo ng pagpapatakbo ng MEMS accelerometers at gyroscope
Upang tunay na maunawaan kung paano gumagana ang mga module ng MEMS na ito, mahalagang maunawaan ang mga pisikal na konsepto at kung paano isinasalin ang mga ito sa digital na data:
Accelerometer
Un MEMS accelerometer sinusukat ang acceleration ng isang bagay (pagbabago sa bilis sa paglipas ng panahon) na may kaugnayan sa tatlong axes ng espasyo. Sa panloob, ito ay batay sa pagkakaroon ng a sinuspinde ang mikroskopikong masa sa pamamagitan ng nababaluktot na mga anchor o maliliit na bukal. Kapag ang sensor ay bumilis, ang masa na ito ay bahagyang nagbabago, at ang pagkakaiba-iba na ito ay na-convert sa isang de-koryenteng signal gamit ang mga variable o piezoelectric capacitor.
- Ang accelerometer ay palaging nakakakita ng kahit isang acceleration: ang grabidad (9,81 m / s2), kahit na ang sensor ay pa rin.
Ito ay ginagamit upang kalkulahin ang pagkahilig na may paggalang sa pahalang na eroplano. - Sa pamamagitan ng pagsasama ng acceleration na may paggalang sa oras, ang bilis at, sa turn, ang posisyon na nilakbay ay maaaring makuha, kahit na ang mga operasyong ito ay may posibilidad na makaipon ng mga error.
Gyroscope
El MEMS gyroscope gamitin ang Epekto ng Coriolis upang makita ang bilis ng pag-ikot ng isang katawan sa paligid ng X, Y at Z axes nito. Kapag ang sensor ay nakakaranas ng pag-ikot, ang mga panloob na vibrating mass ay dumaranas ng isang paglihis na proporsyonal sa angular velocity, at ang pagbabagong iyon ay sinusukat sa elektronikong paraan.
- Ang gyroscope ay sumusukat angular velocity: gaano kabilis nagbabago ang oryentasyon ng sensor sa bawat axis.
- Ang pagsasama ng angular velocity sa oras ay nagbibigay ng anggulo ng pag-ikot (angular na posisyon), kahit na ang operasyong ito ay bumubuo ng pinagsama-samang mga error na tinatawag sumama sa agos.
Bakit pagsamahin ang accelerometer at gyroscope?
Sa kanilang sarili, ang parehong mga accelerometers at gyroscope ay may mga limitasyon kapag tinutukoy ang oryentasyon ng isang bagay:
- Accelerometer: Tumpak sa pag-detect ng mga hilig na nauugnay sa vertical axis (gamit ang gravity), ngunit napakasensitibo sa biglaang paggalaw, panlabas na acceleration o vibrations.
- Gyroscope: Ito ay mainam para sa pagsukat ng mabilis na pagbabago sa oryentasyon, ngunit naghihirap mula sa akumulasyon ng error kung ang output nito ay isinama sa mahabang panahon.
Samakatuwid, karamihan sa mga application ay pinagsama ang data mula sa parehong mga sensor, na lubos na nagpapabuti sa katumpakan at pagiging maaasahan ng mga pagbabasa. anggulo, hilig o posisyonUpang makamit ito, ginagamit ang mga ito digital processing filter gaya ng Complementary filter o Kalman filter, na pinagsasama at tinitimbang ang mga pakinabang ng bawat sensor.
Pagsisimula sa MPU6050: koneksyon at mga aklatan
Karaniwang diagram ng koneksyon
Ang modyul MPU6050 Ito ay karaniwang naka-mount sa isang uri ng plato GY-521, na lubos na nagpapadali sa pagsasama sa mga microcontroller tulad ng Arduino.
Ang mga pangunahing koneksyon para magamit ang module sa I2C mode ay karaniwang:
MPU6050 | Arduino Uno/Nano/Mini | Arduino Mega/DUE | arduino leonardo |
---|---|---|---|
VCC | 5V | 5V | 5V |
GND | GND | GND | GND |
SCL | A5 | 21 | 3 |
SDA | A4 | 20 | 2 |
Ang module ay may built-in na pull-up resistors, kaya sa pangkalahatan ay hindi kinakailangan na idagdag ang mga ito sa labas.
I2C address at AD0 pin
Binibigyang-daan ka ng MPU6050 na i-configure ang I2C address nito sa 0x68 (bilang default, kapag ang AD0 pin ay nasa GND o hindi nakakonekta) o 0x69 (kapag nakakonekta ang AD0 sa mataas/5V). Ginagawa nitong madali ang paggamit ng maraming sensor sa iisang bus.
Inirerekomendang library: I2Cdevlib ni Jeff Rowberg
Upang gumana nang kumportable sa MPU6050 sa Arduino, inirerekomenda ng komunidad ang paggamit ng mga sumusunod na aklatan:
- I2Cdev: Pinapadali ang komunikasyon ng I2C sa maraming sensor.
- MPU6050: Binibigyang-daan kang i-access ang lahat ng mga function ng sensor, basahin ang mga naka-calibrate na halaga, mga offset, at gamitin ang DMP.
Available ang mga ito sa: https://github.com/jrowberg/i2cdevlib
Kapag na-download na, i-unzip lang ang mga ito at ilagay sa folder aklatan mula sa Arduino IDE.
Pagbasa ng pangunahing data: acceleration at angular velocity
Kapag ang MPU6050 ay konektado at na-configure, ang susunod na hakbang ay upang gumanap pagbabasa ng mga acceleration at angular velocities sa tatlong palakol. Ang pangunahing proseso, gamit ang nabanggit na aklatan, ay kinabibilangan ng:
- I-initialize ang sensor gamit ang function sensor.initialize().
- Suriin ang koneksyon sa sensor.testConnection().
- Basahin ang mga halaga ng RAW (hindi naproseso) mula sa accelerometer at gyroscope sa mga variable tulad ng ax, ay, az para sa acceleration at gx, gy, gz para sa spin.
- Ipadala ang data sa serial port upang ipakita ang mga resulta.
Lumilitaw ang data na ito bilang mga 16-bit na integer sa hanay .
Pag-calibrate ng MPU6050 sensor
Isa sa mga pangunahing yugto kapag ginagamit ang MPU6050 ay ang pagkakalibrateNapakakaraniwan para sa sensor na ibalik ang mga hindi zero na halaga, kahit na ito ay ganap na pahalang at pahinga, dahil sa mga posibleng maling pagkakahanay kapag nagso-soling ng chip sa module, o kahit na mga maliliit na kakulangan sa pagmamanupaktura.
Ang pag-calibrate ng sensor ay kinabibilangan ng pagtukoy sa accelerometer at gyroscope offset sa bawat axis at i-configure ang mga ito sa sensor upang ang mga pagbabasa ay batay sa tamang impormasyon. Ang isang karaniwang proseso ay maaaring binubuo ng:
- Basahin ang kasalukuyang mga offset gamit ang mga function tulad ng getXAccelOffset(), getYAccelOffset(), Atbp
- Ilagay ang sensor sa isang pahalang na posisyon at ganap na tahimik.
- Gamit ang isang program, isaayos ang mga offset hanggang sa ang mga na-filter na pagbabasa (halimbawa, gamit ang isang moving average o low-pass na filter) ay magsalubong sa mga ideal na halaga: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 sa raw mode (RAW).
- Itakda ang mga halagang ito gamit ang mga function setXAccelOffset(), setYAccelOffset(), Atbp
Kapag na-calibrate nang maayos, ang sensor ay magbibigay ng mas tumpak at matatag na mga halaga, mahalaga para sa mga kritikal na aplikasyon gaya ng stabilization o navigation.
Pag-scale at pag-convert ng mga pagbabasa sa mga pisikal na yunit
Ang mga hilaw na pagbabasa mula sa MPU6050 ay dapat ibahin sa mga yunit ng SI (International System) upang mabigyang-kahulugan at magamit sa mga pisikal na kalkulasyon o visualization ng data:
- Pagpapabilis: Ang default na hanay ay ±2g, na katumbas ng ±19,62 m/s2Ang isang RAW na halaga ng 16384 ay tumutugma sa 1g; samakatuwid, upang i-convert sa x am/s2: palakol * (9,81/16384.0).
- Angular na bilis: Bilang default, ±250°/s, kaya ang conversion ay magiging: gx * (250.0 / 32768.0) upang i-convert mula sa mga halaga ng RAW sa mga degree sa bawat segundo.
Magbabago ang mga scale factor na ito kung iko-configure mo ang sensor sa iba pang mga range, kaya mahalagang palaging suriin ang factory o custom na mga setting bago bigyang-kahulugan ang data.
Kalkulahin ang pagtabingi gamit lamang ang accelerometer
Kapag ang sensor ay nakapahinga o nasa ilalim lamang ng epekto ng gravity, ang mga pagbabasa ng accelerometer ay maaaring gamitin upang kalkulahin ang anggulo ng pagkahilig na may paggalang sa X at Y axesAng mga karaniwang mathematical formula ay gumagamit ng mga function na trigonometriko:
- Para sa X-inclination: atan(ax / sqrt(ay² + az²)) × 180/π
- Para sa Y-slant: atan(ay / sqrt(ax² + az²)) × 180/π
Nagbibigay ito ng anggulo ng pagkahilig na may paggalang sa bawat axis na nauugnay sa eroplano ng grabidad, kahit na kung ang sensor ay gumagalaw o tumatanggap ng iba pang mga acceleration, ang mga halagang ito ay maaaring mabago.
Pagkalkula ng mga anggulo ng pag-ikot gamit ang gyroscope
Ang dyayroskop ay nagbibigay-daan upang makalkula ang pagkakaiba-iba ng anggulo sa pamamagitan ng pagsasama ng angular velocity sa paglipas ng panahon. Sa matematika:
- Ang anggulo ay katumbas ng integral ng angular velocity sa isang naibigay na agwat ng oras: θ = θ0 + ∫w·dt
Sa pagsasagawa, ang mga kalkulasyon na ito ay maaaring isagawa sa mga loop ng programa, na nagsusuma ng angular velocity na pinarami ng sampling period (dt) upang makuha ang naipon na anggulo.
Mahalagang kontrolin ang error sa pagsasama, dahil naiipon ang maliliit na error, na nagiging sanhi sumama sa agos.
Mga filter ng pagsasanib ng sensor: Complementary at Kalman
Upang mabawasan ang mga error sa interpretasyon at masulit ang bawat sensor, ginagamit ang mga algorithm ng pagsasanib ng data:
Komplementaryong Filter
Pinagsasama ng filter na ito ang anggulo na tinatantya ng gyroscope (na gumagana nang maayos sa maikling termino) sa anggulo na kinakalkula ng accelerometer (na mas maaasahan sa pangmatagalan ngunit maingay). Ang karaniwang formula ay:
Final_angle = α × (Nakaraang_angle + Angular_velocity×dt) + (1-α) × Accelerometer_angle
Kung saan ang α ay karaniwang nasa pagitan ng 0,95 at 0,99. Ito ay nagbibigay-daan upang makakuha ng isang matatag na pagbabasa at bawasan ang sumama sa agos.
Kalman filter
Higit na mas advanced, ang filter na ito ay nagsasama ng mga sukat, na isinasaalang-alang ang kawalan ng katiyakan ng bawat pagsukat at ang kanilang mga ugnayan, na nakakakuha ng mga tumpak na pagtatantya sa pagkakaroon ng ingay. Ito ay malawakang ginagamit sa mga navigation system at advanced na robotics, bagama't nangangailangan ito ng mas malaking computational power.
3D simulation at orientation visualization (Yaw, Pitch, Roll)
Ang isang kawili-wiling application ay ang real-time na pagpapakita ng 3D na oryentasyon ng isang bagay, tulad ng drone o robot, sa pamamagitan ng pagre-represent sa mga anggulo Yaw, Pitch and Roll.
Ito ay nakakamit sa pamamagitan ng pagpapadala ng naprosesong data sa graphics software, gamit ang mga tool tulad ng Serial Plotter o mga partikular na 3D program upang masubaybayan at suriin ang mga paggalaw. Sa ganitong paraan, maaari mong biswal na maunawaan kung paano naka-orient ang iyong system sa espasyo.
Mga pinahabang pagbabasa: paggamit ng magnetometer at LSM9DS1 sensor
El LSM9DS1 isinasama ang isang accelerometer, gyroscope at magnetometer sa isang chip, na nagpapahintulot sa data na makuha mula sa ganap na posisyon at oryentasyonBilang karagdagan sa pagsukat ng acceleration at pag-ikot, maaari nitong makita ang magnetic field ng Earth sa:
- Kalkulahin ang ganap na azimuth, kapaki-pakinabang sa nabigasyon at mga digital compass.
- Bumuo ng mga sistema ng paggabay nang hindi nangangailangan ng karagdagang mga panlabas na sensor.
- I-fuse ang data mula sa lahat ng sensor para sa lubos na tumpak na pagtatantya ng posisyon at oryentasyon (9-DoF).
Mga praktikal na tip para sa epektibong paggamit ng MPU6050 at LSM9DS1
- Palaging i-calibrate ang mga sensor bago gamitin sa mga kritikal na application upang mapabuti ang katumpakan.
- Iwasan ang pag-mount ng mga module malapit sa pinagmumulan ng electromagnetic interference, tulad ng mga motor o magnet.
- Gumamit ng mga diskarte sa pag-filter at panatilihin ang tumpak na kontrol sa mga oras ng sampling.
- Para sa ganap na oryentasyon na may paggalang sa hilaga, inirerekumenda na gumamit ng a LSM9DS1 o pagsamahin ang MPU6050 sa isang panlabas na magnetometer, tulad ng HMC5883L.
- Ang pagpapatupad ng mga real-time na visualization ay nakakatulong upang mas mahusay na bigyang-kahulugan ang mga nakolektang data.
- Mga tindahan ng libro tulad ng i2cdevlib Ginagawa nilang mas simple ang trabaho, kaya unahin ang mga ito upang gawing mas madali ang pag-unlad.