본문 바로가기
IoT

[생활속의 IT] 아두이노#2 - 핀구성 살펴보기

by 생활속의 IT램프 2020. 3. 16.

아두이노를 사용하기 전에 핀의 배열 및 사용법에 대해 알아보겠습니다. 

(아두이노 버전 중 가장 인기많은 Uno R3 버전 기준)

 

가장 중요한 다섯 가지 항목에 대해 설명해볼께요.

 

1. USB Type B

2. 외부 DC 전원 연결

3. 센서 전원 제공

4. 아날로그 신호 입력

5. 디지털 신호 입출력

 

 

 

1. USB Type B

  - 컴퓨터와 연결 가능한 포트인데 이것이 왜 필요할까요?

    조도센서, 온도센서 등에서 데이터를 받고 LED를 키거나 모터를 구동할 때 로직이 필요하겠죠?

    로직은 C 기반의 언어로 작성하고 컴파일된 파일은 바로 이 USB 포트를 통해서 마이크로컨트롤러에 upload를 하게 됩니다. 뒤에 upload 하는 부분에 대해 자세히 살펴보도록 하겠습니다.

 

    참고로 USB Type B는 아래와 같이 생긴 포트입니다. 외관을 보니 자주 쓰지는 않는 포트인듯 합니다.

    제일 흔한 Type A가 아니어서 좀 불편하긴 하네요.

 

 

2. 외부 DC전원 연결

  - 아두이노에 전원을 주는 방법은 크게 4가지 입니다.

    첫 번째는 위에 언급하였던 USB 포트를 통해서 전원을 주는 법입니다.

    하지만 컴퓨터와 계속 연결되어야 하기 때문에 IoT 기기로 쓰기에는 좀 부적합해 보입니다.

 

    두 번째가 바로 DC 어답터를 통해 전원을 주는 방법입니다.

    이 전원 포트는 흔히 전자제품에서 보는 단자이고 아래와 같은 어답터를 통해 쉽게 전원을 줄 수 있습니다.

    USB보다는 편의성이 좀 높겠지만 여전히 220V 전원이 필요하다는 단점이 존재합니다.    

   세 번째는 건전지를 통해 전원을 주는 방법입니다. 그럼 건전지를 연결한 단자를 아두이노의 어느 부분에 연결할까요? 바로 ②와 동일한 부분에 연결해주면 됩니다. 대신 아래와 같은 연결 고리가 필요합니다.

  아두이노는 7~12V 정도의 전압을 제공하는 것이 가장 좋다고 합니다.

  위의 연결소자는 네모난 건전지 연결용인데 9V의 출력을 가지므로 일반적으로 이 연결소자를 사용한다고 보면 되겠습니다. 

 

 

   네 번째는 ③ 과 ④ 사이에 있는 Vin을 통해 전력을 제공하는 것입니다.

   위 그림에서 ③ 과 ④ 사이에 GND와 Vin이 보이시나요?

   GND와 Vin이 바로 외부 전원소스를 연결하고자 하는 포트입니다. 보통 납땜없이 실험용으로 빵판 or 브레드보드라 부르는 회로기판을 많이 사용하는데 이 브레드보드를 통해 전원을 입력받는 경우 사용할 수 있습니다.

 

  참고로 Vin을 통해 전원을 인가받는 경우 외부 DC전원 연결은 안하는 것이 좋습니다.

 

 

 

3. 센서 전원 제공

   - 지금까지는 외부에서 전원을 입력받는 포트에 대해 알아보았고, 아두이노에 연결되는 소자에 대해서는

     어떻게 전원을 넣어줄까요? 

     바로 ③ 부분을 통해 전원을 제공해줍니다. ③을 잘 보면 3.3V, 5V, GND가 있는데 소자마다 필요한 전압에 맞춰서 따주면 되겠습니다.
     초음파센서, 적외선 센서등 대부분 센서는 ④ 부분에 연결됩니다. 
     그리고 모터나 LED, 부저 등 제어소자는 ⑤에 연결됩니다.

     센서와 제어소자 모두 ③을 통해서 전원을 인가받습니다. 

 

 

 

4. 아날로그 신호 입력

   - 적외선 센서나 초음파 센서등 다양한 센서는 대부분 ④ 부분에 연결됩니다.

     핀이 모두 6개 군요. 최대 6개의 소자를 연결할 수 있다고 봐도 됩니다.

   - 그리고 각 핀은 출력은 불가능하고 전압 크기를 입력 신호로만 받는데 아두이노는 아날로그 신호를 10 bit의 디지털 신호로 변환하여 처리하게 됩니다.

    10비트는 2의 10승 가짓수(1024)를 표현할 수 있으므로 각 핀이 입력받는 정보는 0~1023가 된다고 보면 되겠네요. 입력받는 정보는 전압의 크기이므로 0은 0V, 1023은 5V를 의미합니다.

예를 들어 조도 센서(빛의 밝기를 측정하는)를 0번 핀에 연결하고 0번 핀이 받는 값이 211 이었다면, 이것은 무슨 의미일까요? 

   1024 중 211이니 약 1/5 정도 되는 지점이니 5V의 1/5 정도를 입력받았다는 뜻입니다. 즉 1V 정도를 받았다는 뜻이 되겠죠. 후에 서술하겠지만 조도센서(cds)는 빛을 많이 받을 수록 저항이 줄고 핀에 전달되는 전압은 높아집니다. 

 

 

5. 디지털 신호 입출력

  - ⑤의 디지털 신호 입출력은 ④의 아날로그 신호 입력부분과는 달리 출력이 가능합니다.

    그래서 LED 점등, 모터 구동, 부저 울림 등은 모두 ⑤에 입력합니다.

 

    그런데 잘 보면 물결표시(~)가 있는 핀이 있습니다. (3, 5, 6, 9, 10, 11)

    이 핀은 PWM 신호를 줄 수 있는 핀인데 PWM(Pulse Wide Modulation) 신호란 이름에서 유추할 수 있는 바와 같이 전압을 출력할때 전압 파형에서 high 로 된 폭을 조절할 수 있는 신호를 의미합니다. 아래 그림에선 high가 25%, low가 75% 네요. 

PWM 신호 파형

왜 PWM을 사용할까요?

바로 아날로그 제어소자를 0과 1로 이루어진 디지털 신호로 제어하기 위함입니다.

이게 무슨소리일까요? 

예를 들어 아날로그 모터를 제어한다고 해봅시다. 이 모터는 단순해서 신호를 주면 그냥 돌리기만 할 뿐입니다.

즉 출력핀이 1이면 돌리고 0이면 멈추는 방식입니다.

그런데 모터의 회전 세기를 어떻게 통제하고 싶다면 어떻게 통제할 수 있을까요?

이때 PWM을 사용합니다.

 

PWM을 사용하면 high로 된 폭을 조절할 수 있다고 했습니다. 이 폭이 넓어지면 1이 되는 시간이 많아지게 되고

모터가 구동하는 시간비율이 상대적으로 많아지게 됩니다. 모터가 주기적으로 멈췄다 돌았다 하면서도 도는 시간비율이 늘어나게 되는 것이죠. 인간의 눈으로 보기에는 모터가 회전하는 속도가 빨라졌다고 느끼게 됩니다.

 

이 원리는 LED 세기 조절에도 응용됩니다. LED도 보통 1이면 on, 0이면 off 되는 단순소자이지만

세기를 조절하고 싶다면 PWM을 이용합니다.

모터 구동과 마찬가지로 high 폭이 넓어지면 (인간의 눈에는 인식하지 못하겠지만) LED가 깜빡거림 속에서 on 비율이 높아질 것이고, 더 밝아졌다고 느끼게 되는 것입니다. 

PWM은 8비트로 인코딩합니다. 8비트는 2의 8승이므로 256가지의 상태를 표현할 수 있습니다.

즉 0은 high가 없는=정지상태를 의미하며 255는 high로 가득찬=최대 성능으로 출력하라는 뜻이 됩니다.

 

지금까지 설명한 PWM 핀은 제어를 위해 사용하는 핀이었습니다. 즉 출력만 가능합니다.

나머지 핀(2, 4, 7, 8, 12, 13)은 신호 입력과 출력이 모두 가능합니다. 

가령 2번 핀을 입력으로 쓸지 출력으로 쓸지는 어떻게 아나요?

그 로직은 본인이 만듭니다. 2번 핀은 입력으로 쓰겠다 or 출력으로 쓰겠다를 로직에 선언해주게 됩니다.

 

로직은 C언어 기반으로 작성하는데(C는 아니지만 매우 유사함)

지금까지 설명한 부분은 로직을 보면 이해가 더욱 쉬울 것입니다.

 

 

   

    

     

 

댓글