如何从ADC中获取数据时测量python中的采样率?

时间:2016-11-10 05:05:33

标签: python python-2.7 raspberry-pi adc sample-rate

我在使用Raspberry Pi 3 B的项目中工作,我从IR传感器(Sharp GP2Y0A21YK0F)通过ADC MPC3008获取数据,并使用PyQtgraph库实时显示。

然而,似乎我得到的样本非常少,而且图表不是很平稳"正如我所料。

我正在使用Adafruit Python MCP3008库和函数mcp.read_adc(0)来获取数据。

有没有办法在Python中测量采样率?

谢谢

Hugo Oliveira

1 个答案:

答案 0 :(得分:0)

我建议设置一些下一级缓冲,理想情况是通过多处理(参见multiprocessing and GUI updating - Qprocess or multiprocessing?)来更好地处理您访问数据的速度。目前你正在使用QTimer进行轮询,每50毫秒只能获得3次原始读取...所以你真的通过计时器人为地限制自己。我没有使用过MCP3008,但是在他们的代码中快速查看一些代码似乎你必须设置一些样本测试来尝试一些事情,或者进一步调查以获得更好的文档。问题是mcp.read_adc(0)方法的行为,它是阻塞还是非阻塞......如果没有阻塞,如果没有新数据,它会返回陈旧数据,......等等。这将是理想的如果它是从时间意义上阻塞的话,你可以在它上面设置一个循环,并在每次连续返回时加上时间delta,以确定你能够获得新样本的速度。如果它是非阻塞的,你会希望它在没有新样本的情况下返回null,并且只返回新的实际样本,如果它确实返回了一些东西。你将不得不玩它,看看它的行为。无论如何,一旦你将辅助线程设置为仅轮询mcp.read_adc(0),那么你可以使用update()计时器来收集最新的缓冲区并绘制它。我也不知道多线程/多处理对RaspPI的影响(参见这里的一般性讨论:Multiprocessing vs Threading Python),但任何事情都应该比QTimer轮询更好。