RS232 (Recommended Standard 232)

/ UART  |   RS232  |   RS485  |   I2C  |   SPI  |   1 Wire  |   Parallel

Main Picture

1. RS232 (UART 참고)

     RS232 통신은 앞페이지(UART)에서 이야기한 신호ㅇ의 흐름과 동일하다 다만 전압이 TTL 신호에 비하여 높고 부호가 반대로 되어있다. RS232의 신호아래 그림에서 볼 수 있듯이 부호가 TTL 신호와 반대로 되어있으며 전압도 High인경우 -12 V, Low인 경우 +12 V로 되어있으며, 많은 측정 장비에서 제공하고 있다.


TTL 신호와 RS232 신호의 전압 비교


     RS232 신호의 흐름은 앞 페이지 (UART) 에서 이야기한 것과 같고, 위 그림과 같이 Start Bit(St)을 시작으로 8 개(또는 7 개)의 Data Bit (D0 ~ D7), 그리고 1 개의 Stop Bit(Sp)으로 이루어져 있다. 때로는 Stop Bit전에 Parity Bit을 사용하는 경우도 있다.
Main Picture
RS232 Connector (D-Sub9) Cable 연결 방법

2. TTL to RS232

     Microcontroller를 이용하여 RS232 통신하기위하여 전압의 부호르 맞추고 전압 높이를 맞추어 주어야 한다. 위의 그림에서 볼 수 있듯이 TTL 신호와 RS232 신호는 부호가 서로 반대이고 전압 범위도 다르다. Microcontroller에서 사용하는 신호는 일반적으로 TTL 수준으로 0 V (low), 5 V (high)의 신호를 사용하지만 RS232의 경우 부호가 반대이고 전압 레벨도 12 V (low), -12 V (high)로 많은 차이를 보이고 있다. 따라서 Microcontroller에서 사용하는 신호를 RS232에 직접사용 할 수 없다. 그러한 이유로 Microcontroller에서 사용하는 신호를 RS232에 사용하는 신호로 변환하기위하여 MAX232 IC를 사용한다.

ref) https://datasheets.maximintegrated.com/en/ds/MAX220-MAX249.pdf

     MAX232는 RS232 신호를 TTL 신호로 변환하기 위하여 가장 많이 사용하는 IC로 위 그림과 같이 두 쌍의 Rx Tx 변환기를 가지고 있어 그중 한쌍을 사용하면 된다. 사용 방법은 아래 그림과 같이 연결하면 된다. PC RS232 포트의 Tx (3번 핀)를 MAX232의 10번 핀(T2IN)에 연결하고, Rx (2번 핀)를 MAX232의 9번 핀(R2OUT)에 연결한다. Microcontroller의 경우 Tx 핀 (PIC16F18345인경우 10번 핀)을 MAX232의 8번 핀(R2IN)에 연결하고, Rx 핀 (PIC16F18345인경우 12번 핀)을 MAX232의 7번 핀(T2OUT)에 연결하면 된다.
Main Picture
MAX232를 사용한 mocrocontroller와 PC의 RS232 신호의 연결

     이렇게 연결하면 Microcontroller의 신호를 RS232 신호에 맞게, 그리고 RS232 신호가 TTL 신호에 맞게 변환 되어 microcontroller와 RS232 포트를 가지는 PC 또는 장비와 통신 가능하다.

Main Picture
ref) http://wiki.csie.ncku.edu.tw/embedded/USART
MAX232를 사용한 mocrocontroller와 PC의 RS232 신호의 연결

     만약 MAX232를 사용하지 않고 간단히 트랜지스터(2개)를 사용하는 경우 위의 회로와 같이 꾸미고 사용하면 된다.

3. Coding

     아래 코드는 LM35 온도 센서로 부터 얻은 온도를 RS232를 통하여 PC로 0.5초간격으로 보내는 것으로, PIC16F18345의 RA2에 센서 출력 핀을 연결하고 출력값을 PIC로 읽어 전압으로 환산하고 그결과를 온도로 환산한 뒤 RS232를 통하여 PC로 보내게 된다.

 RS232 설정 명령어: UART 설정과 동일 (CCS-C Manual 참고)

LM35 온도센서를 사용하여 온도값을 RS232를 통하여 PC로 보내기
									 
//* ****************************************************************************
//
//    210623 LM35 RS232 (UART)
//
//     PIC16F18345, LM35
//
//* ****************************************************************************

#include    <16f18345.h>
#device     ADC=10                          //* ADC 10bit
#fuses      HS,NOMCLR
#use         delay (clock = 20000000)

//*** Declear Parameter for UART Communication ******************
#pin_select		U1TX = PIN_B7
#pin_select		U1RX = PIN_B5
#use			        rs232 (baud=19200, parity=N, xmit=PIN_B7, rcv=PIN_B5)

void main (void)
{   int8    idx_avg ;
    int32  sum_value ;
    int16  adc_value, volt_mv ;
    float   temp ;
    
    setup_adc_ports (sAN2, VSS_FVR) ;                 //* Set Voltage Reference
    setup_vref (VREF_ON | VREF_ADC_1v024) ;     //* VREF_ADC_1v024
    setup_adc (ADC_CLOCK_INTERNAL) ;
    set_adc_channel (2) ;
    
    while (1) {
        sum_value = 0 ;
        for (idx_avg = 0;idx_avg <= 99;idx_avg++) {        
            sum_value = sum_value + read_adc () ;         //* Get ADC Value
        }
        adc_value = sum_value / 100 ;                         //* Get Average Value
        
        volt_mv = (float)adc_value * (1024. / 1023.) ;  //* Calculate milivolt with ADC Value
        temp = (float)volt_mv / 10 ;                            //* volt_mv = 0mV + 10.0mV/C, temp =  mV / 10
                
        printf ("4,2,Temp: %4.1f C\n", temp) ;             //* Send to PC via RS232
        delay_ms (500) ;
    }
}

  LM35-RS232, C Source Code





참고:

     1. RS-232
     2. RS-232 vs. TTL Serial Communication
     3. Simple TTL-RS232 Level Converter Using Transistor
     4. How RS232 works
     5. What is RS232 Protocol and How it Works?
     6. 시리얼통신(Serial Communications)의 기본/rs232c 씨리얼통신
     7. Introduction to MAX232
     8. The pin diagram of the MAX232 chip
     9. Simple RS232C Level Converter using Transistors
     10. TTL to RS232 level conversion circuit and working principle
     11. What is RS232 and What is it Used for? (YouTube)
     12. Explaining The Basics Of RS-232 Serial Communications (YouTube)