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 버스에 연결 가능
'프로그래밍 > 시스템' 카테고리의 다른 글
시리얼 통신 소프트웨어 실습 - 1. Python을 활용한 시리얼 통신 (pyserial 라이브러리) (0) | 2025.02.10 |
---|---|
시리얼 통신 하드웨어 및 연결 실습 - 3. 송신(TX)과 수신(RX) 핀 개념 및 배선 실습 (0) | 2025.02.10 |
시리얼 통신 하드웨어 및 연결 실습 - 1. 시리얼 포트 개념 및 USB-to-Serial 변환기 이해 (0) | 2025.02.10 |
시리얼 통신 인터페이스 - 3. RS-485의 고급 개념과 실용적 고려 사항 (0) | 2025.02.10 |
시리얼 통신 인터페이스 - 2. RS-485 개요 및 RS-232와의 차이점 (0) | 2025.02.10 |