멀티플렉서 : 알아야 할 모든 것

멀티플렉서 칩

Un 멀티플렉서 여러 입력과 단일 데이터 출력이있는 조합 회로입니다. 이를 통해 출구 중 하나의 통로만을 선택하여 출구로 보낼 수 있습니다. 즉, 입력에있는 데이터 또는 비트를 취하고 나머지 입력은 무시할 입력을 선택할 수 있습니다. 이것은 여러 연결이 단일 라인 또는 버스를 공유해야 할 때 전자 제품에서 매우 일반적입니다.

즉, 멀티플렉서를 제어하여 항상 적절한 입력을 선택하십시오. 연결이 하나뿐 임에도 불구하고 여러 입력 장치가 서로 간섭하지 않고 동시에 작업 할 수있는 이유는 무엇입니까? 또한 디멀티플렉서는 일반적으로 많은 프로젝트에서 멀티플렉서와 ​​함께 사용된다는 것을 알아야합니다.

멀티플렉서 란 무엇입니까?

멀티플렉서

이러한 조합 서비스는 멀티플렉서 일반적으로 복잡하지 않습니다. 이들은 데이터 입력의 양에 따라 몇 개의 논리 게이트로 구성되며 제어는 복잡성을 증가시킬 수 있습니다. 일반적으로 다음을 포함합니다. 2n 입력 및 단일 출력 및 제어 라인. 그리고 이들 중 여러 개를 조합하여 사용 가능한 티켓 수를 늘릴 수 있습니다.

다음과 같이 이해할 수 있습니다. 선택자. 예를 들어, 두 개의 입력이있는 매우 단순한 하나가 있다고 가정 해보십시오. 해당 회로에는 단일 제어 입력 및 출력이 있습니다. 입력이 A와 B 인 경우 제어 입력을 사용하여 해당 값을 출력 S에 전달하는 사람이 A인지 또는 수행하는 사람이 B인지 제어 할 수 있습니다. 이렇게하려면 제어 라인 C의 값만 변경하면됩니다. 예를 들어 C = 0이면 A가되고 C = 1이면 B가됩니다.

아시다시피 더 많은 입력이 필요하면 더 많이 필요합니다. 제어 입력 선택을 위해. 실제로 멀티플렉서는 특수한 유형의 디코더로, 포함 된 각 AND 게이트에 대한 인 에이블 신호와 출력 및 AND 게이트 사이에 OR 게이트가 있습니다. 그렇게하면 쉽게 선택할 수 있습니다.

응용 프로그램은 사용할 수 있습니다. 여러 가지:

  • 여러 입력이있을 때 단일 버스 또는 라인을 공유하는 입력 선택기.
  • 직렬 변환기를 사용하여 각 입력 값을 순서대로 가져옵니다.
  • 다양한 장치의 다양한 데이터에 대해 동일한 연결 라인을 사용하여 다중 전송합니다. 예를 들어, 마이크로 컨트롤러의 동일한 데이터 핀을 사용하여 여러 장치 출력을 연결하려고하지만 정보를 한 번에 하나씩 만 보낼 수 있다고 가정 해보십시오.
  • 논리 기능 등을 수행합니다.

멀티플렉서 유형

전송이 분할되는 방식에 따라 다양한 방식 멀티플렉서 또는 멀티플렉싱 :

  • 주파수 분할
  • 시분할
  • 코드 분할
  • 나누기 파장

상상할 수 있듯이 주파수, 시계, 이진 코드 및 파장에 따라 제어됩니다. 하지만 여기서는 관습에만 관심이 있습니다 ...

유형 외에도 디멀티플렉서와 ​​마찬가지로 다음과 같이 찾을 수 있습니다. 더 많거나 적은 채널 DIY 프로젝트에 필요한 것에 따라 2, 4, 8, 16 등.

디멀티플렉서와의 차이점

디멀티플렉서

디지털 전자 제품에는 디멀티플렉서, 멀티플렉서의 길항제 인 조합 회로. 이 경우 하나의 정보 입력 만있을 것이지만 다양한 출력을 통해 전송할 수 있습니다. 즉,이 경우 제어 신호는 입력 데이터가 전송되는 출력을 결정합니다.

Si 디멀티플렉서를 멀티플렉서의 출력에 연결합니다., 두 장치의 작동 방식을 배우는 데 매우 유용한 시스템을 가질 수 있습니다.

구입처?

멀티플렉서 디멀티플렉서

이러한 장치는 일반적으로 딥 칩 아주 간단합니다. 디멀티플렉서의 경우 다양한 브랜드와 여러 입력 또는 출력에서 ​​찾을 수 있습니다. 또한 다양한 전문 매체 나 온라인 상점에서 쉽게 찾을 수 있습니다. 좋은 가격에 구매하는 데 관심이 있다면 다음은 프로젝트를 시작하는 좋은 예가 될 수 있습니다.

나는 당신에게 읽을 것을 권합니다 데이터 시트 제조업체로부터 명확한 아이디어를 얻습니다., 구입 한 제조업체 또는 유형에 따라 다를 수 있습니다.

CD74hc4067

또한 보시다시피 두 장치를 하나로 묶을 수있는 아주 좋은 모듈도 있습니다. 그것은의 경우입니다 알려진 CD74HC4067, MUX / DEMUX를 사용하여 양방향 방식으로 16 개의 banal을 사용할 수 있도록 도와주는 TTL 기술이 적용된 작은 모듈입니다. 즉, 일종의 스마트 스위치로 사용할 수 있습니다.

따라서 Arduino는 최대 1 개까지 읽고 쓸 수 있습니다.6 가지 기기 핀 5 개만 사용하며, 그중 4 개는 제어에 사용되며, 추가 핀은 선택한 채널에 따라 읽거나 쓸 신호를 수집하는 데 사용됩니다.

이 칩의 좋은 점은 디지털 및 아날로그 신호 모두에서 작동, 따라서 아날로그 및 기타 디지털 칩에서 작동하는 많은 센서와 다양한 전자 요소와 호환됩니다. 그것은 큰 다양성을 제공합니다. 그렇기 때문에 I / O 확장기 또는 입력 및 출력 증폭기라고도합니다.

당신은 그것을 위해 그것을 사용할 수도 있습니다 직렬 포트를 통한 통신, I2C 버스 또는 우리가 이미 다른 경우에 말한 SPI.

물론 그와 함께 일하기 전에 전압과 전류를 충족 이 회로를 손상시키지 않도록 허용합니다. 예를 들어,이 경우 최대 20mA와 2 ~ 6v의 전압을 제공 할 수 있습니다. 그러나 더 높은 전류로 작업하려면 릴레이를 사용할 수 있습니다 또는 트랜지스터를 통해.

Arduino와 통합

블루투스가있는 Arduino

한 형태의 Arduino 보드에 더 많은 입력이 있거나 더 많은 출력이 있습니다., 이러한 멀티플렉서 및 디멀티플렉서를 사용하는 것입니다. 그들과 함께 당신은 더 많은 핀을 가진 더 높은 가격의 보드를 구입하거나 필요한 모든 것을 연결하기 위해 다른 트릭을 사용할 필요가 없습니다.

예를 들어, MUX 및 DEMUX 모듈 단일 요소에 두 가지를 모두 포함한 다음 Arduino를 사용하여 프로젝트에 간단한 방식으로 통합 할 수 있습니다. CD74HC4067을 사용하면 매우 쉽게 연결할 수 있으므로 다음 규칙을 따라야합니다.

  • MUX / DEMUX 칩의 Vcc는 Arduino의 Vcc 또는 5V에 연결해야합니다.
  • GND, 접지, Arduino의 GND에 연결해야합니다.
  • S0, S1, S2, S3로 표시된 핀은 D8, D9, D10 및 D11과 같은 XNUMX 개의 Arduino 디지털 I / O로 활성 채널을 제어하는 ​​핀입니다.
  • EN도 활성화되어 멀티플렉서로 작동하므로 Arduino의 GND에 연결할 수 있습니다.
  • 그리고 SIG는 선택한 채널을 결정하는 출력 신호입니다. Arduino 또는 출력을 읽어야하는 모든 장치에 연결할 수 있습니다. 이 경우 Arduino 자체에서 값을 얻기 위해 A0에 연결했습니다.
  • 모듈의 다른 쪽 끝에는이 경우 장치에 연결할 수있는 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 Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   자비에르 오티즈

    안녕하세요, 저는 74 개의 적외선 장애물 센서의 입력에 4067hc16을 사용하는 것과 같은 프로젝트를 수행하고 있으며 각 센서는 저를 다른 출력으로 전환시킵니다. 음, arduino 메가로 할 수 있지만 50 개의 적외선 센서를 사용해야하고 각 센서가 출력, 즉 50 개의 출력을 켜야한다면 센서 입력에 744067을, 출력에 tlc5940을 사용할 생각입니다. 그러나 프로그래밍 코드는 무엇입니까? 미리 도움을 주셔서 감사합니다.