Python使用MCP3008采样频率

2024-10-02 00:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个可见光通讯的项目。目前,我使用一个经典的LED作为发送部分和BPW21光电二极管与MCP3008 AD转换器作为接收部分。这两个部分都在RasPi4和Python3.7.3上运行。然而,我在接收部分使用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的输入。然而,在这样一个20赫兹的低频率下,我无法“捕捉”所有的比特。BPW21在1.5美国下降和上升时间内对光有快速响应。我认为MCP3008的速度足够快,可以捕获频率为10kHz的所有比特,而不仅仅是低于20Hz的比特。我怎样才能在接收端更快地接收到更高频率的数据?谢谢你的帮助


Tags: importboardspiadafruittimechannelbitsvoltage

热门问题