Beaglebone Black上的模拟采样仅读取噪声

时间:2013-09-26 22:22:37

标签: python beagleboneblack

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

我有一个电路设置为输入一个信号(我运行的是一个.1-10 Hz 12v方波脉冲),电压调节器将电压限制在5v,分压器将其降低到安全电压(~1v)用于BBB上的模拟引脚。

电路:

enter image description here

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

在ipython shell中:

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)

运行一段时间后,我崩溃了脚本并将a写入scp到我桌面的文件。但是当我绘制它时,它只是噪音。我已经联系了AIN0和地面之间的o-scope,波形就是我所期待的。我也设置了一个这样的电位器:

enter image description here

我能通过python读取正确的值。所以,我认为必须要做一个连续采样,这会产生问题。

1 个答案:

答案 0 :(得分:5)

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

fixed schematic

请参阅“缺少连接”电线。如果你没有那个没有来自电源的电流的返回路径(蓝色箭头),那么在pontentiometer上就没有任何电压(记住欧姆定律: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文件,其中所有值都以逗号(,)分隔,可以轻松导入电子表格或用于绘制它的其他软件。