0

我的 MPU6050 陀螺仪和 Raspberry Pi 计算机有问题。我的项目有 MPU 的功能。我使用这段代码:

import time
import smbus            

def mpu(mpudat_m):
    PWR_MGMT_1   = 0x6B
    SMPLRT_DIV   = 0x19
    CONFIG       = 0x1A
    GYRO_CONFIG  = 0x1B #FS_SEL
    INT_ENABLE   = 0x38
    ACCEL_XOUT_H = 0x3B
    ACCEL_YOUT_H = 0x3D
    ACCEL_ZOUT_H = 0x3F
    GYRO_XOUT_H  = 0x43
    GYRO_YOUT_H  = 0x45
    GYRO_ZOUT_H  = 0x47


    def MPU_Init():
        #write to sample rate register
        bus.write_byte_data(Device_Address, SMPLRT_DIV, 7)
        
        #Write to power management register
        bus.write_byte_data(Device_Address, PWR_MGMT_1, 1)
        
        #Write to Configuration register
        bus.write_byte_data(Device_Address, CONFIG, 0)
        
        #Write to Gyro configuration register
        bus.write_byte_data(Device_Address, GYRO_CONFIG, 0b0)
        
        #Write to interrupt enable register
        bus.write_byte_data(Device_Address, INT_ENABLE, 1)


    def read_raw_data(addr):
        #Accelero and Gyro value are 16-bit
            high = bus.read_byte_data(Device_Address, addr)
            low = bus.read_byte_data(Device_Address, addr+1)
        
            #concatenate higher and lower value
            value = ((high << 8) | low)
            
            #to get signed value from mpu6050
            if(value > 32768):
                    value = value - 65536
            return value


    bus = smbus.SMBus(1)    # or bus = smbus.SMBus(0) for older version boards
    Device_Address = 0x68   # MPU6050 device address

    MPU_Init()

    print (" Reading Data of Gyroscope and Accelerometer")
    timer=0
    Gx=0
    Gy=0
    Gz=0

    while True:
        timer=0.01
    
        #Read Accelerometer raw value
        acc_x = read_raw_data(ACCEL_XOUT_H)
        acc_y = read_raw_data(ACCEL_YOUT_H)
        acc_z = read_raw_data(ACCEL_ZOUT_H)
        #Read Gyroscope raw value
        gyro_x = read_raw_data(GYRO_XOUT_H)
        gyro_y = read_raw_data(GYRO_YOUT_H)
        gyro_z = read_raw_data(GYRO_ZOUT_H)
        #Full scale range +/- 250 degree/C as per sensitivity scale factor
        Ax = acc_x/16384.0
        Ay = acc_y/16384.0
        Az = acc_z/16384.0

        Gx = gyro_x/131
        Gy = gyro_y/131
        Gz = gyro_z/131
        '''
    FS_SEL | Full Scale Range   | LSB Sensitivity
    -------+--------------------+----------------
    0      | +/- 250 degrees/s  | 131 LSB/deg/s
    1      | +/- 500 degrees/s  | 65.5 LSB/deg/s
    2      | +/- 1000 degrees/s | 32.8 LSB/deg/s
    3      | +/- 2000 degrees/s | 16.4 LSB/deg/s
    '''


        print ("Gx=%.2f" %Gx, u'\u00b0'+ "/s", "\tGy=%.2f" %Gy, u'\u00b0'+ "/s", "\tGz=%.2f" %Gz, u'\u00b0'+ "/s", "\tAx=%.2f g" %Ax, "\tAy=%.2f g" %Ay, "\tAz=%.2f g" %Az)     


        time.sleep(.01)
mpu(0)

...我在终端中读取了这些数据:

Gx=3.23 °/s     Gy=1.66 °/s     Gz=0.14 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.37 °/s     Gy=1.79 °/s     Gz=0.23 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.14 g
Gx=3.25 °/s     Gy=1.67 °/s     Gz=0.34 °/s     Ax=0.97 g       Ay=0.18 g       Az=0.15 g
Gx=3.27 °/s     Gy=1.55 °/s     Gz=0.22 °/s     Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=3.46 °/s     Gy=1.67 °/s     Gz=0.42 °/s     Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=3.32 °/s     Gy=1.66 °/s     Gz=0.21 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.18 °/s     Gy=1.57 °/s     Gz=0.41 °/s     Ax=0.98 g       Ay=0.18 g       Az=0.14 g
Gx=3.30 °/s     Gy=1.63 °/s     Gz=0.27 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.14 g
Gx=3.15 °/s     Gy=1.67 °/s     Gz=0.37 °/s     Ax=0.98 g       Ay=0.18 g       Az=0.16 g
Gx=3.28 °/s     Gy=1.54 °/s     Gz=0.37 °/s     Ax=0.98 g       Ay=0.16 g       Az=0.14 g
Gx=3.34 °/s     Gy=1.44 °/s     Gz=0.29 °/s     Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=3.38 °/s     Gy=1.54 °/s     Gz=0.40 °/s     Ax=0.97 g       Ay=0.17 g       Az=0.14 g
Gx=3.34 °/s     Gy=1.60 °/s     Gz=0.62 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.35 °/s     Gy=1.50 °/s     Gz=0.23 °/s     Ax=0.97 g       Ay=0.16 g       Az=0.15 g
Gx=3.29 °/s     Gy=1.72 °/s     Gz=0.31 °/s     Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=3.24 °/s     Gy=1.61 °/s     Gz=0.34 °/s     Ax=0.98 g       Ay=0.19 g       Az=0.16 g
Gx=3.28 °/s     Gy=1.70 °/s     Gz=0.40 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.37 °/s     Gy=1.63 °/s     Gz=0.20 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.16 °/s     Gy=1.34 °/s     Gz=0.24 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.37 °/s     Gy=1.49 °/s     Gz=0.30 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.16 g
Gx=3.39 °/s     Gy=1.56 °/s     Gz=0.18 °/s     Ax=0.98 g       Ay=0.19 g       Az=0.16 g
Gx=3.40 °/s     Gy=1.71 °/s     Gz=0.31 °/s     Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=3.13 °/s     Gy=1.63 °/s     Gz=0.37 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.40 °/s     Gy=1.70 °/s     Gz=0.21 °/s     Ax=0.97 g       Ay=0.19 g       Az=0.13 g
Gx=3.18 °/s     Gy=1.60 °/s     Gz=0.35 °/s     Ax=0.97 g       Ay=0.19 g       Az=0.15 g
Gx=3.21 °/s     Gy=1.53 °/s     Gz=0.22 °/s     Ax=0.97 g       Ay=0.19 g       Az=0.15 g
Gx=3.27 °/s     Gy=1.66 °/s     Gz=0.21 °/s     Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=3.43 °/s     Gy=1.75 °/s     Gz=0.38 °/s     Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=3.37 °/s     Gy=1.68 °/s     Gz=0.15 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.22 °/s     Gy=1.69 °/s     Gz=0.15 °/s     Ax=0.97 g       Ay=0.16 g       Az=0.14 g
Gx=3.26 °/s     Gy=1.54 °/s     Gz=0.40 °/s     Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=3.37 °/s     Gy=1.41 °/s     Gz=0.22 °/s     Ax=0.97 g       Ay=0.18 g       Az=0.15 g
Gx=3.15 °/s     Gy=1.71 °/s     Gz=0.21 °/s     Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=3.47 °/s     Gy=1.61 °/s     Gz=0.28 °/s     Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=3.21 °/s     Gy=1.56 °/s     Gz=0.33 °/s     Ax=0.98 g       Ay=0.18 g       Az=0.13 g
Gx=3.24 °/s     Gy=1.60 °/s     Gz=0.27 °/s     Ax=0.98 g       Ay=0.18 g       Az=0.15 g
Gx=3.22 °/s     Gy=1.72 °/s     Gz=0.27 °/s     Ax=0.98 g       Ay=0.19 g       Az=0.14 g

为什么?我计算真实数据,如果 FS_SEL (0x1b) == 0。我把这个寄存器写为 0,但这不好。我测试,如果我删除计算,结果是什么。所以这是自然读取的数据。

Gx=438.00 °/s   Gy=212.00 °/s   Gz=48.00 °/s    Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=429.00 °/s   Gy=234.00 °/s   Gz=38.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.13 g
Gx=438.00 °/s   Gy=231.00 °/s   Gz=34.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.13 g
Gx=428.00 °/s   Gy=211.00 °/s   Gz=36.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=418.00 °/s   Gy=196.00 °/s   Gz=15.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=415.00 °/s   Gy=198.00 °/s   Gz=53.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.14 g
Gx=429.00 °/s   Gy=211.00 °/s   Gz=62.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=451.00 °/s   Gy=222.00 °/s   Gz=29.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=443.00 °/s   Gy=219.00 °/s   Gz=35.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=416.00 °/s   Gy=215.00 °/s   Gz=46.00 °/s    Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=444.00 °/s   Gy=190.00 °/s   Gz=-254.00 °/s  Ax=0.97 g       Ay=0.16 g       Az=0.14 g
Gx=447.00 °/s   Gy=221.00 °/s   Gz=36.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=431.00 °/s   Gy=208.00 °/s   Gz=35.00 °/s    Ax=0.97 g       Ay=0.16 g       Az=0.15 g
Gx=444.00 °/s   Gy=184.00 °/s   Gz=34.00 °/s    Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=440.00 °/s   Gy=206.00 °/s   Gz=24.00 °/s    Ax=0.98 g       Ay=0.18 g       Az=0.15 g
Gx=445.00 °/s   Gy=208.00 °/s   Gz=6.00 °/s     Ax=0.98 g       Ay=0.19 g       Az=0.14 g
Gx=446.00 °/s   Gy=190.00 °/s   Gz=29.00 °/s    Ax=0.97 g       Ay=0.16 g       Az=0.13 g
Gx=432.00 °/s   Gy=204.00 °/s   Gz=39.00 °/s    Ax=0.99 g       Ay=0.17 g       Az=0.15 g
Gx=439.00 °/s   Gy=209.00 °/s   Gz=37.00 °/s    Ax=0.98 g       Ay=0.16 g       Az=0.14 g
Gx=420.00 °/s   Gy=203.00 °/s   Gz=52.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=451.00 °/s   Gy=217.00 °/s   Gz=36.00 °/s    Ax=0.98 g       Ay=0.16 g       Az=0.14 g
Gx=435.00 °/s   Gy=187.00 °/s   Gz=51.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.14 g
Gx=428.00 °/s   Gy=198.00 °/s   Gz=8.00 °/s     Ax=0.97 g       Ay=0.19 g       Az=0.15 g
Gx=445.00 °/s   Gy=178.00 °/s   Gz=38.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.14 g
Gx=449.00 °/s   Gy=191.00 °/s   Gz=48.00 °/s    Ax=0.98 g       Ay=0.16 g       Az=0.15 g
Gx=433.00 °/s   Gy=197.00 °/s   Gz=36.00 °/s    Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=431.00 °/s   Gy=206.00 °/s   Gz=50.00 °/s    Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=423.00 °/s   Gy=202.00 °/s   Gz=37.00 °/s    Ax=0.97 g       Ay=0.17 g       Az=0.15 g
Gx=431.00 °/s   Gy=221.00 °/s   Gz=51.00 °/s    Ax=0.98 g       Ay=0.18 g       Az=0.15 g
Gx=431.00 °/s   Gy=190.00 °/s   Gz=37.00 °/s    Ax=0.98 g       Ay=0.17 g       Az=0.15 g
Gx=414.00 °/s   Gy=2.00 °/s     Gz=33.00 °/s    Ax=0.97 g       Ay=0.17 g       Az=0.15 g

如果分发这个 ~450、~200 和 ~35 这很好吗?我对所有新的解决方案持开放态度。在我的项目中,需要以°为单位的陀螺仪倾斜度(如果°/s 值好,这很容易)和加速度计数据(这很完美)。

谢谢!我的英语不是很完美,对不起。

4

0 回答 0