红外接收多频

问题描述 投票:0回答:2

我正在开发一个带有红外接收器和发射器的项目,但接收器有问题(接收器型号:TSOP1756)。 从协议来看,它适用于 56khz,但问题是,我可以更改代码来解码来自不同/多频率的红外信号,例如 38khz 的电视遥控器和 40khz 的交流遥控器。 我正在为我的项目使用 IRremote 库。

我尝试过不同的红外接收器型号,但它们都不能以不同的频率工作。

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

我期望收到十六进制代码,但当我以不同频率发送信号时,我立即收到 FFFFFFFF。

如果有人帮助我,我将不胜感激

c++ arduino arduino-ide receiver
2个回答
0
投票

您对红外传输原理的理解错误。

为了使接收器能够将控制信号与背景红外噪声区分开来,信号被调制为更高的频率。 IE。它不是连续的红外光,而是一系列短暂的闪光。系列之间的距离编码零和一,但闪光本身具有预定义的频率。在您的示例中,它是 56kHz。

接收器内置电路,可滤除背景噪声,并检测何时出现特定频率的闪烁,并向其输出引脚输出逻辑电平。其原理图旨在仅检测一种特定频率。 例如 TSOP1736 - 36kHz、TSOP1740 - 40kHz、TSOP1756 - 56kHz。

只有输出,不接收来自MCU的任何控制逻辑。

所以,答案是:您无法通过软件更改调制频率。您必须更换其他型号的接收器。


0
投票

¿ 现代更高的时钟频率 ESP32 可以直接从光电晶体管接收并自行进行滤波和 AGC 吗?也许用 FFT 或倍频(卷积)频率位移?我想知道这是否可行,因为如果您想要一个通用接收器,您需要处理多个载波频率。

© www.soinside.com 2019 - 2024. All rights reserved.