我的 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 值好,这很容易)和加速度计数据(这很完美)。
谢谢!我的英语不是很完美,对不起。