일반적으로 지금까지는 아래 회로와 같이 led를 연결할때 +를 핀에 -를 GND에 연결해 왔습니다.
적은 갯수의 led를 연결할때는 문제가 없지만 도트매트릭스같이 led의 개수가 많아지면 점점 led가 흐려지게 됩니다.
원인은 아두이노나 AVR의 각 핀에서 출력되는 전류는 고작 2~30mA정도 밖에 되지않는다는데 있습니다.
AVR 전체로 따지면 100mA 정도 밖에 나오지않습니다.
led하나에 보통 20mA정도 소모하니 5개정도를 겨우 돌릴만한 전류 밖에 안되는 겁니다.
이 전류 이상 소모하게 되면 AVR이 망가질수도 있답니다.
이문제를 해결하기 위해서는 소스전류가 아닌 싱크전류를 제어 하는 방식으로 바꿔야합니다.
지금까지는 led의 +를 연결한 핀에 1(HIGH)을 주어 led를 겼지만 그와 반대로 led의 -를 핀에 연결하고 +는 Vin(또는 별도의 전원에 입력 받는 것을 권장)에 연결합니다. 그러면 핀에 0(LOW)을 주면 불이 켜지게 됩니다.
이렇게 함으로써 전류는 AVR과 별도의 안정된 전원에서 공급하고 AVR은 LED 구동에 전류를 뺏기지 않아 서로 안정된 동작을 보장할수 있게 되는 겁니다.
저는 처음에 이 (핀이 GND역할도 할수 있다는)개념이 이해되지 않아 무지 고생했는데 이해하고 나니 무척 유용한것 같습니다.
* 싱크제어라는 용어가 맞는지 모르겠네요. 잘못되었으면 댓글로 지적바랍니다.
'Arduino/AVR > 0. 회로이론' 카테고리의 다른 글
전압을 내 마음대로... (제너다이오드, 레귤레이터 사용법, 전압 다운하기) (2) | 2009.09.11 |
---|---|
캐패시터(capacitor, 콘덴서, condenser)에 대하여 (0) | 2009.07.22 |
UltraEdit용 AVR C파일 구문강조 wordfile (2) | 2009.07.09 |
AVR Libc Reference Manual 1.6.5 (AVR 명령어 열람 및 검색) (0) | 2009.07.09 |
아두이노 오류 : avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64 (2) | 2009.07.09 |