Проблема с гироскопом MPU-6050

Тема в разделе "Arduino & Shields", создана пользователем AlexAxel, 10 авг 2017 в 17:07.

  1. AlexAxel

    AlexAxel Нерд

    Доброе время суток.

    Имеется сабжевый гироскоп, подключенный к Pro Mini 3.3V 8 MHz (пробовал также 5V 16 mHz).
    Подключение аналогичное этой схеме
    c02f8e.png

    Код примерно такой
    Код (C++):
    #include<Wire.h>
    int i=0;
    const int MPU_addr=0x68;
    int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
    void setup()
    { Wire.begin();
    Wire.beginTransmission(MPU_addr);
    Wire.write(0x6B);
    Wire.write(0);
    Wire.endTransmission(true);
    pinMode (13,OUTPUT);
    digitalWrite(13,LOW);
    Serial.begin(9600); }
    void loop()
    { Wire.beginTransmission(MPU_addr);
    Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
    Wire.endTransmission(false);
    Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers
    AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
    AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
    AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
    Tmp=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
    i=AcZ/100;
    if (i<150)
    {
    Serial.println(" EMERGENCY!!!! ");
    Serial.println(AcZ/100);
    Serial.println(AcY/100);
    Serial.println(AcX/100);
    digitalWrite(13,HIGH);
    delay (500);
    digitalWrite(13,LOW);
    delay(500);
    }
    }
    смысл в чем - в горизонтальном положении i равно 150-152, при малейшем отклонении на любую ось значение i уменьшается, при этом выдается соответствующее сообщение в Serial,+ мыргает ламочка, и как только гироскоп возвращается в горизонталь - ламочка тухнет. Так вот - это все идеально работает, когда ардуина подключена к USB - все просто изюмительно. Но если подключить ардуину к батарейке (+ на RAW и - на GND) - то гироскоп не отрабатывает (сразу начинает моргать лампочкой, как будто значение i меньше 150. Подключенный "на горячую" разъем USB показывает, что значение i=0). При этом если стартовать через USB, потом подключить батарею, и потом отключить USB - то все работает корректно. В чем может быть затык?
     
  2. rkit

    rkit Гуру

    В батарее, в чем. Как всегда. крона какая-нибудь, да еще и разряженная.
     
  3. AlexAxel

    AlexAxel Нерд

    Нет, заряженная Li-ion. две одинарных на 3.7, одна спарка - один и тот же результат.
     
  4. rkit

    rkit Гуру

    3.7 мало
     
  5. AlexAxel

    AlexAxel Нерд

    Заряженный Li ion выдает 4,2, спарка дает больше 8
     
  6. AlexAxel

    AlexAxel Нерд

    Вопрос снят. Дело было не в батарейке и не в пайке. Оказалось, что почему-то не сбрасывался гироскоп после отключения и обратного включения питания от батареи. Если после включения от батареи нажать ресет - то потом все корректно работает. Добавил функцию программного ресета в код - все заработало.