2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
MPU6050 - очень полезный датчик.
MPU 6050 - это IMU: инерциальный измерительный блок (IMU) - это электронное устройство, которое измеряет и сообщает удельную силу тела, угловую скорость, а иногда и ориентацию тела, используя комбинацию акселерометров и гироскопов.
Это 6-осевое устройство
3 оси могут измерять ускорение, а остальные 3 - измерения углового ускорения.
Используя ускорение и угловое ускорение, можно получить довольно точную оценку угла
В этом уроке мы исследуем, как мы можем использовать MPU6050 с библиотекой, чтобы упростить работу.
Запасы
- Плата Arduino
- MPU6050
- Провода перемычки
- Макетная плата
Шаг 1: завершите схему
Датчик использует протокол, известный как I2c, для связи с Arduino для отправки ему значений.
Вывод A4 используется для SCL-последовательных часов и должен быть подключен к SCL датчика и, A5 к линии передачи данных SDA-Serial.
Vcc подключен к 5 В, а Gnd подключен к земле.
Шаг 2: кодирование
#include #include
Прежде чем я начну, эта библиотека написана не мной, я просто думаю, что она самая простая из имеющихся, и люблю ее использовать.
Это файлы заголовков ^^, wire.h используется для установления связи i2c.
MPU6050 mpu6050 (провод);
здесь мы называем наш гироскоп или создаем объект для тех, кто знаком с ООП.
void setup () {
Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (истина); }
Первоначально мы рассчитываем смещения, так как все угловые отсчеты будут относиться к исходной ориентации.
void loop () {
mpu6050.update (); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); }
Каждый дает нам меру угла.
Шаг 3: другие функции
Библиотека содержит другие функции
нравиться:
mpu6050.getTemp () // дает температуру (не очень точно)
mpu6050.getAccX () // Линейное ускорение по оси X
(аналогичные функции: mpu6050.getAccY (), mpu6050.getAccZ ())
mpu6050.getGyroX () // Угловое ускорение относительно оси x
(аналогичные функции: mpu6050.getGyroY (), mpu6050.getGyroZ ())