如果您需要创建一个项目并将其定位,那就知道 如何放置 关于空间,您可以使用模块 微处理器6050。 即,该模块是具有6个自由度(DoF)的惯性测量单元或IMU(惯性测量单元)。 这要归功于3轴加速度传感器和3轴陀螺仪。
该MPU6050可以知道包含对象的放置位置,以用于 应用 导航,测角,稳定,手势控制等。 移动电话通常包括这种类型的传感器,例如,通过手势控制某些功能,例如,如果智能手机被翻转,则停止操作;通过将移动设备当作方向盘旋转来在视频游戏中驾驶车辆等。
什么是加速度计和陀螺仪?
好吧,让我们分部分进行。 首先是要了解这些类型的传感器是什么 能够检测加速度和转弯,可以从自己的名字推导出来。
- 加速度计:测量加速度,即每单位时间的速度变化。 请记住,在物理学中,速度随时间的变化(a = dV / dt)是加速度的定义。 根据牛顿第二定律,我们还有a = F / m,这就是加速度计用来工作的原理,也就是说,它们使用物体的力和质量参数。 为了能够在电子学中实现,使用了MEMS(微电子机械系统)技术,该技术不同于传统的电子芯片制造技术,因为机械零件是在MEMS中产生的。 在这种情况下,将创建能够测量加速度的轨道或元素。 这意味着可以采用许多其他单位,例如速度(如果加速度在时间上积分),如果它再次积分,我们有位移等。 也就是说,非常有趣的参数可以知道对象的位置或检测对象的运动。
- 陀螺仪:又称陀螺仪,它是一种测量物体角速度的设备,即单位时间的角位移或物体绕其轴旋转的速度。 在这种情况下,MEMS技术还可以利用一种称为科里奥利(Coriolis)的效应来测量该速度。 因此,可以测量角速度,或者通过将角速度相对于时间进行积分,可以获得角位移。
MPU6050模块
现在您知道了加速度计和陀螺仪是什么, MPU6050模块 它是集成了这两个元素的电子板,可让您测量元素位置的这些变化,从而能够产生反应。 例如,当物体移动时,LED会亮起,或者其他更复杂的事情。
就像我说的,它有6个自由轴,自由度, 3轴X,Y和Z加速度传感器以及其他3轴陀螺仪 测量角速度。 您必须考虑不要在放置模块的方式和测量的旋转方向上犯错误,因为如果输入错误的符号会有些混乱。 查看下图,该图指定了轴的方向(但是,请注意,PCB本身也在一侧上进行了打印):
考虑到这一点, 引脚排列,或多或少,您都清楚可以开始使用MPU6050。 如上图所示,连接非常简单,并允许I2C通信与大多数微控制器(包括Arduino)兼容。 SCL和SDA引脚在板上有一个上拉电阻,可直接连接到Arduino板,因此您不必担心自己添加它们。
要在I2C总线上同时使用两个方向,您可以使用这些 针脚和方向:
- AD0 = 1或高电平(5v):适用于I0C地址69x2。
- AD0 = 0或低(GND或Nc):用于I0C总线的地址68x2。
请记住,该模型的工作电压为3v3,但幸运的是它具有内置稳压器,因此可以毫无问题地使用Arduino的5v进行切换,并将其转换为3.3v。
顺便说一下,如果内部引脚连接到GND,如果未连接此引脚,则地址为 默认情况下它将是0x68,因为默认情况下它将接地,因此将其解释为逻辑0。
与Arduino集成
你可以得到 有关I2C总线的更多信息 在本文中。 您已经知道,根据Arduino开发板,用于总线的引脚会有所不同,但在 Arduino UNO 是模拟引脚 A4和A5,用于SDA(数据)和SCL(时钟) 分别。 它们是唯一的Arduino引脚,以及应为板供电的5v和GND引脚。 因此,连接尽可能简单。
对于MPU6050的功能,可以使用其链接库中的库,您可以在该链接中获取更多信息。 I2C 模块的和总线的 微处理器6050.
MPU6050的Arduino板编程不是太简单,因此不适合初学者。 此外,了解加速度的极限或角度范围后,您可以进行校准以确定确切的运动或加速度。 但是,为了至少可以有一个示例说明如何使用它,您可以从 Arduino IDE的示例草图 它将读取加速度计和陀螺仪记录的值:
// Bibliotecas necesarias: #include "I2Cdev.h" #include "MPU6050.h" #include "Wire.h" // Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C MPU6050 sensor; // Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z int ax, ay, az; int gx, gy, gz; void setup() { Serial.begin(57600); //Función para iniciar el puerto serie con 57600 baudios Wire.begin(); //Inicio para el bus I2C sensor.initialize(); //Iniciando del sensor MPU6050 if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente"); else Serial.println("Error al iniciar el sensor"); } void loop() { // Leer las aceleraciones y velocidades angulares sensor.getAcceleration(&ax, &ay, &az); sensor.getRotation(&gx, &gy, &gz); // Muestra las lecturas que va registrando separadas por una tabulación Serial.print("a[x y z] g[x y z]:\t"); Serial.print(ax); Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.print(az); Serial.print("\t"); Serial.print(gx); Serial.print("\t"); Serial.print(gy); Serial.print("\t"); Serial.println(gz); delay(100); }
如果您是初学者而又不太了解 如何使用Arduino IDE进行编程,这对您来说很难理解,因此您可以免费查阅Arduino编程入门课程的手册...