Питание 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 мс это хорошая ценность.

После этого вы можете читать как обычно (и хорошей идеей является отключение устройства, если вы не читаете с него слишком часто).

Другие вопросы по тегам