- Шта су акцелерометар и жироскопски сензор?
- МПУ6050 Акцелерометар и модул жироскопског сензора
- Компоненте потребне
- Кружни дијаграм
- Објашњење програмирања
МПУ6050 је ИЦ 3-осе акцелерометар и 3-жироскоп комбиновани у једну јединицу. Такође садржи сензор температуре и ДЦМ за обављање сложених задатака. МПУ6050 се обично користи у изради Дроне- а и других удаљених робота попут самобалансирајућег робота. У овом пројекту ћемо изградити дигитални угломер користећи МПУ6050 и Ардуино. Овде се серво мотор користи за приказ угла на слици угломера. Осовина серво мотора причвршћена је иглом која ће се окретати на слици угломера како би указала на угао који је такође приказан на 16кЛЦД дисплеју. Пре него што улазимо у детаље, научимо о сензору жироскопа.
Шта су акцелерометар и жироскопски сензор?
За мерење убрзања користи се акцелерометар. Заправо осећа и статичко и динамичко убрзање. На пример, мобилни телефони користе сензор акцелерометра да би осетили да је мобилни у водоравном или усправном режиму. Раније смо користили акцелерометар са Ардуином за изградњу многих пројеката попут:
Жироскоп се користи за мерење угаоне брзине која помоћу земљине гравитације одређује оријентацију предмета у покрету. Угаона брзина је брзина промене угаоног положаја ротирајућег тела.
На пример, данашњи мобилни уређаји користе жироскопске сензоре за играње мобилних игара у складу са оријентацијом мобилног телефона. Такође, ВР слушалице користе жироскопски сензор за приказ у 360 оријентацији
Дакле, док акцелерометар може мерити линеарно убрзање, жироскоп може помоћи у проналажењу ротационог убрзања. Када користите оба сензора као засебне модуле, постаје тешко пронаћи оријентацију, положај и брзину. Али комбинацијом два сензора ради као јединица за инерцијално мерење (ИМУ). Дакле, у модулу МПУ6050, акцелерометар и жироскоп су присутни на једној ПЦБ како би пронашли оријентацију, положај и брзину.
Апликације:
- Користи се у дроновима за контролу смера
- Самобалансирајући роботи
- Роботска контрола руке
- Сензор нагиба
- Користи се у мобилним телефонима, конзолама за видео игре
- Хуманоидни роботи
- Користи се у авионима, аутомобилској индустрији итд.
МПУ6050 Акцелерометар и модул жироскопског сензора
МПУ6050 је микроелектромеханички систем (МЕМС) који се састоји од 3-осног акцелерометра и 3-осног жироскопа у њему. Такође има сензор температуре.
Може мерити:
- Убрзање
- Брзина
- Оријентација
- премештај
- Температура
Овај модул такође има (ДМП) дигитални процесор покрета који је довољно моћан да изврши сложени прорачун и тако ослободи рад микроконтролера.
Модул такође има два помоћна пина који се могу користити за повезивање спољних ИИЦ модула попут магнетометра. Пошто се ИИЦ адреса модула може конфигурисати, више од једног МПУ6050 сензора може се повезати са микроконтролером помоћу АД0 пина.
Карактеристике и спецификације:
- Напајање: 3-5В
- Комуникација: И2Ц протокол
- Уграђени 16-битни АДЦ пружа високу тачност
- Уграђени ДМП пружа велику рачунску снагу
- Може се користити за повезивање са другим ИИЦ уређајима попут магнетометра
- Подесива ИИЦ адреса
- Уграђени сензор температуре
Пиноут за МПУ6050:
Пин број | Пин Наме | Користите |
1 | Вцц | Обезбеђује напајање модула, може бити од + 3В до + 5В. Типично се користи + 5В |
2 | Приземље | Повезано са земљом система |
3 | Серијски сат (СЦЛ) | Користи се за пружање импулса такта за И2Ц комуникацију |
4 | Серијски подаци (СДА) | Користи се за пренос података путем И2Ц комуникације |
5 | Помоћни серијски подаци (КСДА) | Може се користити за повезивање осталих И2Ц модула са МПУ6050. Није обавезно |
6 | Помоћни серијски сат (КСЦЛ) | Може се користити за повезивање осталих И2Ц модула са МПУ6050. Није обавезно |
7 | АД0 | Ако се више МЦУ6050 користи са једним МЦУ, онда се овај пин може користити за варирање адресе |
8 | Прекид (ИНТ) | Прекидни пин означава да су подаци доступни МЦУ за читање. |
Раније смо користили МПУ6050 са Ардуином за израду самобалансирајућег робота и Инцлинометра.
Компоненте потребне
- Ардуино УНО
- МПУ6050 модул за жироскоп
- ЛЦД екран од 16к2
- Потенциометар 10к
- СГ90-Серво мотор
- Кутомер Слика
Кружни дијаграм
Дијаграм кола за овај ДИИ Ардуино кутомер дат је у наставку:
Кружне везе између Ардуино УНО и МПУ6050:
МПУ6050 |
Ардуино УНО |
ВЦЦ |
+ 5В |
ГНД |
ГНД |
СЦЛ |
А5 |
СДА |
А4 |
Кружне везе између Ардуино УНО и серво мотора:
Серво мотор |
Ардуино УНО |
ЦРВЕНА (ВЦЦ) |
+ 5В |
НАРАНЧАСТА (ПВМ) |
9 |
СМЕЂА (ГНД) |
ГНД |
Кружне везе између Ардуино УНО и ЛЦД-а 16к2:
ЛЦД |
Ардуино Нано |
ВСС |
ГНД |
ВДД |
+ 5В |
В0 |
На ПИН центра за потенциометар За контролу контраста ЛЦД-а |
РС |
2 |
РВ |
ГНД |
Е. |
3 |
Д4 |
4 |
Д5 |
5 |
Д6 |
6 |
Д7 |
7 |
А. |
+ 5В |
К. |
ГНД |
Објашњење програмирања
Као и обично, комплетни програм са демонстрацијским видео записом дат је на крају овог водича.
Овде је серво мотор повезан са Ардуином и његова осовина се пројектује на слику угломера која показује угао нагнутог МПУ6050. Програмирање овог упутства је једноставно. Да видимо детаљно.
Прво укључите све потребне библиотеке - библиотеку Серво Мотор за употребу серва, ЛЦД библиотеку за употребу ЛЦД-а и библиотеку жица за употребу И2Ц комуникације.
МПУ6050 користи И2Ц комуникацију и стога мора бити повезан само на И2Ц пинове Ардуина. Дакле, Вире.х библиотека се користи за успостављање комуникације између Ардуино УНО и МПУ6050. Претходно смо повезали МПУ6050 са Ардуином и приказали вредности к, и, з координата на ЛЦД-у од 16к2.
#инцлуде
Следеће дефинишите пинове ЛЦД екрана РС, Е, Д4, Д5, Д6, Д7 који су повезани са Ардуино УНО.
ЛикуидЦристал ЛЦД (2,3,4,5,6,7);
Следећа је дефинисана И2Ц адреса МПУ6050.
цонст инт МПУ_аддр = 0к68;
Затим иницијализујте објекат мисерво за употребу класе Серво и три променљиве за чување вредности Кс, И и З осе.
Серво мисерво; инт16_т оса_Кс, оса_И, оса_З;
Следећа минимална и максимална вредност су постављене на 265 и 402 за мерење угла од 0 до 360.
инт минВал = 265; инт макВал = 402;
воид сетуп ():
У воид сетуп функцији прва И2Ц комуникација је започета и пренос је започео са МПУ6050 са адресом 0к68.
Вире.бегин (); Вире.бегинТрансмиссион (МПУ_аддр);
Ставите МПУ6050 у режим спавања тако што ћете написати 0к6Б, а затим га пробудите тако што ћете написати 0
Вире.врите (0к6Б); Вире.врите (0);
Након активирања МПУ6050, прекините пренос
Вире.ендТрансмиссион (тачно);
Овде је ПВМ пин серво мотора повезан са Ардуино УНО пин 9.
мисерво.аттацх (9);
Чим укључимо струјни круг, ЛЦД приказује поруку добродошлице и брише је након 3 секунде
лцд.бегин (16,2); // Поставља ЛЦД у режиму 16Кс2 лцд.принт („ЦИРЦУИТ ДИГЕСТ“); кашњење (1000); лцд.цлеар (); лцд.сетЦурсор (0,0); лцд.принт ("Ардуино"); лцд.сетЦурсор (0,1); лцд.принт ("МПУ6050"); кашњење (3000); лцд.цлеар ();
воид лооп ():
Поново, И2Ц комуникација започиње са МПУ6050.
Вире.бегинТрансмиссион (МПУ_аддр);
Затим почните са регистром 0к3Б (АЦЦЕЛ_КСОУТ_Х)
Вире.врите (0к3Б);
Сада се процес поново покреће постављеним завршетком преноса као нетачним, али веза је активна.
Вире.ендТрансмиссион (фалсе);
Након тога сада затражите податке из 14 регистара.
Вире.рекуестФром (МПУ_аддр, 14, тачно);
Сада се поштују вредности регистра оса (к, и, з) и чувају у променљивим оси_Кс, оси_И, осе_З.
акис_Кс = Вире.реад () << 8-Вире.реад (); оси_И = Вире.реад () << 8-Вире.реад (); акис_З = Вире.реад () << 8-Вире.реад ();
Затим мапирајте те вредности од 265 до 402 као -90 до 90. То се ради за све три осе.
инт кАнг = мапа (оса_Кс, минВал, макВал, -90,90); инт иАнг = мапа (ос_И, минВал, макВал, -90,90); инт зАнг = мапа (оса_З, минВал, макВал, -90,90);
Формула за израчунавање к вредности у степену (0 до 360) дата је у наставку. Овде претварамо само к, јер се ротација серво мотора заснива на кретању к вредности.
к = РАД_ТО_ДЕГ * (атан2 (-иАнг, -зАнг) + ПИ);
Вредност Кс угла, од 0 до 360 °, претвара се у 0 до 180.
инт пос = мапа (к, 0,180,0,180);
Затим напишите вредност угла да бисте окретали серво на слици угломера и одштампајте те вредности на ЛЦД екрану 16к2.
мисерво.врите (пос); лцд.сетЦурсор (0,0); лцд.принт ("Угао"); лцд.сетЦурсор (0,1); лцд.принт (к); кашњење (500); лцд.цлеар ();
Дакле, овако се МПУ6050 са Ардуином може користити за мерење угла. Комплетни код и видео за овај пројекат дати су у наставку.