트랜지스터 LED 회로 - teulaenjiseuteo LED hoelo


NPN 베이스 전압은 0.7V 이상부터 전류가 흐르기 시작하고

PNP 베이스 전압은 VCC-0.7V 이하부터 전류가 흐르기 시작합니다.


트랜지스터 LED 회로 - teulaenjiseuteo LED hoelo

PNP 타입을 사용할 때, VCC가 9V나 12V라면 

5V의 AVR로 PNP TR을 직접 구동하지 못합니다.

아래처럼 NPN 회로를 추가 해줘야합니다.

(LED 구동이라면 위 왼쪽 NPN 회로를 사용하면 편하겠죠)

무시하고 AVR로 직접 구동하면 AVR포트에 9V나 12V가 걸려서

TR과 AVR포트가 고장나게 됩니다.

VCC = 저항에걸리는전압 + LED정격전압 + Vce

저항에걸리는전압 = VCC - ( LED정격전압 + Vce )

저항값 = 저항에걸리는전압 / 0.02A (20mA로 구동하는 경우)

저항값 = 저항에걸리는전압 / 0.01A (10mA로 구동하는 경우)

저항소모전력W = 저항에걸리는전압 * 0.02A (20mA인 경우)

저항소모전력W = 저항에걸리는전압 * 0.01A (10mA인 경우)


FND 구동은 이 그림이 나을겁니다. (저항과 LED는 직렬이라서 위치가 바뀌어도 상관없습니다.)

_____________________________________________________________________________

아두이노 엘렉트로닉스 코딩의 목적은 그 자체로 Fading  방식에 의한 LED 의 점등이다. 즉 LED가 서서히 켜지도록 하기 위해서서 아두이노 코딩에서는  analogWrite( PWM_digital_pin#, brightness) 명령을 사용하여 밝기 즉 brightness 값을 0∼255까지 코딩으로 조절했다. 바로 이와 유사한 효과를 내는 전자회로이다.


이 회로를 작동시키기 위해서 9V 전지를 설치해야 하는데 전선으로 된 전지 홀더 배선이 커넥터로 된 것 밖에 없어 사진과 같이 잘라서 피복 전선과 꼬아서 연결한 뒤에 절연 테이프 마저 없어서 스카치 테이프로 각각을 둘러 절연하였고 한바퀴 감아 매듭을 만들어서 끓어지지 않도록 하였다.

트랜지스터 LED 회로 - teulaenjiseuteo LED hoelo

첫 번째 스위치를 on 하게 되면 9V 전지로부터 전류가 빨간색으로 표시된 회로를 따라 흐르게 된다. 100KΩ 정항을 통과하여 분기점에 다다르게 된다. 분기점에서 전류 흐름은 2곳으로 나뉘어 질 수 있다. 하지만 현재 트랜지스터(TR)는 꺼져 있는(OFF) 상태이므로 그림에서 스위치로 해석하게 되면 스위치를 누르지 않은 상태이므로 분기점에서의 전류는 대부분 비어 있는콘덴서로 흘러 전하를 축적하게 됨과 동시에 빨간 이중 동그라미 친 부분의 전압이 점차 상승하게 된다. 이와 같은 점차 상승하는 현상은 아날로그 패널 핀에 의한 전압 측정을 통해서 시리얼 플로터 기능을 사용하여 가시화 할 수 있다.


아두이노 코딩에 의해서 콘덴서 사이의 전압을 측정하고 시리얼 플로터로 가시화 해 보도록 하자. 실험 시작 전에 9V 전지의 전압을 실측해 두도록 한다. 9V 전지는 머리티메타로 전압을 측정해 보면 8.5∼9.5V 사이의 전압을 보여주며, 이번 실험에서 측정된 전압은 8.9V 였다.
아울러 아두이노의 5V 전원도 멀티메터로 측정해 두어야 전압으로 환산이 가능하다. 대체로 아두이노 보드에서 5V 전원을 측정해 보면 4.5∼4.9V 범위를 가지는 멀티메타가 없는 독자께서는 근사적이지만 4.8 이나 4.9 둘 중에 하나를 택해 쓰면 별 문제는 없다. 오늘의 측정 결과는 4.9V 였다.

분기점의 전압을 측정하기 위해서 아래의 사진에서처럼 점퍼선 2개를 설치한다. 검은색 점퍼선 하나는 GND 에 점퍼선 반대 쪽은 아두이노 GND에 연결한다. 주황색 점퍼선 하나는 분기점에 설치하고 반대 쪽은 아두이노 아날로그 핀 A0에 연결한다.

분기점에서의 전압 변동을 측정하기 위한 아두이노 코드는 극히 간단하다. 통신 속도는 9600 으로 설정한다.

분기점에서 측정하게 될 전압 v 는 전원 측정값이 비록 4.9V 이지만 5.0 볼트로 가정하고 다음과 같이 환산이 가능하다.

  float v = 5.0*analogRead(A0)/1023;

참고로 analogRead() 명령은 0∼1023 까지의 정수형으로 결과를 출력한다. 따라서 1023으로 나눈 후 아두이노 전압 5.0V를 곱하면 환산이 가능하다.
다음의 코드를 컴파일 업로드 하도록 하자.

void setup() { Serial.begin(9600); }
void loop() {
float v = 5.0*analogRead(A0)/1023;
Serial.println(v);
delay(50); }

업로드 후 시리얼모니터를 켜 보면 추력 값이 0.0 이 나와야 하지만 0 이 아닌 작은 0.2V 정도의 값이 출력 될 수 있음에 유의하자. 시리얼 모니터 껏음을 확인하고 시리얼플로터를 켜도록 한다. 아울러 회로의 스위치를 눌러 on 시켜면 십초 정도에 걸쳐서 분기점의 전압 변동 상황을 가시적 그래프로 볼 수 있다.


콘덴서 충전 동안 전압이 상승하게 되는데 즉 분기점의 전압이 PN 접합 다이오드의 문턱전압(Threshold) 0.5V 수준에 도달하게 되면 트랜지스터는 마치 스위치를 서서히 누른 것 처럼 컬렉터(C) 와 에미터(E) 사이가 개통이 되면서 적어도 1.0V 선을 넘어가면 컬렉터 전류가 활성화되어 흐르게 된다.

이러한 과정이 결국  에미터 회로의 LED 에 Fading  현상과 함께 서서히 불이 들어오게 된다. 동영상을 참조해 보자.


https://youtu.be/DGTN6N5YcTc

느린 속도로 스위치를 꾹 눌러 on OFF를 반복하면 시리얼 플로터에서 다음과 같은 전압 프로파일이 얻어진다.


전체 시스템의 전압이 8.9V 였는데 콘덴서의 + 쪽 즉 분기점에서의 전압은 2.9V 이므로 6.0V 의 전압이 100KΩ  저항 양단에 가해지게 된다. 이 데이타에 의해서 저항에 흐르는 전류 값을 옴이 법칙에 의해 계산해 보자.


   E = I ⏺R


가해진 전압 E = 6.0V, R = 100KΩ = 100,000Ω을 사용하여 전류 I 값을 계산하자.


   I  = 6.0 / 100,000 = 6.0X10-5 A = 6.0X10-2 mA 가 되어 대단히 작은 값이다.

이렇게 작은 값의 전류가 흐르도록 회로를 설계한 이유는 베이스(B) 전류가 작더라도 TR 이 스위칭되어 컬렉터에서 에미터로는 큰 값의 전류가 흘러 전기적 부하를 작동 시키기 위함이다. 즉 지렛대의 원리 정도로 보면된다.

한편 OFF 할 때가 전압 떨어지는 속도가 좀 빠르긴 해도 그래도 서서히 빠지는 이유는 비록 스위치가 꺼진 상태가 되면 9V 전지에서 전기 공급이 차단되지만 거꾸로 아래의 회로도에서처럼 전하를 머금은 컨덴서가  9V 배터리를 대신하여 역류해서 전류를 흘려준다.


스위치가 OFF 된 이 회로도에서 분기점의 주위를 살펴보면 전류의 방향이 바뀌어 흐르게 됨을 알 수 있다. 전류의 방향은 항상 전압이 높은 곳에서 낮은 곳으로 흐르게끔 되어있다.
즉 스위치를 끔으로 인해 100KΩ 저항 양단의 전압이 부호가 바뀌는 현상이 발생한다.

만약 아두이노 아날로그 핀을 사용하여 100KΩ 양단에 가해지는 전압을 측정하려면 양의 전압에서 음의 값을 가지는 전압을 즉 교류전압을 측정할 수 있어야 하나 아두이노 아날로그 핀의 측정 범위 한계는 양의 범위 즉 0∼1023 이므로 음의 값을 가지게 되는 영역 즉 전압의 방향이 바뀌게 되는 시점부터는 0.0의 값만을 주게 되어 측정이 불가능하다.

따라서 그 측정값을 보기 위해서는 전압 방향을 고려하여 전압 측정 배선을 바꾸어야 한다. 아래 측정 결과에 의하면 스위치 on 하면 음의 값을 측정 못하므로 0.0 을 출력하다가 스위치를 OFF 시키는 시점부터 콘덴서에 충전된 남아 있는 전압 대략 0.6V 수준에서 시작하여 콘덴서 전하가 방전되기 시작하여 전압이 떨어진다. 즉 역류가 일어난다는 뜻이다.


이상으로 아주 간단한 전자회로를 대상으로 기본적인 엘렉트로닉스의 규칙 즉 옴의 법칙이라든지 또는 전류제한 저항의 의미, 콘덴서의 충방전 현상,TR의 스위칭 현상을 점검하여 보았다. 조금 더 깊이 파 들어가면 전자 공학의 영역이 가까울 수 있으나 전문 직업 영역은 취미의 영역이 아니므로 그다지 재미가 없다는 점을 명심하자.


//condenser_voltage_01

void setup() { Serial.begin(9600); }
void loop() {
float v = 5.0*analogRead(A0)/1023;
Serial.println(v);
delay(50); }//끝