이전 포스트에선 브레드보드의 사용법을 배우고 LED를 켜는 동작을 했다.
하지만 아마 아두이노를 조금 접해본 사람들은 이전 포스트를 보고 한 가지 의문이 들었을 것이다.
왜 LED를 연결할 때 바로 연결하지? 라는 의문이 말이다.
이 의문이 드는 이유는 보통 LED를 사용하면 저항과 함께 사용하기 때문이다.
그럼 왜 저항을 사용하고 저항이 대체 어떤 동작을 하는 걸까.
저항, 즉 전기 저항 이라는 개념은 19세기 독일의 물리학자 게오르크 옴에 의해서 정리되었다.
옴 이전에도 사람들은 물질에 따라 전기가 잘 흐르거나 잘 흐르지 않는다는 사실을 알고 있었지만 이 사실을 제대로 설명하진 못하고 있었다.
옴은 전압과 전류의 관계를 연구했고 이 과정에서 일정한 조건에선 전압이 증가하면 전류가 증가하는 비례관계가 성립한다는 것을 확인했다.
그리고 이때 물질에 따라 같은 전압을 걸어도 전류가 다르게 흐른다는 것을 확인하고 전류의 흐름을 방해하는 정도를 전기 저항(Resistance)이라고 정의했다.
이 관계를 수식으로 표현하여 V=RI라고 하고, 이를 옴의 법칙(Ohm’s Law)이라고 하는 것이다.
다시 본론으로 돌아와서 우리가 말하는 저항이라고 하는 것은 이러한 전류의 흐름을 방해하는 성질을 구현해 놓은 전자 소자를 말한다.
실제론 저항기(Resistor)라고 하지만 저항기라는 명칭보단 저항이라고 줄여쓰는 경우가 많아 성질을 뜻하는 저항과 혼용하여 사용하고 있다.

위의 그림에서 왼쪽이 실제 저항의 모습을 그림으로 표현한 것이고 오른쪽이 저항을 기호로 표시한 것이다.
저항의 기호가 좀 구불구불한데 이것만 봐도 전류의 흐름이 방해되고 있다는 것을 느낄 수 있을 것이다.
그래서 전류가 저항을 지나갈 때 에너지를 소모하는 것이고 이때 소모되는 에너지를 저항에 걸리는 전압이라고 한다.
만약 저항에 걸리는 전압을 구하고 싶다면 앞에서 이야기한 옴의 법칙을 활용하면 된다.
이런 것처럼 저항은 전자 소자로 가는 전압을 줄여주는데 이 저항을 LED와 함께 사용한다는 것은 LED에 걸리는 전압도 낮춰줘야 한다는 것을 의미하는 것이다.
이 말처럼 사실 LED는 동작 전압이 5V보다 작다.
우리가 앞선 포스트에서 사용한 digitalWrite 함수는 5V를 출력하는 함수로 이 함수를 통해 아두이노 보드로 전압을 출력하면 LED가 사용하는 전압 이상의 전압이 걸리면서 LED가 고장날 수도 있는 것이다.
(사실 아두이노 보드의 데이터 핀에서 나오는 전류는 제한적이라 LED가 잘 타지는 않는다.)
그럼 LED가 동작하기 위해서 전압과 전류는 얼마가 필요할까.
이것을 알기 위해선 LED의 설명서를 봐야한다.
보통 우리가 구입하는 LED는 네이버와 같은 곳에서 구입을 해서 설명서를 구하기 힘들지만 구글을 이용하면 설명서를 구하기 쉽다.
그리고 이때 LED와 같은 전자 소자의 사용법을 적어둔 설명서를 다른 말로 데이터시트(Datasheet)라고 한다.
그래서 만약 어떤 전자 소자의 설명서를 찾으려면 소자의 이름을 적고 그 뒤에 Datasheet라고 붙여서 검색하게 되면 해당되는 소자의 설명서를 찾을 수 있는 것이다.
LED도 마찬가지지만 보통의 LED를 구입할 때 제조사를 보고 구입하진 않을 것이기 때문에 사실 데이터시트를 찾기 어렵다.
그런데도 만약 난 내가 산 LED의 데이터시트를 알고 싶다라고 한다면 애초에 구입할 때 엘레파츠, 디바이스마트, 아이씨뱅큐 처럼 전자부품 전문 쇼핑몰을 이용하는 것이 좋다.
이런 곳에는 판매하는 소자의 데이터시트가 상세 설명 페이지에 같이 들어있기 때문에 확인하기 편리하다.
아무튼 다시 본론으로 돌아와서 우리가 일반적으로 아두이노에 사용하는 LED는 라운드 형태의 5mm LED를 많이 사용하게 된다.
이 LED는 대부분 스펙이 동일함으로 엘레파츠에서 해당 LED의 데이터시트를 가져왔다.

원래 데이터시트에는 많은 내용이 담겨 있지만 여기서는 우리가 궁금한 부분만 발췌해 왔다.
이 표를 보면 알겠지만 LED의 간단한 실험을 통해 스펙을 표현해둔 것이고 표의 제목에 적혀있듯 25도 온도에서 실험한 결과를 표현한 것이다.
여기서 우리가 봐야 할 것은 Forward Voltage만 보면 되지만 이왕 가져온 것이니 다른 것들도 확인해보자.
다음은 표에서 파라미터(Parameter) 밑을 순서대로 나타낸 것이다.
- Forward Voltage : 순방향 전압을 뜻하는데 LED 양단에 걸리는 전압으로 20mA 전류가 흐를 때 걸리는 전압을 표시해두었다.
- Luminous Intensty : LED의 밝기를 뜻하고 표에는 20mA 전류가 흘렀을 때의 밝기를 표시하고 있다.
- Reverse Current : LED의 애노드 캐소드를 반대로 연결하고 5V 전압을 걸었을 때 흐르는 전류를 뜻한다.
- Peak Wavelength : LED가 가장 강하게 내는 파장을 뜻한다.
- Dominat Wavelength : 사람이 느끼는 대표 색상의 파장을 뜻한다.
- Spectral Line Half-width : 빛의 스펙트럼 폭을 의미하고 빛의 파장이라고 하는게 한 파장만 쪽집게처럼 찝어서 나올 수 없기 때문에 그 파장이 퍼져있는 폭을 뜻한다.
- Viewing Angle : LED가 빛을 퍼트리는 각도를 의마한다.
위의 7가지가 나와있는데 우리는 1번만 알아도 된다.
1번을 보면 20mA 전류를 흘렀을 때 걸리는 전압을 표현하고 있는데 전압이 표시된 곳이 Min/ Typ / Max로 나눠져 있다.
Min는 최소 값을 뜻하고 Typ는 Typical의 줄임말로 일반적인 값을 뜻한다.
Max는 최대 값을 뜻한다.
그래서 저 표대로 보면 일반적으로 20mA가 흐를 때 전압이 2.2V가 측정되었고 최대치로 측정된 것은 2.6V가 측정되었다는 뜻이다.
참고로 LED라고 하는게 전압이 아닌 전류를 기준으로 동작하는 소자이기 때문에 전류가 얼마 흘렀을 때 전압이 얼마 걸린다라고 나오는 것이다.
아무튼 이것을 기준으로 요약해보면 아두이노로 연결했을 때 LED에 20mA 전류가 흐르고 LED에 걸리는 전압이 2.2V가 되면 된다는 것이다.
이것을 토대로 생각해보면 현재 digitalWrite로는 이 조건을 만족하기 힘들다.
그래서 LED 앞에 저항을 연결해야 하는 것이다.
그럼 저항을 사용해야 하는데 아무 저항이나 사용하면 될까?
물론 아니다.
저항에도 ‘값’이 존재하고 이 값에 따라 저항에 걸리는 전압이 달라진다.
이것은 앞서 이야기한 옴의 법칙에도 나와 있다.
그렇다면 어떤 값의 저항을 사용해야 할까.
저항의 값은 옴의 법칙을 사용하면 정할 수 있는데 지금 LED가 동작하려면 20mA가 필요하고 전압이 2.2V가 필요하다.
아두이노에서 공급되는 전압이 5V라면 LED가 필요한 전압인 2.2V를 빼고 저항이 2.8V의 전압을 소모해야 하는 것이다.
이것만 안다면 사실 저항 값은 간단히 구할 수 있다.
저항에 걸리는 전압이 2.8V이고 저항에 흐르는 전류가 20mA니 옴의 법칙을 조금 변형한 식인 R=V/I 에 대입만 하면 값이 나오는 것이다.

식으로 표현하면 위의 그림과 같이 되고 그 결과 저항은 최소 140Ω이 필요하다.
일반적으로 이것을 토대로 LED의 저항을 결정하는데 LED의 전압이 1.1~2.8까지 다양하기 때문에 보통 LED와 함께 사용하는 저항으로 220Ω 또는 330Ω을 많이 사용한다.
물론 140Ω 이상의 저항 값들을 사용한다면 LED에 걸리는 전압이 작아질 것이니 LED의 밝기가 줄어들 수 있으니 참고하자.
이렇게 사용해야 되는 저항도 알게 됬으니 연결만 하면 되는데 여기서 또 문제가 발생한다.
이번에는 저항을 봤을 때 도대체 값을 어떻게 아냐는 것이다.

저항을 보면 그림과 같이 생겼는데 값이 따로 적혀있진 않고 뭔가 색띠가 둘러져 있는 것을 볼 수 있다.
저항은 이 색띠를 보고 값을 판단하게 된다.

띠는 4색, 5색, 6색 등이 존재하는데 우리가 보통 보는 띠는 4색과 5색이다.
일반적으로 띠가 많을수록 정밀한 저항이라고 보면 되지만 우리가 보게 될 저항은 5색 정도까지다.
먼저 위의 그림을 보자.
띠 색에 따라 숫자가 정해져 있고 이 숫자를 바탕으로 저항의 값을 읽는 것이다.
위쪽의 4색띠를 보자. 색띠를 보면 3개의 색띠가 붙어 있고 하나의 색띠가 조금 떨어져 있는 것을 볼 수 있다.
이때 혼자 떨어져 있는 색띠가 오차 값을 나타낸다.
그림에선 금색 띠가 혼자 떨어져 있으니 오차가 5%인 저항인 것이다.
앞쪽 3개의 띠는 저항의 값을 나타내는데 값을 읽을 때는 앞의 2개/뒤의 1개 이렇게 끊어서 보게된다.
첫번째 색띠가 10의자리 두번째 색띠가 1의 자리가 되는 것이다.
위의 그림에선 갈색, 검은색이 니깐 10이 되는 것이다.
세번째 띠는 10의 승수를 뜻한다.
그림에선 빨간색이니깐 숫자 2의 해당한다.
이것은 10의 2승으로 표시되고 계산하면 100이 된다.
최종적으론 앞의 두 색의 숫자인 10과 세번째 색이 뜻하는 10의 2승의 값을 곱해서 표현하는 것이다.
그럼 저항의 값은 1000Ω이 되고 다시 쓰면 1kΩ이 되는 것이다.
5색띠도 마찬가지다.
혼자 떨어진 띠는 오차를 표현하는데 5색띠의 경우 갈색이 많다.
갈색은 오차로 표현할때 1% 오차를 나타낸다.
그리고 앞의 네개의 띠를 봐야하는데 여기는 4색띠와 마찬가지로 앞의 3개/뒤의 1개로 나눠서 본다.
뒤의 1개는 10의 승수가 되고 앞의 3개는 백의 자리, 십의 자리, 일의 자리로 표현된다.
이걸 토대로 보면 위의 그림에서 밑에 나온 5색띠 저항은 100에 10의 1승을 곱해서 1000Ω, 즉 1kΩ이 되는 것이다.
저항의 값은 이렇게 색상을 이용해서 알아보게 되니 저 표를 잘 기억하자.
자, 이렇게 저항의 값도 볼 수 있게 됬으니 이번엔 LED에 본격적으로 저항을 연결해보자.
앞서 LED에 연결할 저항을 계산했고 여기서는 220Ω을 사용해서 연결해보자.

위의 그림과 같이 연결할 수 있고 이때 전류의 흐름을 본다면 digitalWrite를 HIGH로 설정하면 2번핀에서 전류가 나와 저항을 거쳐 LED로 들어가고 LED를 통과한 전류가 아두이노 보드의 GND로 돌아오는 것을 볼 수 있다.
이를 통해 LED가 켜지게 되는 것이다.
코딩도 앞서했던 코드와 동일하다.
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}참고로 위에선 저항을 LED의 애노드(+극) 방향에 연결했다.
그럼 캐소드(-극) 방향으로 연결하면 안 될까.

위의 그림은 캐소드 방향으로 저항을 연결한 것이다.
어떨까.
결론부터 말하면 어차피 저항과 LED가 직렬로 연결되어 있어 어느 방향으로 연결되어 있든 동작은 다 동일하다.
고민하는게 의미 없다는 말이다.
다만, 보통 애노드 방향에 연결되어 있는 것은 전류의 흐름을 보기 쉽도록, 즉 가독성을 위해 애노드 방향에 저항을 연결하는 경우가 많다.
일부에선 안정성을 위해 연결한다는 말이 있긴한데 특수한 상황에 해당하기 때문에 지금 다루는 정도에서는 어느 방향으로 연결해도 상관없다고 이해해도 괜찮다.
