Skocz do zawartości

delma199

Użytkownicy
  • Zawartość

    5
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O delma199

  • Ranga
    2/10
  1. Jest mniej. To 0,6G podałem jako wartość bezwzględną. Stricte liczbowo pokazuje -0,6G. Pozostałe osie w porządku. Zamieniałem czujniki(mam kilka takich samych) i zawsze występuje to przekłamanie na osi Z tylko o różnych wartościach. Jak znajdę rozwiązanie to napiszę
  2. Jak obrócę o 90 stopni, tak że oś Z akcelerometru jest prostopadła do linii pola to wskazuje ok 0,4G. Po obróceniu o 180 stopni ok 0,6G. Zakres ustawiony 2G.
  3. Siemka wszystkim. Mam takowy problemik, że odczytując dane z akcelerometru odczyt na osi Z nie wskazuje realnej wartości przyśpieszenia. Na obrazku mamy odczyty z poszczególnych osi (w jednostkach G). Widać że na osi Z jest odczyt przekraczający 1G. Gdy obrócę sensor o 180 stopni tak aby oś Z zmieniła zwrot to odczyt na niej wynosi poniżej 1G. Wynika z tego jakby do ozi Z był dodany pewien offset. Czujnik to MPU 9255. Z czego to może wynikać i jak temu zaradzić? Poniżej wstawiam też kodzik. Dzięki za pomoc //settings accelerometer and gyroscope HAL_I2C_Mem_Write(&i2c, 0xD0, 27, I2C_MEMADD_SIZE_8BIT, &Settings,1,1000); HAL_I2C_Mem_Write(&i2c, 0xD0, 28, I2C_MEMADD_SIZE_8BIT, &Settings,1,1000); HAL_I2C_Mem_Write(&i2c, 0xD0, 55, I2C_MEMADD_SIZE_8BIT, &BypassEnable,1,1000); //Power Down mode HAL_I2C_Mem_Write(&i2c, 0x18, 0x0A, I2C_MEMADD_SIZE_8BIT, &SettingsM,1,1000); HAL_Delay(100); //16 bit output mode 2 HAL_I2C_Mem_Write(&i2c, 0x18, 0x0A, I2C_MEMADD_SIZE_8BIT, &SettingsL,1,1000); //16 bit 8Hz while (1) { //A X HAL_I2C_Mem_Read(&i2c, 0xD0, 59, I2C_MEMADD_SIZE_8BIT, &DAHx,1,100); HAL_I2C_Mem_Read(&i2c, 0xD0, 60, I2C_MEMADD_SIZE_8BIT, &DALx,1,100); //A Y HAL_I2C_Mem_Read(&i2c, 0xD0, 61, I2C_MEMADD_SIZE_8BIT, &DAHy,1,100); HAL_I2C_Mem_Read(&i2c, 0xD0, 62, I2C_MEMADD_SIZE_8BIT, &DALy,1,100); //A Z HAL_I2C_Mem_Read(&i2c, 0xD0, 63, I2C_MEMADD_SIZE_8BIT, &DAHz,1,100); HAL_I2C_Mem_Read(&i2c, 0xD0, 64, I2C_MEMADD_SIZE_8BIT, &DALz,1,100); //G X HAL_I2C_Mem_Read(&i2c, 0xD0, 67, I2C_MEMADD_SIZE_8BIT, &DGHx,1,100); HAL_I2C_Mem_Read(&i2c, 0xD0, 68, I2C_MEMADD_SIZE_8BIT, &DGLx,1,100); //G Y HAL_I2C_Mem_Read(&i2c, 0xD0, 69, I2C_MEMADD_SIZE_8BIT, &DGHy,1,100); HAL_I2C_Mem_Read(&i2c, 0xD0, 70, I2C_MEMADD_SIZE_8BIT, &DGLy,1,100); //G Z HAL_I2C_Mem_Read(&i2c, 0xD0, 71, I2C_MEMADD_SIZE_8BIT, &DGHz,1,100); HAL_I2C_Mem_Read(&i2c, 0xD0, 72, I2C_MEMADD_SIZE_8BIT, &DGLz,1,100); do { HAL_I2C_Mem_Read(&i2c, 0x18, 0x02, I2C_MEMADD_SIZE_8BIT, &ST1,1,100); } while (!(ST1&0x01)); //0x0C - adress AK8963, 0x03-0x08 => HLx-HHz HAL_I2C_Mem_Read(&i2c, 0x18, 0x03, I2C_MEMADD_SIZE_8BIT, &HLx,1,100); HAL_I2C_Mem_Read(&i2c, 0x18, 0x04, I2C_MEMADD_SIZE_8BIT, &HHx,1,100); HAL_I2C_Mem_Read(&i2c, 0x18, 0x05, I2C_MEMADD_SIZE_8BIT, &HLy,1,100); HAL_I2C_Mem_Read(&i2c, 0x18, 0x06, I2C_MEMADD_SIZE_8BIT, &HHy,1,100); HAL_I2C_Mem_Read(&i2c, 0x18, 0x07, I2C_MEMADD_SIZE_8BIT, &HLz,1,100); HAL_I2C_Mem_Read(&i2c, 0x18, 0x08, I2C_MEMADD_SIZE_8BIT, &HHz,1,100); HAL_I2C_Mem_Read(&i2c, 0x18, 0x09, I2C_MEMADD_SIZE_8BIT, &H,1,100); //accelerometer Ax = (int16_t)(DAHx << 8 | DALx); Ay = (int16_t)(DAHy << 8 | DALy); Az = (int16_t)(DAHz << 8 | DALz); //gyroscope Gx = (int16_t)(DGHx << 8 | DGLx); Gy = (int16_t)(DGHy << 8 | DGLy); Gz = (int16_t)(DGHz << 8 | DGLz); //magnetometer Hx= (int16_t)(HHx << 8 | HLx); Hy= (int16_t)(HHy << 8 | HLy); Hz= (int16_t)(HHz << 8 | HLz); Ax_g = (float)Ax/16384.0; Ay_g = (float)Ay/16384.0; Az_g = (float)Az/16384.0; Gx_g = (float)Gx/131.0; Gy_g = (float)Gy/131.0; Gz_g = (float)Gz/131.0; printf("Ax = %f Ay = %f Az = %f Gx = %f Gy = %f Gz = %f\n", Ax_g, Ay_g, Az_g, Gx_g, Gy_g, Gz_g); HAL_Delay(200); }
  4. Dzięki bardzo. Napisałem, że składowa pionowa jest około 2 razy większa, ale rzeczywiście odczyt mocno zbliża się do 2.5 raza. adam30010, potrafisz może wytłumaczyć czemu igła kompasu po ustawieniu go pionowo i tak ustawia się wzdłuż linii pola (składowej poziomej), skoro składowa pionowa powinna oddziaływać silniej?
  5. Cześć. Czemu odczyt z osi magnetometru prostopadłej do powierzchni ziemi daje dwukrotnie wyższą wartość niż z osi skierowanej na północ? P.S. Moim zdanie odczyt z osi prostopadłej do powierzchni Ziemi powinien wynosić 0, bo oś ta skierowana jest prostopadle do linii pola magnetycznego. Dzięki za odp
×
×
  • Utwórz nowe...