我想在python中编写一个脚本,用beaglebone black进行数据采集。但是,当我读到数值时,我只会收到噪音。
我有一个电路设置为输入一个信号(我运行的是一个.1-10 Hz 12v方波脉冲),电压调节器将电压限制在5v,分压器将其降低到安全电压(~1v)用于BBB上的模拟引脚。
电路:
然后使用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,波形就是我所期待的。我也设置了一个这样的电位器:
我能通过python读取正确的值。所以,我认为必须要做一个连续采样,这会产生问题。
答案 0 :(得分:5)
如果你没有将电源接地连接到Beaglebone接地,它将无法正常工作,你确实应该只看到噪声,因为AIN0
将对Beaglebone的接地进行采样。您必须连接它们才能AIN0
看到感兴趣的信号。
请参阅“缺少连接”电线。如果你没有那个没有来自电源的电流的返回路径(蓝色箭头),那么在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
文件,其中所有值都以逗号(,
)分隔,可以轻松导入电子表格或用于绘制它的其他软件。