Калі вам трэба стварыць праект і размясціць яго, гэта значыць, ведайце як ён размешчаны адносна прасторы, вы можаце выкарыстоўваць модуль МПУ6050. Гэта значыць, гэты модуль - гэта інерцыяльная адзінка вымярэння альбо IMU (інерцыяльныя вымяральныя блокі) з 6 ступенямі свабоды (DoF). Гэта дзякуючы 3-восевым датчыкам акселерометра і 3-восеваму гіраскопу, якія ён укараняе ў працу.
Гэты MPU6050 можа ведаць, як змешчаны які змяшчаецца аб'ект для выкарыстання ў прыкладанняў навігацыя, кутаметрыя, стабілізацыя, кіраванне жэстамі і г.д. Мабільныя тэлефоны звычайна ўключаюць гэты тып датчыкаў, каб, напрыклад, кіраваць пэўнымі функцыямі з дапамогай жэстаў, напрыклад, спыняцца, калі смартфон перавернуты, кіраваць транспартнымі сродкамі ў відэагульнях, паварочваючы мабільны, нібы руль і г.д.
Што такое акселерометр і гіраскоп?
Прыклады MEMS
Ну, пойдзем па частках. Першае, што трэба даведацца, што гэта за тыпы датчыкаў здольныя выяўляць паскарэнне і павароты, як можна зразумець з уласных імёнаў.
- Акселерометр: вымярае паскарэнне, гэта значыць змену хуткасці ў адзінку часу. Памятайце, што ў фізіцы змяненне хуткасці з часам (a = dV / dt) - гэта вызначэнне паскарэння. Згодна з другім законам Ньютана, мы маем таксама, што a = F / m, і гэта тое, што акселерометры выкарыстоўваюць для працы, гэта значыць яны выкарыстоўваюць параметры сілы і масы аб'екта. Каб гэта можна было ўкараніць у электроніцы, выкарыстоўваюцца метады MEMS (Micro Electro Mechanical Systems), якія адрозніваюцца ад звычайных метадаў вытворчасці электронных мікрасхем, бо механічныя дэталі ствараюцца ў MEMS. У гэтым выпадку ствараюцца дарожкі альбо элементы, здольныя вымяраць паскарэнні. Гэта азначае, што можна ўзяць шмат іншых адзінак, такіх як хуткасць (калі паскарэнне інтэгравана ў часе), калі яно зноў інтэгравана, мы маем зрушэнне і г.д. Гэта значыць, вельмі цікавыя параметры, каб ведаць становішча альбо выяўляць рух аб'екта.
- гіраскоп: таксама званы гіраскопам, гэта прыбор, які вымярае вуглавую хуткасць аб'екта, гэта значыць вуглавы зрух у адзінку часу альбо хуткасць кручэння цела вакол сваёй восі. У гэтым выпадку метады MEMS таксама выкарыстоўваюцца для вымярэння згаданай хуткасці з выкарыстаннем эфекту, вядомага як Карыёліс. Дзякуючы гэтаму можна вымераць вуглавую хуткасць альбо, інтэгруючы вуглавую хуткасць у залежнасць ад часу, можна атрымаць вуглавы зрух.
Модуль MPU6050
Цяпер, калі вы ведаеце, што такое акселерометр і гіраскоп, модуль MPU6050 Гэта электронная плата, якая аб'ядноўвае гэтыя два элементы, каб вы маглі вымераць гэтыя змены ў становішчы элемента і, такім чынам, мець магчымасць выклікаць рэакцыю. Напрыклад, што пры руху аб'екта загараецца святлодыёд альбо іншыя значна больш складаныя рэчы.
Як я ўжо сказаў, у яго 6 восяў свабоды, DoF, 3-восевы акселерометр паскарэння X, Y і Z і іншы 3-восевы гіраскоп для вымярэння вуглавой хуткасці. Вы павінны прыняць да ўвагі, каб не памыліцца ў тым, як вы размяшчаеце модуль і кірунку павароту для вымярэнняў, бо калі вы зробіце няправільны знак, гэта будзе трохі хаатычна. Паглядзіце на наступны малюнак, дзе ён паказвае кірунак восяў (аднак звярніце ўвагу, што на самой друкаванай плаце ён таксама надрукаваны з аднаго боку):
Улічваючы гэта і распіноўка, больш-менш у вас усё зразумела, каб пачаць выкарыстоўваць MPU6050. Як вы можаце бачыць на папярэднім малюнку, злучэнні даволі простыя, і гэта дазваляе сувязь I2C быць сумяшчальнай з большасцю мікракантролераў, у тым ліку з Arduino. Штыфты SCL і SDA маюць на плаце падцягвальны рэзістар для непасрэднага падлучэння да платы Arduino, таму вам не прыйдзецца турбавацца аб іх даданні самастойна.
Вы можаце выкарыстоўваць гэтыя два напрамкі на шыне I2C шпількі і ўказанні:
- AD0 = 1 альбо высокі (5v): для I0C-адраса 69x2.
- AD0 = 0 альбо нізкі (GND або Nc): для адраса 0x68 шыны I2C.
Памятаеце, што рабочае напружанне мадэлі складае 3v3, але, на шчасце, у яе ёсць убудаваны рэгулятар, таму яго можна без праблем адцягнуць ад 5v Arduino, і ён ператворыць яго ў 3.3v.
Дарэчы, маючы ўнутраны супраціў GND, калі гэты кантакт не падлучаны, адрас па змаўчанні гэта будзе 0x68, паколькі ён будзе злучаны па змаўчанні з зямлёй, інтэрпрэтуючы гэта як лагічны 0.
Інтэграцыя з Arduino
Вы можаце атрымаць дадатковая інфармацыя пра шыну I2C у гэтым артыкуле. Вы ўжо ведаеце, што ў залежнасці ад платы Arduino кантакты, якія выкарыстоўваюцца для аўтобуса, адрозніваюцца, але ў Arduino UNO з'яўляецца аналагавым штыфтам A4 і A5, для SDA (дадзеныя) і SCL (гадзіннік) адпаведна. Гэта адзіныя штыфты Arduino, а таксама 5v і GND для харчавання платы, якія вы павінны выкарыстоўваць. Такім чынам, злучэнне максімальна простае.
Для функцый MPU6050 вы можаце выкарыстоўваць бібліятэкі, пра якія можна даведацца больш па гэтай спасылцы I2C модуля і шыны МПУ6050.
Праграмаванне платы Arduino не занадта простае з MPU6050, таму яно не для пачаткоўцаў. Акрамя таго, ведаючы межы паскарэнняў альбо дыяпазоны вуглоў, вы можаце адкалібраваць, каб вызначыць, які менавіта рух або паскарэнне было. Аднак, каб вы мелі хаця б прыклад таго, як пракаментаваць яго выкарыстанне, вы можаце ўбачыць гэты код з Прыклад эскіза для вашай IDE Arduino які будзе чытаць значэнні, зафіксаваныя акселерометрам і гіраскопам:
// 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); }
Калі вы пачатковец і дрэнна ведаеце як праграмаваць з Arduino IDEВам гэта будзе цяжка зразумець, таму вы можаце бясплатна пракансультавацца з нашым кіраўніцтвам з уступным курсам па праграмаванні Arduino ...
Будзьце першым, каб каментаваць