使用Arduino数字引脚为MPU-6050供电

使用Arduino数字引脚为MPU-6050供电,arduino,mpu,Arduino,Mpu,我一直在尝试将MPU-6050特别是GY-521与Arduino Nano v3.0配合使用,但当我尝试将VCC和GND连接到Arduino上的数字管脚为MPU-6050供电时,没有得到任何读数 当我将VCC和GND连接到Arduino上的5V或3V3和GND时,我能够从陀螺仪/加速计获得读数。当我把它们连接到数字管脚上时,我会得到读数,但它们都是零,即使传感器受到震动,数值也会保持在零。我在数字管脚设置中使用的代码如下: pinMode(powerpin, OUTPUT); pinMode(g

我一直在尝试将MPU-6050特别是GY-521与Arduino Nano v3.0配合使用,但当我尝试将VCC和GND连接到Arduino上的数字管脚为MPU-6050供电时,没有得到任何读数

当我将VCC和GND连接到Arduino上的5V或3V3和GND时,我能够从陀螺仪/加速计获得读数。当我把它们连接到数字管脚上时,我会得到读数,但它们都是零,即使传感器受到震动,数值也会保持在零。我在数字管脚设置中使用的代码如下:

pinMode(powerpin, OUTPUT);
pinMode(groundpin, OUTPUT);
digitalWrite(powerpin, HIGH);
digitalWrite(groundpin, LOW);

当我用相同的引脚给加速度计ADXL377通电时,我得到的读数没有问题。这是通过数字管脚的电流量的问题吗?看起来Nano上的数字管脚最大输出电流为40mA,而MPU-6050只需要3mA,所以我认为电流不是问题。任何帮助都会很好。

我也遇到了同样的问题,以下是问题的原因。 首先,将LOW连接到GND是个好主意。 另一件事:当您通过以下方式将pin设置为高:

pinMode(powerpin, OUTPUT);
digitalWrite(powerpin, HIGH);
它会在一段时间后升高,因此您应该在以下两个时间之间设置一些延迟:

pinMode(powerpin, OUTPUT);
digitalWrite(powerpin, HIGH);

delay(10);

Wire.begin();
Wire.beginTransmission(0x68);
Wire.write(0x6B);  // PWR_MGMT_1 register
Wire.write(0);     // set to zero (wakes up the MPU-6050)
Wire.endTransmission(true);
所以你们需要接通电源,然后唤醒设备。Ab.10ms是一个很好的值


之后,您可以正常阅读,如果不经常阅读,最好让设备休眠。

您可以并且应该将MPU GND连接到Arduino GND。你不需要用数码管脚,对吗?我想我明白你的想法,用数字管脚电源管脚打开/关闭它,这没关系,但是GND管脚可能不能像你想的那样工作。另外,如果你错误地将接地管脚设置为高,电源管脚设置为低,你将为MPU提供-5V电源,这可能会有风险。谢谢!这一切都解决了!从来都不知道Arduino需要一点时间才能启动。