시리얼 통신 하드웨어 및 연결 실습 - 2. RS-485 모듈(MAX485)과 마이크로컨트롤러 연결

2025. 2. 10. 15:16프로그래밍/시스템

2장: RS-485 모듈(MAX485)과 마이크로컨트롤러 연결

RS-485는 장거리 통신과 멀티 드롭(Multi-Drop) 네트워크를 지원하는 강력한 직렬 통신 방식입니다.
그러나 RS-485 신호는 마이크로컨트롤러(UART)에서 직접 이해할 수 없으므로, RS-485 모듈(MAX485)을 사용하여 TTL(UART) 신호로 변환해야 합니다.

이번 장에서는 RS-485 모듈(MAX485)의 개요, 마이크로컨트롤러와의 연결 방법, 송·수신 전환 방식, TX/RX 및 A/B 선 연결 방법을 자세히 살펴보겠습니다.


1. RS-485 모듈(MAX485) 개요

✅ MAX485란?

MAX485는 RS-485 신호를 TTL(UART) 신호로 변환하는 드라이버 칩입니다.
이 칩을 사용하면 마이크로컨트롤러(UART)와 RS-485 네트워크 간의 데이터 송수신이 가능해집니다.

📌 MAX485의 역할

  • RS-485 신호UART(TTL) 신호(3.3V/5V) 변환
  • 장거리(최대 1200m) 통신 가능
  • 멀티 드롭(Multi-Drop) 방식 지원 (최대 32개 장치 연결 가능)
  • 송·수신 전환 기능(DE/RE 핀 사용)

📌 MAX485를 사용하면 마이크로컨트롤러가 RS-485 신호를 쉽게 해석할 수 있음.


2. RS-485 신호를 마이크로컨트롤러가 이해할 수 있는 TTL 신호로 변환

RS-485는 차동 신호(Differential Signal) 방식으로 동작합니다.
즉, A(+)와 B(-) 두 개의 선을 이용하여 데이터를 전송합니다.
이 방식은 노이즈 저항성이 뛰어나고 장거리에서도 신뢰성이 높은 데이터 전송이 가능합니다.

📌 MAX485가 하는 일

  • A(+)와 B(-) 차동 신호를 TTL(UART) 신호로 변환
  • UART(TX, RX) 신호를 RS-485 신호로 변환
  • DE/RE 핀을 통해 송·수신 모드를 전환

💡 마이크로컨트롤러(UART)는 기본적으로 차동 신호를 이해할 수 없으므로, MAX485 모듈을 통해 변환이 필요!


3. 마이크로컨트롤러와 RS-485 모듈 연결 방법

RS-485 모듈(MAX485)과 마이크로컨트롤러(UART)를 연결할 때는 다음 핀들을 사용합니다.

✅ RS-485 모듈(MAX485) 핀 설명

핀 이름 설명
VCC 전원 (3.3V 또는 5V)
GND 공통 접지
RO (Receiver Output) RS-485 → TTL 변환된 데이터 (RX)
DI (Driver Input) TTL → RS-485 변환된 데이터 (TX)
DE (Driver Enable) 송신 모드 활성화 (HIGH: 송신, LOW: 수신)
RE (Receiver Enable) 수신 모드 활성화 (LOW: 수신, HIGH: 송신)
A (+) RS-485 차동 신호 (A 선)
B (-) RS-485 차동 신호 (B 선)

📌 DE와 RE 핀을 제어하여 송·수신 모드를 변경해야 함.


4. DE/RE 핀을 활용한 송·수신 전환 방식

RS-485는 반이중(Half-Duplex) 방식이므로, 송신(TX)과 수신(RX)을 번갈아 수행해야 합니다.
이를 위해 DE(Driver Enable) 및 RE(Receiver Enable) 핀을 활용하여 송·수신 모드를 전환할 수 있습니다.

✅ 송·수신 전환 방식

핀 설정 모드  설명
DE = HIGH, RE = HIGH 송신(TX) 데이터를 보낼 때
DE = LOW, RE = LOW 수신(RX) 데이터를 받을 때

📌 DE와 RE 핀을 동시에 HIGH로 하면 송신 모드, 동시에 LOW로 하면 수신 모드.
📌 하드웨어적으로 DE와 RE를 연결해도 됨 (DE = RE).

💡 데이터를 보낼 때는 송신 모드로 전환한 후 전송하고, 수신할 때는 다시 수신 모드로 변경해야 함.


🛠️ 송·수신 전환 코드 예제 (Arduino)

#define DE_PIN 2  // 송신/수신 전환 핀
#define RE_PIN 2  // DE와 RE를 같이 연결

void setup() {
    pinMode(DE_PIN, OUTPUT);
    digitalWrite(DE_PIN, LOW);  // 기본값은 수신 모드
    Serial.begin(9600);
}

void sendData(String message) {
    digitalWrite(DE_PIN, HIGH);  // 송신 모드
    delay(10);
    Serial.print(message);
    delay(10);
    digitalWrite(DE_PIN, LOW);   // 다시 수신 모드
}

void loop() {
    sendData("Hello RS-485!");
    delay(1000);
}

📌 DE/RE 핀을 HIGH로 설정하면 송신, LOW로 설정하면 수신 모드.
📌 데이터를 보낸 후 다시 수신 모드로 전환해야 다른 장치가 응답할 수 있음.


5. TX, RX, A/B 선 연결 및 배선 방법

RS-485는 두 개의 차동 신호 선(A, B)을 사용하여 데이터를 전송합니다.
따라서 마이크로컨트롤러의 TX, RX 핀을 RS-485 모듈의 DI, RO에 연결해야 합니다.

✅ 마이크로컨트롤러 ↔ MAX485 연결 방법

마이크로컨트롤러 MAX485 모듈
TX (송신) DI
RX (수신) RO
DE (송신 활성화) DE
RE (수신 활성화) RE
GND GND
VCC (3.3V/5V) VCC

📌 RS-485의 A(+)와 B(-) 선은 다른 RS-485 장치의 A(+)와 B(-)에 연결해야 함.


🛠️ RS-485 배선 예제

[마이크로컨트롤러] → [MAX485 모듈] → [RS-485 네트워크]
-----------------------------------------------------
TX  -----> DI       A(+)  -----> A(+) (다른 장치)
RX  <----- RO       B(-)  -----> B(-) (다른 장치)
DE  -----> DE       GND  -----> GND (공통 접지)
RE  -----> RE

📌 RS-485는 여러 장치를 연결할 수 있으며, 모든 장치는 A(+)와 B(-) 선을 공유해야 함.


📌 요약

MAX485는 RS-485 신호를 UART(TTL) 신호로 변환하는 모듈
DE/RE 핀을 활용하여 송·수신 모드를 제어해야 함 (DE=HIGH: 송신, DE=LOW: 수신)
TX/RX 핀을 DI/RO에 연결하고, RS-485의 A/B 선은 다른 장치의 A/B와 연결해야 함
RS-485는 멀티 드롭(Multi-Drop) 방식으로 여러 장치를 동일한 A/B 버스에 연결 가능