微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 使用 MCP3008 采样频率

如何解决Python 使用 MCP3008 采样频率

我正在尝试制作可见光通信项目。目前我使用经典 LED 作为 TX 部分,BPW21 光电二极管与 MCP3008 AD 转换器作为 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 转换器的采样频率非常高。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。