python - Python 使用 MCP3008 采样频率
问题描述
我正在尝试制作可见光通信项目。目前,我使用经典 LED 作为 TX 部分,使用带有 MCP3008 AD 转换器的 BPW21 光电二极管作为 RX 部分。这两个部分都在带有 python 3.7.3 的 RasPi4 上运行。但是,我在 RX 部分使用 OOK 调制接收位时遇到问题。
import busio
import digitalio
import board
import time
import adafruit_mcp3xxx.mcp3008 as MCP
from adafruit_mcp3xxx.analog_in import AnalogIn
spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)
cs = digitalio.DigitalInOut(board.D5)
mcp = MCP.MCP3008(spi, cs)
channel_0 = AnalogIn(mcp, MCP.P0)
def evaluateSensorValue():
bits = ""
sensor_value = channel_0.value
channel_voltage = channel_0.voltage
if channel_voltage < 3.0:
bits = "1"
print("1")
else:
bits = "0"
print("0")
while True:
evaluateSensorValue()
time.sleep(0.05)
我正在从 MCP3008 的通道 0 读取输入。然而,在如此低的 20Hz 频率下,我无法“捕捉”所有比特。BPW21 在 1.5 us 的下降和上升时间内具有快速的照明响应时间。我认为 MCP3008 将足够快以捕获 10 kHz 频率的所有位,而不仅仅是低于 20 Hz。如何在 RX 端更快地接收更高频率的数据?感谢您提供任何帮助!
解决方案
这个答案解决了!问题在于 AD 转换器的采样频率非常高。
推荐阅读
- sql - 始终为假的 PostgreSQL 查询如何运行数小时?
- react-native - 如何在 react-native 中上传视频?
- http - Ni-Fi 使用 InvokeHTTP 获取带有标头的请求
- reactjs - AWS Chime - 会议已创建 - 如何加入该会议
- python - 未能加载原生 TensorFlow 运行时?
- android-studio - 我正在尝试从 listView 中删除一个项目,从光标中获取其元素,当我单击按钮时,它正在删除光标中的最后一个元素
- python - Jupyter Notebook 中的代码未在 Python 2.7.18 中运行
- .net - dotnet 'new' 命令不适用于 Framework 4.5?
- jenkins - 评估 Jenkinsfile 中的变量 - 单引号内的单引号
- docker - 将 ftp 目录挂载到 docker 容器