3

我想用python编写一个脚本,用beaglebone black进行数据采集。但是,当我读入值时,我只会听到噪音。

我设置了一个电路来输入信号(我正在运行大约 0.1-10 Hz 12v 方脉冲),稳压器将电压限制为 5v,分压器将其降至安全电压(~1v ) 用于 BBB 上的模拟引脚。

电路:

在此处输入图像描述

然后使用 python 脚本,我想将值记录到一个数组中,并在程序完成后绘制它们。

在 ipython 外壳中:

In [1]: import Adafruit_BBIO.ADC as adc
In [2]: import time
In [3]: AIN0 = "P9_39"
In [4]: T = 0.1                           # or some other value
In [5]: adc.setup()
In [6]: a = []
In [7]: while True:
            a.append(adc.read(AIN0)*1800) # pin value times 1.8 ref voltage
            time.sleep(T)

运行一段时间后,我使脚本崩溃并写入ascp编辑到桌面的文件。但是当我绘制它时,它只是噪音。我已经在和地面之间连接了o-scope AIN0,波形是我所期望的。我还设置了一个电位器,如下所示:

在此处输入图像描述

而且我能够通过python读取正确的值。所以,我认为这一定是关于进行连续抽样的事情,这会产生问题。

4

1 回答 1

5

如果您不将电源接地连接到您的 Beaglebone 接地,它将无法工作,并且您确实应该只看到噪声,因为AIN0将对 Beaglebone 的接地进行采样。您必须连接它们才能AIN0看到感兴趣的信号。

固定示意图

请参阅“缺少连接”线。如果你没有,你就没有来自电源的电流的返回路径(蓝色箭头),所以电位器上不能有任何电压(记住欧姆定律:voltage = resistance x current。如果电流为零,则采样电压也必须为零)。

至于脚本部分,您可以使用以下命令直接将采样数据写入文件:

with open('sampled_data.csv', 'w') as f:
  while True:
    f.write(','.join(str(adc.read(AIN0)*1800)))
    time.sleep(T)

当您中断脚本时,您将获得sample_data.csv文件,其中所有值由逗号 ( ,) 分隔,可轻松导入电子表格或用于绘制它的其他软件。

于 2013-09-27T12:46:27.117 回答