Скачки данных у Gy-273

Тема в разделе "Arduino & Shields", создана пользователем Goblin, 15 мар 2019.

  1. Goblin

    Goblin Нуб

    При попытке сделать компас для робота на базе Gy-273 столкнулся с тем что данные или не обновляются или скачут при неподвижном компасе.
    Код (C++):
    #include "Wire.h"
    #include "HMC5883L.h"

    HMC5883L compass;

    void setup(){
      Serial.begin(9600);
      Wire.begin();
     
      compass = HMC5883L();  // создаем экземпляр HMC5883L библиотеки
      setupHMC5883L();       // инициализация HMC5883L
    }

    void loop(){
      float heading = getHeading();
      Serial.println(heading);
      delay(250);
    }

    void setupHMC5883L(){
      // инициализация HMC5883L, и проверка наличия ошибок
      int error;
      error = compass.SetScale(0.88); // чувствительность датчика из диапазона: 0.88, 1.3, 1.9, 2.5, 4.0, 4.7, 5.6, 8.1
      if(error != 0) Serial.println(compass.GetErrorText(error)); // если ошибка, то выводим ее

      error = compass.SetMeasurementMode(Measurement_Continuous); // установка режима измерений как Continuous (продолжительный)
      if(error != 0) Serial.println(compass.GetErrorText(error)); // если ошибка, то выводим ее
    }

    float getHeading(){
      MagnetometerRaw raw = compass.ReadRawAxis();//без вот этого данные не обновляются
      // считываем данные с HMC5883L и рассчитываем  направление
      MagnetometerScaled scaled = compass.ReadScaledAxis(); // получаем масштабированные элементы с датчика
      float heading = atan2(scaled.YAxis, scaled.XAxis);    // высчитываем направление

      // корректируем значения с учетом знаков
      if(heading < 0) heading += 2*PI;
      if(heading > 2*PI) heading -= 2*PI;

      return heading * RAD_TO_DEG; // переводим радианы в градусы
    }
    Данные с монитора при неподвижном компасе(держал в руке)
    0.00
    10.85
    45.76
    0.00
    11.71
    0.00
    0.00
    0.00
    0.00
    0.00
    90.00
    90.00
    13.69
    45.60
    14.25

    Подскажите в чем дело или где искать?
     
  2. Ну первое - это то, что вы держите прибор в руке. Потом не вижу никакого фильтра шума.
     
  3. Goblin

    Goblin Нуб

    я конечно понимаю что руки трясутся, но не на 90 градусов. Зафиксированным на столе он то же самое выдаёт
     
  4. Тело - проводник электрического тока. Линза для электромагнитных волн. Электрочувствительные приборы в руках не держат.
     
    Последнее редактирование: 15 мар 2019
  5. parovoZZ

    parovoZZ Гуру

    На то она и игрушка. Представление получил о ней? Теперь выкинь ее.
     
    DetSimen нравится это.