多路复用器:您需要了解的一切

多路复用器芯片

Un 多路复用器 是具有多个输入和单个数据输出的组合电路。 这样,可以选择仅其入口之一的通道以将其引导至其出口。 也就是说,您可以选择从哪个输入中获取输入中的数据或位,而忽略其余的输入。 当多个连接需要共享一条线路或总线时,这在电子产品中非常常见。

也就是说,通过控制多路复用器,您可以 始终选择适当的输入。 这使得尽管只有一个连接,但您可以同时使用多个输入设备而不会彼此干扰,这是有可能的。 此外,您应该知道,在许多项目中,多路分解器通常与多路复用器结合使用...

什么是多路复用器?

多路复用器

这些组合服务称为 多路复用器 它们通常并不复杂。 它们由几个逻辑门组成,具体取决于它们的数据输入数量,控制可能会增加复杂性。 它们通常包括 2n 输入和单个输出,以及控制线。 您可以将它们中的几个结合使用以增加可用票证的数量。

可以理解为 选择器。 例如,假设您有一个非常简单的输入,其中有两个输入,这是可以构建的最简单的输入。 该电路将具有单个控制输入和输出。 如果输入是A和B,则可以通过控制输入来控制是将值传递给输出S的是A还是将值传递给输出S的是B。 为此,您只需要更改控制线C的值即可。例如,如果C = 0,它将是A;如果C = 1,它将是B。

如您所知,如果有更多的输入,将需要更多的输入 控制输入 供选择。 实际上,多路复用器是一种特殊的解码器,每个包含的与门以及输出和与门之间的或门具有使能信号。 这样就可以很容易地选择它。

至于它的应用,你可以使用它 对于很多事情:

  • 当您有多个输入时,输入选择器可共享一条总线或线路。
  • 串行器,以便按顺序获取其每个输入的值。
  • 对于来自不同设备的各种数据,使用相同的连接线进行多路传输。 例如,假设您要使用微控制器的同一数据引脚来连接多个设备输出,但是一次只能发送一个信息...
  • 执行逻辑功能等

多路复用器类型

根据传输方式的不同,有 各种类型 多路复用器或多路复用:

  • 按频分
  • 按时分
  • 按代码划分
  • 按除法 波长

可以想象,它们受频率,时间,时钟,二进制代码和波长的控制。 但是在这里我只对常规...感兴趣

除了类型,与解复用器一样,您可以通过以下方式找到它 或多或少的渠道 2、4、8、16等,具体取决于您的DIY项目所需。

与解复用器的区别

解复用器

在数字电子学中有 解复用器,是多路复用器的对手的组合电路。 在这种情况下,将只有一个信息输入,但是可以通过其各种输出进行传输。 换句话说,在这种情况下,控制信号将决定将输入数据传输到哪个输出。

Si 您将解复用器连接到复用器的输出,您可以拥有一个非常有用的系统来学习两种设备的工作方式。

去哪买?

多路复用器解复用器

这些设备通常在以下位置实现 浸片 很简单的。 在作为解复用器的情况下,可以在各种各样的品牌中找到它们,并具有大量的输入或输出。 此外,在各种专门的媒体或在线商店中也很容易找到它们。 如果您有兴趣以高价购买一个,那么可以从您的项目开始的这些很好的例子:

我建议你阅读 数据表 从他们的制造商那里了解他们的想法 引脚,因为它们可能会根据您购买的制造商或类型而有所不同。

cd74hc4067

另外,如您所见,还有非常好的模块,可让您将两个设备合而为一。 是这样的 已知的CD74HC4067,这是一种采用TTL技术的小型模块,可通过安装MUX / DEMUX来帮助您双向处理其16个面板。 也就是说,您可以将其用作一种智能开关。

因此,您的Arduino最多可以读写16种不同的设备 仅5个引脚,其中4个用于控制,另外XNUMX个用于收集要根据所选通道读取或写入的信号。

关于这款芯片的好处是 适用于数字和模拟信号,使其与许多在模拟和其他数字芯片上工作的传感器以及多种不同的电子元件兼容。 它具有出色的多功能性。 这就是为什么它们也被称为I / O扩展器或输入和输出放大器的原因。

您甚至可以将其用于 通过串口通讯, I2C总线 或我们在其他场合已经谈到的SPI。

当然,在与他合作之前,您必须确保 满足电压和电流 该电路允许不损坏它。 例如,在这种情况下,它可以提供高达20 mA的电流以及2至6v的电压。 但是,如果您想使用更高的电流 你可以用一个继电器 或通过晶体管。

与Arduino集成

带有蓝牙的Arduino

一种形式 在Arduino板上有更多输入或更多输出,就是使用这些多路复用器和多路分解器。 有了它们,您将不必购买价格更高,带有更多引脚的电路板,也不必使用其他技巧来连接所需的所有东西。

例如,您可以使用 MUX和DEMUX模块 以便将两者都包含在一个元素中,然后使用Arduino以一种简单的方式将其集成到您的项目中。 使用CD74HC4067,您可以轻松连接它,因此必须遵循以下规则:

  • MUX / DEMUX芯片的Vcc必须将其连接到Arduino的Vcc或5V。
  • GND,接地,您必须将其连接到Arduino的GND。
  • 标记为S0,S1,S2,S3的引脚是控制活动通道的引脚,具有四个Arduino数字I / O,例如D8,D9,D10和D11。
  • EN也启用,因此它可以作为多路复用器使用,您可以将其连接到Arduino的GND。
  • SIG是确定所选通道的输出信号。 它可以连接到Arduino或需要读取输出的任何设备。 在这种情况下,我已将其连接到A0以从Arduino本身获取值。
  • 在这种情况下,在模块的另一端,您将具有可以连接到设备的输入C0-C10。

连接后,Arduino代码可以很简单。 这 Arduino IDE草图作为多路复用器 可以是以下内容(此代码只会分别关闭和打开它们的通道,但是您可以对其进行修改以创建所需的项目):

const int muxSIG = A0;
const int muxS0 = 8;
const int muxS1 = 9;
const int muxS2 = 10;
const int muxS3 = 11;
 
int SetMuxChannel(byte channel)
{
   digitalWrite(muxS0, bitRead(channel, 0));
   digitalWrite(muxS1, bitRead(channel, 1));
   digitalWrite(muxS2, bitRead(channel, 2));
   digitalWrite(muxS3, bitRead(channel, 3));
}
 
void setup()
{
   pinMode(muxSIG, OUTPUT);
   pinMode(muxS0, OUTPUT);
   pinMode(muxS1, OUTPUT);
   pinMode(muxS2, OUTPUT);
   pinMode(muxS3, OUTPUT);
}
 
void loop()
{
   for (byte i = 0; i < 16; i++)
   {
      SetMuxChannel(i);
      digitalWrite(muxSIG, HIGH);
      delay(200);
      digitalWrite(muxSIG, LOW);
      delay(200);
   }
}

如果要将其用作DEMUX,则应仅考虑C0-C10作为输出,而SIG作为输入。 万一你想要 用作解复用器,代码将像这样更改:

onst int muxSIG = A0;
const int muxS0 = 8;
const int muxS1 = 9;
const int muxS2 = 10;
const int muxS3 = 11;
 
int SetMuxChannel(byte channel)
{
   digitalWrite(muxS0, bitRead(channel, 0));
   digitalWrite(muxS1, bitRead(channel, 1));
   digitalWrite(muxS2, bitRead(channel, 2));
   digitalWrite(muxS3, bitRead(channel, 3));
}
 
void setup()
{
   Serial.begin(9600);
   pinMode(muxS0, OUTPUT);
   pinMode(muxS1, OUTPUT);
   pinMode(muxS2, OUTPUT);
   pinMode(muxS3, OUTPUT);
}
 
void loop()
{
   for (byte i = 0; i < 16; i++)
   {
      SetMuxChannel(i);
      byte muxValue = analogRead(muxSIG);
 
      Serial.print(muxValue);
      Serial.print("\t");
   }
   Serial.println();
   delay(1000);
}

请记住,您可以在我们的帮助下获取更多信息 免费的Arduino编程课程.


发表评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   泽维尔·奥尔蒂斯(Xavier Ortiz)

    您好,我正在做一个项目,就像将74hc4067用于16个红外障碍传感器的输入一样,每个传感器为我点亮不同的输出。 好吧,如果我可以使用arduino mega做到这一点,但是我需要使用50个红外传感器,并且每个红外传感器都打开一个输出,即50个输出,那么我正在考虑将多个744067用于传感器输入,将tlc5940用于输出,但是在什么是编程代码中,我有点迷路,在此先感谢您的帮助。