【问题标题】:Is it possible to increase the sampling rate of ADXL345 on a Raspberry Pi with Python?是否可以使用 Python 在 Raspberry Pi 上提高 ADXL345 的采样率?
【发布时间】:2020-01-26 22:07:06
【问题描述】:

我有一个带有 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 而不是传感器,读取能力受到限制?还是因为我的代码?

我也想知道同样的问题,但我会提出不同的问题。有没有办法使上面的段缩短,从而有可能减少延迟并提高数据采样率?也就是说,有没有办法让它变成一条线? 据我所知,没有对这个人的帖子做出回应,也没有任何对我有帮助的决定性的帖子。

如果没有办法回答这个问题,那么我提出这个问题:有没有办法加快树莓派 3 B+ 上 I2C 的数据采样速度,或者是否可以复制此代码用于SPI通讯?我知道 SPI 通信比 I2C 更快,但我不确定如何在 Raspberry Pi 中的 Python 上实现它。如果这篇文章太长,我很抱歉。

【问题讨论】:

    标签: python raspberry-pi3 delay i2c downsampling


    【解决方案1】:

    ADXL345 数据表显示使用快速 i2c 的最快采样率为 800Hz。需要 SPI 来获得更快的采样率 - 高达 3200Hz。

    看起来Adafruit_ADXL345 库只支持 i2c。它已被弃用。 Adafruit Blinka 库支持 SPI,但您必须推出自己的 ADXL345 接口。

    【讨论】:

    • 您知道类似的库或代码在哪里吗?
    • 我没有任何图书馆的第一手知识。 “python adxl345 SPI”的网络搜索出现了几个。但我一个都没用过。
    • 为什么不使用本机 Linux 内核 ABI (IIO)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多