DOI 10.3бб22/^Ти.2021.17.2.010 УДК 621.391.3
УСТРОЙСТВО УПРАВЛЕНИЯ МОДУЛЯМИ MPU6050 ПО ШИНЕ ^С НА ОСНОВЕ МИКРОКОНТРОЛЛЕРА
А.Б. Буслаев1, Н.Н. Кошелева2, С.С. Белокопытов1
военный учебно-научный центр Военно-воздушных сил «Военно-воздушная академия им. профессора Н.Е. Жуковского и Ю.А. Гагарина», г. Воронеж, Россия
2Воронежский государственный технический университет, г. Воронеж, Россия
Аннотация: рассматривается модуль GY-521, на котором установлена микросхема МРиб050, объединяющая в одном корпусе акселерометр, гироскоп и температурный датчик. Такие датчики изготовлены на основе микромеханических систем (МЭМС), основным преимуществом которых является малый размер, низкое энергопотребление и небольшая стоимость. Одновременное использование акселерометра и гироскопа позволяет определить изменение движения тела в трехмерном пространстве. Рассмотрены основные характеристики используемого модуля. Управление микросхемы осуществляется с помощью архитектуры интерфейса 12С «ведущий-ведомый». В работе ведомым является МРиб050, а ведущим (производит запрос на чтение или запись данных) является микроконтроллер, имеющий в своем составе аппаратную шину передачи данных 12С. Показана возможная программная реализация алгоритма подключения нескольких ведомых устройств (шести микросхем МРШ050). Представлена принципиальная схема подключения к одному порту ввода-вывода микроконтроллера. Рассмотрен алгоритм работы микроконтроллера с подключенными микросхемами (шестью) МРШ050. Приведены пример программы (с использованием языка ассемблер) инициализации связи с МРШ050, а также программа считывания данных для снятия последних измерений акселерометра, гироскопа, температурного датчика. Применение нескольких модулей с одновременным считыванием с них информации позволяет осуществлять контроль систем управления полетом, имеющих совокупность нескольких управляющих поверхностей и устройств
Ключевые слова: акселерометр, гироскоп, МЭМС, модуль GY-521, микросхема МРШ050
Введение
В современном мире при управлении движением объекта (автомобили, авиация, ракеты), в системах навигации, в машиностроении и измерительной техники нашли широкое применение акселерометры и гироскопы. Такие датчики могут быть изготовлены на основе микромеханических систем (МЭМС), основным преимуществом которых является малый размер, низкое энергопотребление и небольшая стоимость. В работе будем использовать один из самых распространенных подобных датчиков - модуль GY-521 с микросхемой МРШ050. В его состав входит акселерометр (используется для измерения линейных ускорений) [1], гироскоп (используется для измерения угловых скоростей) [1] и датчик температуры. Использование акселерометра и гироскопа в одном приборе дает возможность контролировать изменение движения тела в трехмерном пространстве [1].
Основные характеристики модуля GY-512 с микросхемой MPU6050
Внешний вид используемого в работе
© Буслаев А.Б., Кошелева Н.Н., Белокопытов С.С., 2021
модуля GY-521 с микросхемой MPU6050 изображен на рис. 1.
Рассмотрим основные выводы модуля GY-521: VCC - напряжение питания; GND - земля; SCL - линия тактового сигнала I2C; SDA - линия данных I2C; XDA - линия данных I2C при работе в режиме мастера, для подключения другого датчика; XCL - линия тактового сигнала I2C при работе в режиме мастера, для подключения другого датчика; AD0 - нулевой бит адреса устройства; INT - выходной сигнал MPU6050 [2].
Рис. 1. Внешний вид модуля GY-521 с микросхемой MPU6050
Рассмотрим основные характеристики модуля GY-521:
• Небольшой корпус (4x4x0,9 мм);
• Трехосный МЭМС гироскоп (имеет три 16-разрядных АЦП для оцифровки данных на выходе);
• Трехосный акселерометр (имеет три 16-разрядных АЦП для оцифровки данных на выходе);
• Датчик температуры с цифровым выходом;
• Рабочее напряжение питания микросхемы изменяется от 2,375 до 3,46 В. Однако на плате установлен стабилизатор на 3,3 В, поэтому можно подавать напряжение питания 5 В;
• Буфер FIFO размером 1024 байта, который позволяет снизить энергопотребление системы, благодаря считыванию данных с датчиков в пакетах;
• Пользователь имеет возможность использовать программируемые фильтры для гироскопа, акселерометра и датчика температуры;
• Для связи с регистрами предусмотрен интерфейс I2C, работающий на частоте до 400 кГц [1].
Устройство управления модулями на основе микроконтроллера
Управление микросхемой MPU6050 возможно производить с использованием интерфейса I2C, который на плате GY-521 уже имеется. Рассматривая архитектуру интерфейса I2C, которая осуществляется по принципу «ве-
дущий-ведомый», определим ведомым устройством микросхему MPU6050, а ведущим (производит запрос на чтение или запись данных) микроконтроллер.
Ведомое устройство должно иметь 7-битный адрес, который на данной линии должен быть уникальным и определяется логическим уровнем на выводе AD0 (в нашем случае это 0b1101000 и 0b1101001). Следовательно, передача данных с таких модулей на ведущее устройство по шине I2C может осуществляться только с двух таких устройств (с устройства, имеющего адрес 0b1101000, и устройства с адресом 0b1101001) [1].
При практическом применении микросхем MPU6050 часто возникает проблема использования большого количества датчиков (например, шести).
Применение программного протокола передачи данных I2C в зависимости от количества портов ввода-вывода у микроконтроллера, позволяет реализовать подключение и считывание данных с большого числа модулей.
Рассмотрим возможную программную реализацию алгоритма подключения нескольких ведомых устройств (шести микросхем MPU6050).
На рис. 2 представлена принципиальная схема подключения шести микросхем MPU6050 к одному порту ввода-вывода микроконтроллера, управление и считывание информации возможно при использовании программного протокола передачи данных I2C.
Рис. 2. Принципиальная схема подключения шести микросхем МРШ050 к микроконтроллеру с 8-разрядными портами ввода-вывода
м икр оконтр оллера
программного кода с указанием начального адреса
портов ввода-вывода микроконтроллера
Определение регистров общего назначения (адресного регистра и регистра данных)
MPU-6050 по адресам ОЫ1010000 иОЫ 1010010
выводов для об мен а данными
с N - ой парой датчиков _MPU-6050_
акселер ометра (по адресам ОхЗВ, ОхЗС, 0x3D, ОхЗЕ, 0x3F, 0x40) с MPU-6050 по адресу 0Ы1010001
акселерометра в регистры (R0, Rl, R2, R3, R4, R5)
(по адресам 0x43, 0x44,0x45, 0x46,0x47, 0x48) с MPU-6050 по адресу 0Ы1010001
Сохранение данных гироскоп: регистры общего назначение (R6, R7, R8, R9, RIO, Rl 1)
.def DATA = «РОН от R16 до R25»-.def ADRESS = «РОН от R16 до R25»-
\ В регистр MPU-6050 по адресу 0x6В записать 0x00. | 0 — вывод ADO MPU-6050 подключен на корпус; ! 1- вывод ADO MPU-6050 подключен на VC С;
.equ pSCL = «номер разряда используемого ПВВ под л
SCL»>
.equ pSDA = «номер разряда используемого ПВВ под лии - N — номер пары датчиков MPU-6050
0 — вывод ADO MPU-6050 подключен на корпус;
Считывание данных с датчика температуры (по адресам 0x41, 0x42) с MPU-6050 по адресу 0Ы1010001
Сохранение данных датчика температуры в регистры общего назначения _(1112,1113)_
Вывод данных акселерометра, гироскопа и датчика температуры на систему индикации
7
Считывание данных акселерометра (по адресам ОхЗВ, ОхЗС, 0x3D, ОхЗЕ, 0x3F, 0x40) с MPU-6050 по адресу Ш1010011
Сохранение данных акселерометра в регистры общего назначения (R.0, Rl, R2, R3, R4, R5)
Считывание данных гироскопа (по адресам 0x43, 0x44, 0x45, 0x46, 0x47, 0x48) с MPU-6050 по адресу 0Ы1010011
Сохранение данных гироскопа в регистры общего назначения iR6.R7.R8.R9.R10.Rll)
Считывание данных с датчика температуры (по адресам 0x41. 0x42) с MPU-6050 по адресу 0ЫЮЮ011
Сохранение данных датчика температуры в регистры общего назначения (R12, R13)
1
Вывод данных гироскопа температуры индик дсселерометра, и датчика на систему ации
Рис. 3. А
Алгоритм работы микроконтроллера с подключенными микросхемами MPU6050 представлен на рис. 3.
Пример программы инициализации связи с MPU-6050 (DD1.1) InizMPU_0 представлен в табл. 1. При инициализации связи с MPU-6050 (DD1.2) в регистр data записывается 0b11010010 (строчка 8). Описание вызываемых подпрограмм, таких как start, write, stop и rt_ приведены в [3, 4]. Для инициализации связи с MPU-6050 (DD2.1, DD2.2, DD3.1 и DD3.2) необходимо в строчках 2 и 3 изменить номер вывода микроконтроллера, соответственно.
Таблица 1
Инициализация MPU6050 (DD1.1) [3]
№ Текст Комментарий
п/п программы
1. InizMPU 0:
2. cbi porta, 0 ; Установка условие старта на линиях SDA и
3. cbi porta, 1 ; SCL первой пары датчиков
4. ldi r16, 100 ; Определение количества попыток
5. loop_100: ; прописать адрес выбранной микросхемы (100 попыток).
Продолжение табл. 1
6. push data
7. rcall start
8. ldi data, 0b11010000 ; Определение направления передачи данных и адреса выбранной микросхемы (DD1.1)
9. rcall write
10. brcs rt ; Проверка сигнала подтверждения АСК на ошибку, если флаг С=1, то вызываем подпрограмму г!
11. mov data, 0x6B ; Установка адреса регистра управления питанием.
12. rcall write
13. brcs rt
14. mov data, 0x00
15. rcall write ; Запись в регистр 0x6В числа 0x00
16. brcs rt ; (сброс начальных настроек)
17. rcall stop ; Установка условия стоп на линиях SDA и SCL.
18. brcs rt
19. ret
Программа считывания данных с МРи-6050 ^1.1) по адресам 0x3В, 0х3С, 0x3D, 0х3Е, 0x3F и 0x40 для снятия последних измерений акселерометра InizMPU_Rd представлена в табл. 2. Результаты измерения сохраняются в регистрах г0, г1, г2, г3, г4 и г5.
Таблица 2 Считывание данных акселерометра с
микросхемы M [PU6050 (DD1.1) [3]
№ п/п Текст программы Комментарий
1. InizMPU Rd:
2. cbi porta, 0 ; Установка условие старта на линиях SDA
3. cbi porta, 1 ; SCL первой пары датчиков MPU-6050.
4. ldi r16, 100 ; Определение количества попыток
5. loop_100: ; прописать адрес выбранного MPU-6050
6. push data
7. rcall start
8. ldi data, 0b11010000 ; Определение направления передачи данных (запись) и адреса выбранного MPU-6050 (DD1.1)
9. rcall write
10. brcs rt ; Проверка сигнала подтверждения ACK на ошибку, если флаг С=1, то вызываем подпрограмму rt .
11. mov data, 0x3B ; Установка начального адреса для считывания
12. rcall write ; данных акселерометра.
13. brcs rt
14. rcall start
15. ldi data, 0b11010001 ; Определение направления передачи данных (чтение) и адреса выбранного MPU-6050 (DD1.1)
16. rcall write
17. brcs rt
18. clc ; Очистка бита переноса ACK
19. rcall read ; Запись данных с адреса 0x3B в регистр данных data.
20. mov r0, data ; Перенос данных в регистр r0 (старший байт корд. X)
21. rcall read ; Запись данных с адреса 0x3C в регистр данных data.
22. mov r1, data ; Перенос данных в регистр r1 (младший байт корд. X)
23. rcall read ; Запись данных с адреса 0x3D в регистр данных data.
24. mov r2, data ; Перенос данных в регистр r2 (старший байт корд. Y)
25. rcall read ; Запись данных с адреса 0x3E в регистр данных data.
26. mov r3, data ; Перенос данных в регистр r3 (младший байт корд. Y)
27. rcall read ; Запись данных с адреса 0x3F в регистр данных data.
28. mov r4, data ; Перенос данных в регистр r4 (старший байт корд. Z)
29. rcall read ; Запись данных с адреса 0x40 в регистр данных data.
30. mov r5, data ; Перенос данных в регистр r5 (младший байт корд. Z)
31. rcall stop ; Установка условия стоп на линиях SDA и SCL.
32. brcs rt
33. ret
Для считывания последних измерений гироскопа необходимо строчке 11 (табл. 2) указать начальный адрес 0x43. Все остальное остается без изменений. Для считывания последних измерений с датчика температуры необходимо в строчке 11 (табл. 2) указать начальный адрес 0x41, а строчки с 23 по 30 включительно удалить. Данные гироскопа необходимо сохранить в регистрах r6,r7, r8,r9,r10, г11 (строчки 20, 22, 24, 26, 28, 30 в табл. 2, соответственно). Данные датчика температуры в регистрах r12 и r13 (строчки 20 и 22 в табл. 2, соответственно).
Заключение
С помощью применения предложенного программного управления возможна реализация управления несколькими модулями GY-521. Этот модуль содержит одновременно акселерометр и гироскоп, что позволяет осуществлять контроль над изменением тела в трехмерном пространстве.
Применение нескольких модулей с одновременным считыванием с них информации позволяет осуществлять контроль систем управления полетом, имеющих совокупность нескольких управляющих поверхностей и устройств.
Литература
1. Акселерометр и гироскоп MPU6050: первое включение на STM32 и исследование показаний в статике / В.А. Жмудь, К.А. Кузнецов, Н.О. Кондратьев, В.Г. Тру-бин, М.В. Трубин // Автоматика и программная инженерия. 2018. № 3(25). С. 9 - 22.
2. Спецификация: MPU-6000 and MPU-6050 Product Specification Revision 3.4 InvenSense: URL: https://www.invensense.com/wpcontent/uploads/2015/02/MP U-6000-Datasheet1.pdf
3. Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. 2-е изд., испр. СПб.: БХВ-Петербург, 2011. С. 322-327.
4. Иванов Ю.И., Югай В.Я. Микропроцессорные устройства систем управления. Таганрог: ТРТУ, 2005. 189 с.
Поступила 10.03.2021; принята к публикации 15.04.2021 Информация об авторах
Буслаев Алексей Борисович - канд. техн. наук, доцент, Военный учебно-научный центр Военно-воздушных сил «Военно-воздушная академия им. профессора Н.Е. Жуковского и Ю.А. Гагарина» (398600, Россия, г. Воронеж, ул. Старых Большевиков, 54a), e-mail: bus-alex@yandex.ru
Кошелева Наталья Николаевна - канд. техн. наук, доцент, Воронежский государственный технический университет (394006, г. Воронеж, ул. 20-летия Октября, 84), e-mail: vsyu-ppe@mail.ru
Белокопытов Сергей Сергеевич - начальник отделения, Военный учебно-научный центр Военно-воздушных сил «Военно-воздушная академия им. профессора Н.Е. Жуковского и Ю.А. Гагарина» (398600, Россия, г. Воронеж, ул. Старых Большевиков, 54a), e-mail: roman-gunko@mail.ru
MPU6050 MODULE CONTROL UNIT ON THE I2C BUS BASED ON A MICROCONTROLLER
A.B. Buslaev1, N.N. Kosheleva2, S.S. Belokopytov1
Military Scientific Educational Center of Military-Air Forces "N.E. Zhukovsky and Ju.A. Gagarin
Military-Air Academy", Voronezh, Russia 2Voronezh State Technical University, Voronezh, Russia
Abstract: the paper considers the GY-521 module, which is equipped with the MPU6050 chip, which combines an ac-celerometer, a gyroscope and a temperature sensor in one housing. Such sensors are made on the basis of micromechanical systems (MEMS), the main advantages of which are small size, low power consumption and low cost. The simultaneous use of an accelerometer and a gyroscope allows you to determine the change in the movement of a body in three-dimensional space. We considered the main characteristics of the module used. The control of the chip is carried out using the architecture of the I2C interface "master-slave". In operation, the MPU6050 is the host, and the master (makes a request to read or write data) is a microcontroller that has an I2C hardware data bus. We show a possible software implementation of the algorithm for connecting multiple slave devices (six MPU6050 chips). We present a schematic diagram of the connection to a single I/O port of the microcontroller. We consider the algorithm of operation of the microcontroller with connected chips (six) MPU6050. We give an example of a program (using the assembly language) for initializing communication with the MPU6050, as well as a program for reading data for taking the latest measurements of the accelerometer, gyroscope, and temperature sensor. The use of several modules with simultaneous reading of information from them allows you to control flight control systems that have a set of several control surfaces and devices
Key words: accelerometer, gyroscope, MEMS, module GY-521, chip MPU6050
References
1. Zhmud' V.A., Kuznetsov K.A., Kondrat'ev N.O., Trubin V.G., Trubin M.V. "Accelerometer and gyroscope MPU6050: the first activation on STM32 and study of readings in statistics", Automation and Software Engineering (Avtomatika i programmnaya inzheneriya), 2018, no. 3(25), pp. 9-22.
2. Specification: MPU-6000 and MPU-6050 Product Specification Revision 3.4 InvenSense, available at: https://www.invensense.com/wpcontent/uploads/2015/02/MPU-6000-Datasheet1.pdf
3. Revich Yu.V. "Practical programming of Atmel AVR microcontrollers in assembly language" ("Prakticheskoe programmi-rovanie mikrokontrollerov Atmel AVR na yazyke assemblera"), St. Petersburg, BHV-Peterburg, 2011, pp. 322-327.
4. Ivanov Yu.I., Yugay V.Ya. "Microprocessor control systems" ("Mikroprotsessornye ustroystva sistem upravleniya"), Taganrog, TRTU, 2005, 189 p.
Submitted 10.03.2021; revised 15.04.2021 Information about the authors
Aleksey B. Buslaev, Cand. Sc. (Technical), Associate Professor, Military Scientific Educational Center of Military-Air Forces "N.E. Zhukovsky and Ju.A. Gagarin Military-Air Academy" (54A Starykh Bolshevikov str., Voronezh 398600, Russia) Natal'ya N. Kosheleva, Cand. Sc. (Technical), Associate Professor, Voronezh State Technical University (84 20-letiya Oktyabrya str., Voronezh 394006, Russia), e-mail: vstu-ppe@mail.ru
Sergey S. Belokopytov, Military Scientific Educational Center of Military-Air Forces "N.E. Zhukovsky and Ju.A. Gagarin MilitaryAir Academy" (54A Starykh Bolshevikov str., Voronezh 398600, Russia)