是否可以使用Python在Raspberry Pi上提高ADXL345的采样率?

问题描述 投票:1回答:1

我有一个带2个ADXL345加速度计的Raspberry Pi,我想最大化两者的数据采样率。当我在互联网上搜索时,我很感兴趣在Raspberry Pi论坛(https://www.raspberrypi.org/forums/viewtopic.php?t=254552)上找到显示此代码的人,在此示例中他使用两个加速度计:

import time
import Adafruit_ADXL345


accel1 = Adafruit_ADXL345.ADXL345()
accel2 = Adafruit_ADXL345.ADXL345(address=0x1d, busnum=1)


print('Printing X, Y, Z axis values, press Ctrl-C to quit...')
cordinates = []

import time
start_time = time.time()
NUM_OF_SEC_TO_RUN = 10 

while time.time()<=start_time+NUM_OF_SEC_TO_RUN:

    x1, y1, z1 = accel1.read()
    x2, y2, z2 = accel2.read()
    cordinates.append([x1,y1,z1,x2,y2,z2,time.time()])

import csv
with open('02.txt', 'a') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerows(cordinates)

稍后,他说该部分

x1, y1, z1 = accel1.read()
x2, y2, z2 = accel2.read()
cordinates.append([x1,y1,z1,x2,y2,z2,time.time()])

是加速度计降低采样率的最可能原因,从而降低了读取速率并延迟了数据采集。

他说,

执行上述三行代码的平均时间为0.002121秒。这是否意味着由于i2c和Raspberry pi而不是传感器而导致读取能力受到限制?还是因为我的代码?

我也想知道同样的问题,但是我要提出不同的看法。有没有一种方法可以缩短上述部分,从而有可能减少延迟并提高数据采样率?也就是说,有没有办法使它成一行?据我所知,这家伙的话题没有得到回应,也没有任何有帮助的结论性答复。

如果没有办法回答这个问题,那么我提出一个问题:是否有办法提高Raspberry Pi 3 B +上I2C的数据采样速度,或者可以为SPI复制此代码?通讯?我知道SPI通信比I2C快,但我不确定如何在Raspberry Pi的Python上实现它。如果这篇文章过长,我深表歉意。

python raspberry-pi3 delay i2c downsampling
1个回答
1
投票

ADXL345数据手册说,使用快速i2c的最快采样率为800Hz。需要SPI以获得更快的采样率-高达3200Hz。

Adafruit_ADXL345库似乎仅支持i2c。并且已弃用。 Adafruit Blinka库支持SPI,但是您必须滚动自己的ADXL345接口。

© www.soinside.com 2019 - 2024. All rights reserved.