我有一个带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()])
这是加速度计降低采样率的最可能原因,从而降低了读取速率并延迟了数据采集。
他说,
以上3行代码的平均执行时间为0.002121秒。这是否意味着由于i2c和Raspberry pi而不是传感器而导致读取能力受到限制?还是因为我的代码?
我也想知道同样的问题,但是我要提出不同的看法。有没有一种方法可以缩短上述片段,从而有可能减少延迟并提高数据采样率?也就是说,有没有办法使它成一行?据我所知,这家伙的话题没有得到回应,也没有任何有帮助的结论性答复。
如果没有办法回答这个问题,那么我提出一个问题:是否有办法提高Raspberry Pi 3 B +上I2C的数据采样速度,还是可以复制此代码进行SPI通信?我知道SPI通信比I2C快,但我不确定如何在Raspberry Pi的Python上实现它。如果这篇文章过长,我深表歉意。
ADXL345数据手册说,使用快速i2c的最快采样率是800Hz。需要SPI以获得更快的采样率-高达3200Hz。
看起来该Adafruit_ADXL345
库仅支持i2c。它已被弃用。Adafruit Blinka库支持SPI,但是您必须滚动自己的ADXL345接口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句