Arduino가 제어 할 수있는 개별 조명 수


19

일반 Arduino 보드를 사용하여 LED를 제어하고 싶습니다. 보드에서 개별적으로 제어 할 수있는 가장 많은 조명은 무엇입니까?

연결하는 방법에 대한 자습서가 있습니까?


3
하나 또는 여러 개의 LED를 제어 할 것인지 지정해야합니다. 또한 "직렬 제어 및 추가 IC 피하기"를 추가하겠습니다. 화면 주사율이나 하드웨어 부품이 제약이 없다면 대답은 무한한 경향이 있습니다.
ppvi

답변:


26

Charlie-plexing N 라인을 사용하면 N * (N-1) LED가 제어됩니다. Wikipedia에 좋은 기사가 있습니다.

내 친구 인 Jimmie P. Rodgers는 Arduino Shield에 126 개의 LED를 장착했습니다. 그는 찰리-플 렉싱을 사용하여 LED를 제어합니다. 그의 보드에 대한 일부 정보는 다음과 같습니다-jimmieprodgers.com/2009/12/my-development-process/ (archive.org 사본)


마지막 보스턴 아두 이노 사용자 그룹 회의에서 Jimmie P. Rodgers는 찰리-플 렉싱 다이어그램을 레이블이 붙은 그물이있는 행렬로 그렸습니다. 이러한 방식으로 그려진 회로도는 개념을 전달하는 데 큰 도움이되었습니다. 비슷한 회로도를 만들었습니다 .http : //wiblocks.luciani.org/FAQ/faq-charlie-plex.html을 참조하십시오 .


오늘 새로운 것을 배웠습니다. 당신은 내 공감 :-)
JonathanD

4
이 방법을 사용하면 한 번에 N-1 LED 만 켤 수 있습니다.
AngryEE

2
jimmieprodgers.com이 답변 의 링크에는 바이러스가로드되어 있습니다.
Vivek Maharajh

1
@vivekmaharajh : 링크를 원본 페이지의 archive.org 사본에 대한 링크로 대체했습니다.
Dave Tweed

13

시프트 레지스터 ( http://en.wikipedia.org/wiki/Shift_register )를 사용하여 원하는대로 단일 직렬 스트림에서 많은 병렬 출력을 얻을 수 있습니다.

당신은 당신의 힘 제약에 관심이 있어야합니다. 나는 실제로 Arduino를 직접 사용한 적이 없지만 PIC와 마찬가지로 현재 제한이 있다고 가정합니다. 또한 시프트 레지스터에는 전류 제한이 있습니다. 이 문제에 부딪 치면 마이크로 컨트롤러에서 직접 많은 전력을 끌어 들이지 않고도 LED를 제어 할 수 있도록 MOSFET과 같은 것을 사용해야합니다.


7

지정된 AVR 마이크로 컨트롤러 핀은 최대 40mA를 소싱 할 수 있으며, 칩에 의해 소싱되거나 가라 앉은 총 전원 공급 장치 (예 : 접지 및 Vcc 핀)는 200mA 미만이어야합니다.

Charlieplexing는 LED가 많이 필요한 상황에 대한 좋은 해결책이지만, 단 하나의 LED가에 의해 얻을 수있는 점화 한 번에. 표준 Arduino 보드 (예 : Duemilanove)는 TX, RX, Reset 또는 pin 13을 제외하고 17 개의 "free"I / O 핀을 제공합니다. 따라서 17 * 16 = 272 LED를 연결할 수 있습니다. 특히 하나의 LED가 켜져 있거나 몇 개 사이에서 빠르게 스캔하는 경우에 효과적입니다. 그러나 패턴으로 전체 매트릭스를 밝히려고하면 각각이 시간의 1/272보다 약간 (약간 작음) 있음을 알 수 있습니다. 따라서 주어진 순간에 드라이브 전류가 30mA라면 각 LED가 평균 전류는 약 0.1mA로 꽤 희미합니다.

많은 LED가 필요하지 않지만 더 많은 밝기가 필요한 경우 기존 멀티플렉싱이 더 나은 옵션 일 수 있습니다. 이 경우 일부 선을 행렬로 사용하고 일부는 열로 사용합니다. 10mA LED 전류를 사용하는 경우 한 행에 4 개의 LED가 모두 한 번에 켜지는 4 열 13 행의 매트릭스를 정의 할 수 있으며 행을 스캔합니다. 그런 다음 각 행은 10mA 전류에서 1/13의 시간에 있으므로 평균 LED 전류는 0.76mA만큼 높을 수 있지만 4 * 13 = 104 LED 만 얻을 수 있습니다. (찰 리플 렉싱보다 LED 당 확실히 밝습니다.)

마지막 예의 한계는 AVR의 핀당 40 mA입니다. 각 행 구동 핀은 4x10 = 40 mA이기 때문입니다. 외부 트랜지스터 (싸고 작을 수 있음)를 행 출력에 추가 할 수있게되면 특정 한계를 피하고 더 밝게 할 수 있습니다. 예를 들어, 8 개의 행과 9 개의 열, 72 개의 LED가있는 8x9 어레이를 만들 수 있습니다. 8 개의 행 중 하나가 한 번에 켜져 트랜지스터를 통해 선택됩니다. 주어진 행에서 최대 9 개의 LED를 한 번에 켜서 20mA로 구동 할 수 있으므로 180mA는 트랜지스터에서 나오며 AVR의 전류 제한을 유지합니다. LED 당 평균 전류는 이제 20mA / 8 = 2.5mA이며 일반적으로 상당히 밝습니다.


6

Arduino를 사용하여 8x8x8 LED 큐브를 실행하는 섹션이 포함 된 매우 훌륭하고 자세한 자습서가 있습니다 . (자신이 가지고있는 YouTube 영화를 놓치지 마세요)

여기에 이미지 설명을 입력하십시오


1979 년경 미네 아 폴리스의 UFO 전시회에서 보았거나 4096 개의 소형 전구 주위에있는 것으로 기억합니다. 다른 사람이 그런 것을 본 것을 기억합니까?
supercat

4

SPI 또는 I2C 버스를 사용하는 많은 I / O 익스팬더가 있습니다. 단일 MSSP 모듈을 사용하면 LED와 같은 거의 무한한 양의 디지털 출력을 제어 할 수 있습니다.

다음 부품에 대해서는 Microchip 데이터 시트 또는 애플리케이션 노트를 참조하십시오.
SPI- MCP23S08
I2C- MCP23008


1

17 개의 I / O 핀, 17 개의 NPN 트랜지스터 (전류를 증폭시키는 이미 터 팔로워)를 사용하면 1/17 듀티 사이클에서 평균 전류 또는 0.7mA (200mA / 272)로 272 개의 LED를 임의의 조합으로 표시하는 데 특별한 문제가 없어야합니다. 칩은 한 번에 200mA를 끌어낼 수 있습니다. 0.7V의 전압 강하를 얻기 위해 다이오드를 추가하면 다른 17 개의 LED를 추가 할 수 있지만 (듀티 사이클을 1/18로 줄임) 밝기는 다른 LED와 일치하지 않습니다.


여기서 어떤 종류의 회로를 제안하고 있는지 명확히 할 수 있습니까? 이미 터 팔로워는 BJT 토폴로지입니다.
Kevin Vermeer

@reemrevnivek : 위의 편집을 참조하십시오. 나는 정신적으로 몇 가지 변형을 던지고 있었고, 그들은 함께 모여 들었습니다. 하이 사이드 드라이브를 증폭시키기 위해 트랜지스터를 추가하고 로우 사이드 드라이브는 늘리지 않는 경우, BJT 여야합니다. 둘 다에 트랜지스터를 사용했다면 mosfets가 더 나을 수 있습니다.
supercat

0

Windell Oskay는 더 많은 트랜지스터를 추가하지 않고도 104 개의 LED가 최대라고 주장하지만 Tom Igoe 는 별도의 트랜지스터, 이산 또는 통합 된 단일 트랜지스터가 아닌 단일 Arduino Mega에 의해 직접 제어되는 128 개의 LED 매트릭스 사진을 게시했습니다.

데이터 시트에 나열된 "핀당 절대 최대 전류"를 간단히 초과하여 Tom Igoe가 "속임수"입니까?


2
아두 이노 메가를 사용하여 바람을 피우고 있습니다. :) 메가는 일반 아두 이노보다 많은 IO 핀을 가지고 있습니다.
Christopher Biggs

@unixbigot-슬프게도, LED 구동을 위해 리셋 핀을 재사용하거나 다이오드 드롭을 사용하는 멋진 해킹을 기대하고 싶었습니다.
Kevin Vermeer

1
링크가 죽었 으므로 Windell Oskay의 답변에 링크해야합니다 . 게시 할 때 중요하지 않은 것처럼 보이지만 더 많은 답변이 표시되면 게시물이 다른 게시물과 멀어지게됩니다.
케빈 베르메르

@KevinVermeer : 원본 페이지의 archive.org 사본을 가리켜 서 링크가 수정되었습니다.
Dave Tweed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.