python – Beaglebone Black上的模拟采样仅读取噪声
作者:互联网
我想在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)
运行一段时间后,我崩溃了脚本并将一个文件写入要扫描到我的桌面的文件.但是当我绘制它时,它只是噪音.我已经联系了AIN0和地面之间的o-scope,波形就是我所期待的.我也设置了一个这样的电位器:
我可以通过python读取正确的值.所以,我认为必须要做一个连续采样,这会产生问题.
解决方法:
如果你没有将电源接地连接到Beaglebone接地,它将无法正常工作,你确实应该只看到噪声,因为AIN0将对Beaglebone的接地进行采样.您必须连接它们才能使AIN0看到感兴趣的信号.
请参阅“缺少连接”电线.如果你没有,你没有来自电源的电流的返回路径(蓝色箭头),所以在pontentiometer上没有任何电压(记住欧姆定律:电压=电阻x电流.如果电流是零,采样电压也必须为零).
对于脚本部分,您可以使用以下方法直接将采样数据写入文件:
with open('sampled_data.csv', 'w') as f:
while True:
f.write(','.join(str(adc.read(AIN0)*1800)))
time.sleep(T)
当您中断脚本时,您将获得sample_data.csv文件,所有值都以逗号(,)分隔,可以轻松导入电子表格或用于绘制它的其他软件.
标签:python,beagleboneblack 来源: https://codeday.me/bug/20190831/1776111.html