Un bộ ghép kênh là một mạch tổ hợp có một số đầu vào và một đầu ra dữ liệu duy nhất. Với điều này, chỉ có thể chọn lối đi của một trong các lối vào của nó để dẫn nó đến lối ra của nó. Nghĩa là, bạn có thể chọn từ đầu vào nào để lấy dữ liệu hoặc bit ở đầu vào và bỏ qua phần còn lại của đầu vào. Điều này rất phổ biến trong thiết bị điện tử khi một số kết nối cần chia sẻ một đường dây hoặc một bus.
Đó là, bằng cách điều khiển bộ ghép kênh, bạn có thể chọn đầu vào thích hợp mọi lúc. Điều gì làm cho nó có thể là mặc dù chỉ có một kết nối, bạn có thể làm việc với nhiều thiết bị đầu vào cùng một lúc mà chúng không can thiệp vào nhau. Ngoài ra, bạn nên biết rằng một bộ phân kênh thường được sử dụng cùng với bộ ghép kênh trong nhiều dự án ...
Bộ ghép kênh là gì?
Các dịch vụ kết hợp này được gọi là bộ ghép kênh chúng thường không phức tạp. Chúng được tạo thành từ một vài cổng logic tùy thuộc vào lượng dữ liệu đầu vào và việc kiểm soát có thể làm tăng độ phức tạp. Chúng thường bao gồm 2n đầu vào và một đầu ra duy nhất, cũng như các đường điều khiển. Và bạn có thể sử dụng kết hợp một số trong số chúng để tăng số lượng vé có sẵn.
Nó có thể được hiểu là một bộ chọn. Ví dụ, hãy tưởng tượng bạn có một cái rất đơn giản với hai đầu vào, cái đơn giản nhất có thể được tạo ra. Mạch đó sẽ có một đầu vào và đầu ra điều khiển duy nhất. Nếu đầu vào là A và B, với đầu vào điều khiển, bạn có thể kiểm soát xem liệu A là người chuyển giá trị của nó cho đầu ra S hay chính là B thực hiện điều đó. Để làm điều này, bạn chỉ phải thay đổi giá trị của dòng điều khiển C. Ví dụ, nếu C = 0 thì nó sẽ là A và nếu C = 1 thì nó sẽ là B.
Như bạn sẽ hiểu, nếu có nhiều đầu vào hơn, sẽ cần nhiều hơn kiểm soát đầu vào để lựa chọn. Trên thực tế, bộ ghép kênh là một loại bộ giải mã đặc biệt, với tín hiệu kích hoạt cho mỗi cổng AND đi kèm và một cổng OR giữa đầu ra và các cổng AND. Bằng cách đó, nó có thể được lựa chọn dễ dàng.
Đối với các ứng dụng của nó, bạn có thể sử dụng nó cho vô số thứ:
- Bộ chọn đầu vào để chia sẻ một bus hoặc đường khi bạn có nhiều đầu vào.
- Bộ nối tiếp để nó nhận giá trị của từng đầu vào theo thứ tự.
- Để truyền đa kênh sử dụng cùng một đường kết nối cho nhiều dữ liệu khác nhau từ các thiết bị khác nhau. Ví dụ: hãy tưởng tượng rằng bạn muốn sử dụng cùng một chân dữ liệu của một bộ vi điều khiển để kết nối nhiều đầu ra của thiết bị, nhưng nó chỉ có thể gửi thông tin một lần ...
- Thực hiện các chức năng logic, v.v.
Các loại bộ ghép kênh
Tùy thuộc vào cách thức truyền dẫn được phân chia, có đa dạng chủng loại bộ ghép kênh hoặc ghép kênh:
- Theo phân chia tần số
- Theo phân chia thời gian
- Theo phân chia mã
- Theo bộ phận của bước sóng
Như bạn có thể tưởng tượng, chúng được điều khiển bằng tần số, theo thời gian bằng đồng hồ, mã nhị phân và theo bước sóng. Nhưng ở đây tôi chỉ quan tâm đến ...
Ngoài các loại, như với bộ tách kênh, bạn có thể tìm thấy nó với nhiều hoặc ít kênh 2, 4, 8, 16, v.v., tùy thuộc vào những gì bạn cần cho các dự án DIY của mình.
Sự khác biệt với bộ phân kênh
Trong điện tử kỹ thuật số có bộ tách kênh, một mạch tổ hợp là mạch đối kháng của bộ ghép kênh. Trong trường hợp này sẽ chỉ có một đầu vào thông tin, nhưng nó có thể được truyền qua các đầu ra khác nhau của nó. Nói cách khác, trong trường hợp này, các tín hiệu điều khiển sẽ quyết định dữ liệu đầu vào được chuyển đến đầu ra nào.
Si bạn kết nối bộ phân kênh với đầu ra của bộ ghép kênh, bạn có thể có một hệ thống rất hữu ích để tìm hiểu cách hoạt động của cả hai thiết bị.
Nơi để mua?
Các thiết bị này thường được triển khai trong nhúng khoai tây chiên rất đơn giản. Bạn có thể tìm thấy chúng trong nhiều nhãn hiệu và với một số đầu vào hoặc đầu ra trong trường hợp là một bộ phân kênh. Ngoài ra, chúng dễ dàng được tìm thấy trong các phương tiện truyền thông chuyên dụng khác nhau hoặc các cửa hàng trực tuyến. Nếu bạn quan tâm đến việc mua một cái với giá tốt, đây có thể là những ví dụ tốt để bắt đầu với các dự án của bạn:
- Bộ ghép kênh 8 kênh CNTT
- Bộ ghép kênh 8 kênh perel
- Không tìm thấy sản phẩm.
- CD74HC4067 Bộ ghép kênh / phân kênh 16 kênh
Tôi khuyên bạn nên đọc các bảng dữ liệu từ các nhà sản xuất của họ để có được ý tưởng rõ ràng về pinout, vì chúng có thể khác nhau tùy thuộc vào nhà sản xuất hoặc loại bạn đã mua.
cd74hc4067
Ngoài ra, như bạn có thể thấy, cũng có những mô-đun rất tốt cho phép bạn có cả hai thiết bị trong một. Đó là trường hợp của CD74HC4067 đã biết, một mô-đun nhỏ với công nghệ TTL có thể giúp bạn làm việc với 16 thanh của nó theo cách hai chiều, bằng cách có MUX / DEMUX. Tức là bạn có thể sử dụng nó như một loại công tắc thông minh.
Do đó, Arduino của bạn có thể đọc và ghi tối đa 16 thiết bị khác nhau chỉ với 5 chân, 4 trong số đó được sử dụng để điều khiển và một chân bổ sung để thu tín hiệu được dùng để đọc hoặc ghi theo kênh đã chọn.
Điều tốt về con chip này là hoạt động với cả tín hiệu kỹ thuật số và tín hiệu tương tự, vì vậy nó tương thích với nhiều cảm biến hoạt động trên các chip analog và kỹ thuật số khác, cũng như vô số các phần tử điện tử khác nhau. Nó mang lại tính linh hoạt tuyệt vời. Đó là lý do tại sao chúng còn được gọi là bộ mở rộng I / O hoặc bộ khuếch đại đầu vào và đầu ra ...
Bạn thậm chí có thể sử dụng nó cho thông tin liên lạc qua cổng nối tiếp, xe buýt I2C hoặc SPI, mà chúng tôi đã nói trong những dịp khác.
Tất nhiên, trước khi làm việc với anh ấy, bạn phải chắc chắn rằng đáp ứng các điện áp và dòng điện thừa nhận mạch này để không làm hỏng nó. Ví dụ, trong trường hợp này, nó có thể cung cấp lên đến 20 mA, cũng như điện áp từ 2 đến 6v. Tuy nhiên, nếu bạn muốn làm việc với dòng điện cao hơn bạn có thể sử dụng một rơ le hoặc thông qua một bóng bán dẫn.
Tích hợp với Arduino
Một cách để có nhiều đầu vào hơn trên bảng Arduino của bạn hoặc nhiều đầu ra hơn, là sử dụng các bộ ghép kênh và phân kênh này. Với chúng, bạn sẽ tránh phải mua một bảng giá cao hơn có nhiều chân cắm hơn, hoặc phải sử dụng các thủ thuật khác để kết nối mọi thứ bạn cần.
Ví dụ, bạn có thể sử dụng Mô-đun MUX và DEMUX để có thể có cả hai trong một phần tử duy nhất và sau đó tích hợp nó một cách đơn giản vào dự án của bạn với Arduino. Với CD74HC4067, bạn có thể kết nối nó rất dễ dàng, vì vậy bạn phải tuân theo các quy tắc sau:
- Vcc của chip MUX / DEMUX bạn phải kết nối nó với Vcc của Arduino hoặc 5V.
- GND, nối đất, bạn phải kết nối nó với GND của Arduino.
- Các chân được đánh dấu S0, S1, S2, S3 là các chân điều khiển kênh hoạt động, với bốn I / O kỹ thuật số Arduino, chẳng hạn như D8, D9, D10 và D11.
- EN cũng đang bật, để nó hoạt động như một bộ ghép kênh, bạn có thể kết nối nó với GND của Arduino.
- Và SIG là tín hiệu đầu ra sẽ xác định kênh đã chọn. Nó có thể được kết nối với Arduino hoặc với bất kỳ thiết bị nào cần đọc đầu ra. Trong trường hợp này, tôi đã kết nối nó với A0 để lấy các giá trị từ chính Arduino.
- Ở đầu kia của mô-đun, bạn sẽ có các đầu vào trong trường hợp này, là C0-C10 mà bạn có thể kết nối với thiết bị của mình.
Sau khi kết nối, mã Arduino có thể đơn giản. Các Bản phác thảo Arduino IDE dưới dạng bộ ghép kênh Nó có thể như sau (mã này sẽ chỉ tắt và trên các kênh của họ tương ứng, nhưng bạn có thể sửa đổi nó để tạo dự án bạn muốn):
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); } }
Nếu bạn muốn sử dụng nó như DEMUX, bạn chỉ nên xem xét rằng C0-C10 sẽ là đầu ra và SIG sẽ là đầu vào. Trong trường hợp bạn muốn sử dụng nó như một bộ phân kênh, mã sẽ thay đổi như thế này:
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); }
Hãy nhớ rằng bạn có thể biết thêm thông tin với sự trợ giúp của khóa học lập trình Arduino miễn phí.
Xin chào, tôi đang thực hiện một dự án, việc tôi làm là sử dụng 74hc4067 cho đầu vào của 16 cảm biến chướng ngại vật hồng ngoại và mỗi cảm biến chuyển cho tôi một đầu ra khác nhau. Chà, nếu tôi có thể làm điều đó với arduino mega nhưng tôi cần sử dụng 50 cảm biến hồng ngoại và mỗi cảm biến sẽ bật một đầu ra, tức là 50 đầu ra, tôi đang nghĩ đến việc sử dụng một số 744067 cho đầu vào cảm biến và tlc5940 cho đầu ra, nhưng trong mã lập trình là gì, tôi hơi mất mát, cảm ơn trước sự giúp đỡ của bạn.