Сензор за забрзување и положба со 3 оски со Arduino
Станува збор за чип сензорот MPU-6050 инсталиран на модулот GY-521. Користејќи го овој жироскоп со 3 оски и сензорот за забрзување со 3 оски, може да се препознаат 6 степени на слобода (DOF = "Степени на слобода") истовремено. Сензорот исто така може да ја измери температурата на околината.

Основни карактеристики на GY-521 (според производителот)
- Чип: MPU-6050 (од производителот InvenSense)
- 16-битен АД конвертер
- Опсег на акцелерометар: ± 2, ± 4, ± 8, ± 16g
- Опсег на жироскоп: ± 250 °, 500 °, 1000 °, 2000 °/s
- Опсег на напон: 3.3V - 5V (регулатор на напон = низок излезен LDO на модулот)
Внатрешна структура на GY-521
Модулот има I busC-магистрала преку која микроконтролерот - како Arduino - може лесно да се поврзе. Можно е 3,3V да не е доволно за правилно работење на I busC автобусот, затоа - ако е можно - 5V секогаш треба да се користат како напојување.
Модулот има отпорници за влечење за I²C магистралата, кои понекогаш можат да бидат 10kΩ, а понекогаш и 2,2KΩ. Последната вредност е прилично мала, што може да доведе до проблеми доколку се користат други сензорски модули. Тука треба да помогне дополнителен, надворешен отпорник на влечење.
Некои од модулите GY-521 имаат погрешен (или лош) кондензатор, што може да доведе до голема бучава во мерењата.
Сл.: Отпорници за повлекување 2.2KΩ на модулот GY-521
Сензорот има и единица DMP („Дигитален процесор за движење“), која може да се програмира со фирмвер и овозможува посложени пресметки да се вршат директно на чипот на сензорот. Очигледно, сепак, InvenSense не објавува доволно спецификации за ова, така што овие можности може да се отворат преку обратно инженерство.
Сл.: Дијаграм на внатрешно коло на модулот GY-521
Поврзувања на GY-521
| VCC | Напојување (3.3V до 5V) (внатрешен регулатор на напон) | 3.3V или 5V |
| ГНД | Маса/земја | ГНД |
| SCL | Сериски часовник (I²C) | А5 |
| СДА | Сериски податоци (I²C) | А4 |
| XDA | Помошни податоци (= главни сериски податоци на I²C, за поврзување на модулот со надворешни модули) | (не се користи тука) |
| XCL | Помошен часовник (= главен сериски часовник на I²C, за поврзување на модулот со надворешни модули) | (не се користи тука) |
| АД0 | Промена на адресата на I²C: НИСКО: 0x68 ВИСОК: 0x69 | ГНД |
| ИНТ | Прекинете дигитален излез (опционална врска за поврзување на неколку модули во серија) | (не се користи тука) |
Користени компоненти
- Основни алатки и ресурси
- Arduino UNO (или компатибилна плоча)
- Модул GY-521
- Приклучен кабел („скокачки кабел“)
- Табла за леб
Изборна библиотека на софтвер: I2Cdevlib и MPU6050 код
градба
Пр. 1: Излез на необработените податоци во сериската конзола
Следната скица го контролира модулот GY-521, ги чита сите достапни податоци во фиксен временски интервал (овде: 1s) и потоа ги емитува на сериската конзола. Лесно се читаат овие сурови податоци. Само „режимот на мирување“ треба да се деактивира и сега може да се прочитаат сензорните вредности на жироскопот, сензорот за забрзување и сензорот за температура. На точката Wireица. БарањеОд (MPU6050_ADRESS, 7 * 2, точно) се читаат 14 бајти од регистарот. Ова е затоа што сите 7 достапни измерени вредности на сензорот имаат 2 бајти (= 16 бита).
скеч
Резултат
Во Arduino IDE од верзијата 1.6.6, покрај сериската конзола е достапен и таканаречениот сериски плотер. За да може да се користи ова, вредностите се одделуваат со празни места (или јазичиња) и излегуваат со Serial.print () и завршуваат со прекин на линија, на пр. Serial.println (). Така графички може да се следат излезните вредности:
Сл.: Излез на необработените податоци во серискиот плотер
Пр. 3: Измерете ги аглите со MPU-6050
Откако ќе ги прочитате податоците за сензорот, следнава скица го пресметува точниот агол на сензорот и го исфрла ова за возврат кон сериската конзола.
скеч
Резултат
Пр. 2: Графички излез во „Обработка“
Со цел подобро да се претстави функционалноста на сензорот, утврдените вредности сега се пренесуваат во Обработка и се визуелизираат таму во реално време. Скиците се од веб-страницата „Geek Mom Projects“
Сл.: Излез на податоците во сериската конзола Видео: Демонстрација во живо при обработка
Библиотека „Adafruit_MPU6050“
Ако користите библиотека Adafruit_MPU6050, можете појасно да пристапите до вредностите на MPU6050 и исто така можете многу лесно да го користите режимот на мирување на модулот. Ова може да биде од особен интерес за проекти што работат со батерии, каде што треба да се заштеди електрична енергија. Како што е прикажано на следниот пример, вредностите на MPU6050 првично се читаат како референца и се испраќаат до серискиот плотер. Вториот режим е режим на циклус, кој мери во одредени интервали и со тоа резултира во нешто погруба резолуција на податоците. Третиот режим го става модулот во режим на мирување, т.е. не се прават повеќе мерења. Сепак, последните податоци за мерењето сè уште можат да се читаат од регистрите на модулот.
Сл.: Излез на необработените податоци во серискиот плотер
Библиотека „MPU6050_light“
Друга корисна библиотека е MPU6050_light, со која можете на пр. Да ги прочитате соседните агли многу лесно:
Сл.: Излез на податоците од аголот во сериската конзола