Съдържание:

Измерване на ъгъла с помощта на жироскоп, акселерометър и Arduino: 5 стъпки
Измерване на ъгъла с помощта на жироскоп, акселерометър и Arduino: 5 стъпки

Видео: Измерване на ъгъла с помощта на жироскоп, акселерометър и Arduino: 5 стъпки

Видео: Измерване на ъгъла с помощта на жироскоп, акселерометър и Arduino: 5 стъпки
Видео: BP DOCTOR PRO Smart Watch Blood Pressure Monitor: Is It as Accurate as a Traditional BP Monitor? 2024, Ноември
Anonim
Измерване на ъгъла с помощта на жироскоп, акселерометър и Arduino
Измерване на ъгъла с помощта на жироскоп, акселерометър и Arduino

Устройството е груб прототип на това, което в крайна сметка ще се превърне в робот за самобалансиране, това е втората част на дупката (прочетете акселерометъра и контролирайте мотора до самобаланс). Първата част само с жироскопа може да бъде намерена тук. В тази инструкция ще измерим ъгъла с помощта на жироскоп и акселерометър и използвайки техника за обединяване на двата сензора, за да получим гладък сигнал. Техниката се нарича "допълващ филтър". Предишна

Стъпка 1: Какво ще ни трябва:

Какво ще ни трябва
Какво ще ни трябва
Какво ще ни трябва
Какво ще ни трябва
Какво ще ни трябва
Какво ще ни трябва
Какво ще ни трябва
Какво ще ни трябва

Някои части могат да бъдат заменени и някои модификации в кода трябва да бъдат направени, за да отговарят на вашия хардуер. В този проект ще използваме:- Breadboard- Микроконтролер, използвах Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (за акселерометъра)- Nunchuck Wii адаптер за Arduino

Стъпка 2: Изграждане …

Сграда…
Сграда…
Сграда…
Сграда…
Сграда…
Сграда…

Веригата се състои от жироскоп, свързан директно към порт 0 на вашия arduino и nunchuck wii свързване към порта I2C. Сглобяване на жироскопа: 1. - включете жироскопа към платката2. - проводник винаги:- Vo пин от жироскоп, свързан към аналогов порт 0 на arduino (светло оранжев проводник)- G щифт от жироскоп, свързан към земята (бял проводник)- V+ щифт от жироскоп, свързан към Vdd (3.3V) (оранжев проводник) Сглобяване акселерометър: 1. - включете адаптера към nunchuck2. - включете nunchuck към arduino с помощта на адаптера3. - поставете сензора за ускорение като снимката по -горе

Стъпка 3: Няколко допълнителна информация, преди да продължим

Малко допълнителна информация, преди да продължим
Малко допълнителна информация, преди да продължим
Малко допълнителна информация, преди да продължим
Малко допълнителна информация, преди да продължим
Малко допълнителна информация, преди да продължим
Малко допълнителна информация, преди да продължим

От двата сензора можем да измерим ъгъла, но използвайки две различни техники. За да измерим ъгъла с помощта на жироскопа, трябва да интегрираме сигнала. Но защо трябва да направим това? Тъй като жироскопът ни дава ъгловата скорост, така че прост начин да получите ъгъла е ъгловата скорост да се умножи по времето [ъгъл = ъгъл + w * dt] За да се измери ъгълът с помощта на акселерометър, ние трябва да усетим гравитацията във всеки ос на акселерометъра, какво означава това, проекцията на ускорението на гравитацията във всяка посока на сензора ни дава представа за ъгъла. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Така че защо ще използваме два сензора вместо един? За да се възползвате от двете свойства на сензора. Ако погледнете графиката, гироскопичните данни непрекъснато се увеличават, това се нарича дрейф и данните за акселерометъра се променят много за малко време. И как да обединим двата сигнала? Ще използваме техника, наречена допълващ филтър. Не знам точната теория зад това, но работи добре. Има известна информация в интернет, просто я потърсете в Google, ако имате нужда от повече информация. Тази връзка съдържа много информация и може да бъде полезна.filtered_angle = HPF*(filtered_angle + w*dt) + LPF*(angle_accel); където HPF + LPF = 1 Стойностите на HPF и LPF могат да бъдат намерени на тази връзка във файла filter.pdf. Благодаря ви, момчета от "The DIY Segway". Само за целта на теста ще зададем тези стойности по този начин, HPF = 0.98 и LPF = 0.02.

Стъпка 4: Код:

Кодът е адаптация от код, който използвах в друг проект. Вероятно има някои неизползвани променливи. Използвах библиотека, за да прочета данните за nunchuck от https://todbot.com/blog/. Благодаря ти Тод Е. Кърт. Коментарите към кода са на португалски, веднага щом имам свободно време, ще го преведа. Изходният код през серийния ред някои числа с този модел: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Така че можете да запишете тези стойности в сериен терминал и да начертаете графика или да използвате ъгъла за други неща. с цип Просто разархивирайте, отворете и го качете на вашия arduino.

Стъпка 5: Тестване и заключение

Тестване и заключение
Тестване и заключение
Тестване и заключение
Тестване и заключение

За да тествам системата, запазих данните с помощта на програма, наречена Termite, след това импортирайте тези данни в excel и начертайте графиката, за да видите колко добър е филтърът ми. Резултатите са изумителни. Разбира се, можете да използвате сигнала за задвижване на двигател или други неща. Всички коментари, всякакви съмнения, липсваща информация, просто ми кажете и ще я коригирам. Моля, ако ви харесва, оценете. Благодаря на всички.

Препоръчано: