Питание MPU-6050 с помощью цифровых выводов Arduino
Я пытался использовать MPU-6050 (в частности, GY-521) с Arduino Nano v3.0, но не получаю никаких показаний, когда пытаюсь включить MPU-6050 с VCC и GND, подключенными к цифровым выводам на Arduino,
Когда у меня есть VCC и GND, подключенные к 5V или 3V3 и GND на Arduino, я могу получать показания с гироскопа / акселерометра. Когда я подключаю их к цифровым выводам, я получаю показания, но все они равны нулю, и даже когда датчик встряхивается, значения остаются на нуле. Код, который я использую в настройках для цифровых выводов, выглядит следующим образом:
pinMode(powerpin, OUTPUT);
pinMode(groundpin, OUTPUT);
digitalWrite(powerpin, HIGH);
digitalWrite(groundpin, LOW);
Когда я включаю акселерометр ADXL377 с теми же контактами, я получаю показания без проблем. Это проблема с количеством тока, который может быть пропущен через цифровые контакты? Похоже, что цифровые контакты на Nano могут выдавать максимальные значения 40 мА, а для MPU-6050 требуется только 3 мА, поэтому я полагаю, что ток не является проблемой. Любая помощь будет отличной.
1 ответ
У меня была такая же проблема, вот почему это была проблема. Прежде всего, подключение LOW к GND - хорошая идея. Еще одна вещь: когда вы устанавливаете свой пин HIGH:
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. 10 мс это хорошая ценность.
После этого вы можете читать как обычно (и хорошей идеей является отключение устройства, если вы не читаете с него слишком часто).