GPIO 란?
GPIO(General-Purpose Input/Output)은 범용 입출력 핀을 말하며, 범용이라는 것은 여러용도로 사용할 수 있다는 의미이다. 즉, 어떤 핀의 용도가 입력이냐 출력이냐 하는 것이 마이크로컨트롤러에서 수행되는 프로그램에 의해 결정된다는 것이다. 또한 어떤 핀이 입력으로 설정 될 경우, 그 입력 핀을 칩 내부에 있는 저항(풀업저항)을 통해 마이크로컨트롤러의 +전원 전압에 연결되게 할지의 여부도 프로그램에 의해 결정된다.
디지털 출력
GPIO핀은 디지털 출력으로 많이 사용된다. 즉 외부 장치나 부품을 ON/OFF 하는데에 사용된다.
GPIO핀에는 LED와 같은 부품을 직접 연결하여 이를 ON/OFF 하거나 포토커플러 또는 릴레이(계전기)를 연결하여 이들을 온, 오프 하는 방식을 사용하여 어떤 장치에 큰 전압이나 전류가 공급되거나 차단되도록 제어하는 역할을 수행한다.
어떤 디지털 출력 핀을 'HIGH'로 설정하면 그 출력 핀에는 마이크로컨트롤러의 전원 전압 (5V또는 3.3V)이 나타나고, 출력핀을 'LOW'로 설정하면 0V가 나타난다. 5V 마이크로컨트롤러는 3.3V의 전압으로도 대부분 동작하지만, 그 반대로 동작하지 않는 경우도 있다.
디지털 입력
마이크로컨트롤러로 하여금 들어오는 입력에 반응하여 어떤 동작을 수행하게 하려면, GPIO를 디지털 입력으로 설정한다.
마이크로컨트롤러가 어떤 디지털 입력을 읽으면 입력은 HIGH또는 LOW중에 하나로 판단된다.
보통, 디지털 입력 핀에 들어오는 입력 전압의 크기가 마이크로컨트롤러의 전원 전압보다 크면 HIGH가 되고 작으면 LOW가 된다.
크기가 3.3V인 디지털 출력을 5V 입력에 연결하는 것은 괜찮다.(3.3V의 HIGH 전압이 2.5V의 문턱전압보다 크기 때문이다.) 그러나 어떤 3.3V 디지털 입력이 5V 입력 허용 능력을 가지고 있지 않다면, 그 디지털 입력에 5V 디지털 출력을 연결하면 안된다.
아날로그 출력(PWM)
마이크로컨트롤러는 대부분 완전한 아날로그 출력을 제공한다.
이들은 0V ~ 5V(또는 3.3V) 범위에서 많은 단계 (1024 또는 4096 단계)로 전압크기(HIGH,LOW)를 변화시켜 아날로그 신호를 출력한다.
이때, 출력하는 신호는 실제로 디지털 신호 (HIGH,LOW) 신호이다. 그러나 펄스 폭 변조 (PWM)를 사용하여 디지털 신호의 펄스 폭(주기)를 바꾸어 디지털신호의 주파수을 조정한다. PWM 출력은 위와같은 원리로 모터의 속도나 LED 밝기를 조정할 수 있다.
( 실제로는 디지털신호의 HIGH와 LOW가 왔다갔다 반복되는 것이지만 사람의 눈에는 LED라면 밝기, 모터라면 속도가 변화하는 것처럼 보인다. )
즉, 실제로는 디지털 신호이지만 마치 아날로그와 같은 연속적인 신호를 출력하는 것과 같은 효과인 것 이다.
대부분의 마이크로컨트롤러는 PWM 출력 핀을 몇 개 가지고 있으며, 이 핀들은 칩 내부에 저장된 PWM 장치와 연결된다. PWM 출력 핀이 없는 마이크로컨트롤러는 소프트웨어로도 쉽게 구현할 수 있다.
아날로그 입력
어떤 크기의 전압을 마이크로컨트롤러에서 수행되는 프로그램이 사용 가능한 값(디지털 데이터)로 변환하려면 아날로그/디지털 변환기 (ADC)가 필요하다. 거의 모든 마이크로컨트롤러는 연속근사라는 기법을 사용하여 아날로그 신호를 디지털 신호로 변환한다. 연속근사기법은 디지털 데이터를 아날로그 전압으로 변환하는 DAC와 비교기를 사용한다. 마이크로컨트롤러마다 ADC의 비트 분해능(비트 수)는 다를 수 있다. 8비트 분해능과 10비트 분해능 그리고 12비트 분해능을 가진 많은 종류의 마이크로컨트롤러가 있다. 이러한 아날로그 입력은 전압 또는 저항의 수치가 바뀌는 특징을 가진 센서 값을 읽고 계산하는데 많이 사용한다.
'Embedded System > 마이크로컨트롤러' 카테고리의 다른 글
[MCU] ESP32-WROOM-32 데이터시트 분석 (0) | 2023.08.03 |
---|---|
ESP32-DevkitV4 GPIO 기능 정리 (0) | 2023.04.12 |
ADC(Analog Digital Converter)란? (0) | 2023.03.02 |
ESP32 DevkitC V4 가이드 (1) | 2022.12.14 |
마이크로컨트롤러(MCU) (0) | 2022.11.27 |