Arduino로 수백 개의 개별 LED를 어떻게 제어합니까?


10

수백 개의 LED가 포함 된 전자 프로젝트를 진행하고 있습니다. (6-7 백 개가 넘는 LED를 말하면 ... 많은 것을 알고 있습니다.) 하나 또는 몇 개의 Arduino로이 많은 LED를 제어 할 수있는 방법이 있습니까? 내가 원하는 것은 세계의 벽면에 LED를 플롯 하는 것이므로 각 LED를 개별적 으로 액세스 / 제어 할 수 있기를 원합니다. 그런 다음 Arduino와 Google 웹 로그 분석을 연결하고 누군가가 전 세계의 특정 위치에서 내 사이트를 탐색하면 해당 지역에 가장 가까운 LED가 거의 실시간으로 켜집니다.

도움을 주시면 감사하겠습니다. 감사! 나는 일부를 연구하고 멀티플렉싱과 찰리-플렉스에 대해 읽으려고했지만 100에서 최대로 보이는 것 같습니다. 이 많은 LED를 제어하려면 외부 하드웨어 / 구성 요소가 필요하다고 가정하지만 정확히 어떻게해야합니까? 다른 사람이이 큰 LED 매트릭스를 만든 적이 있습니까?

답변:


9

많은 수의 LED를 개별적으로 다중화 할 때 일반적인 방법은 N x M 매트릭스를 사용하는 것입니다. 시간은 N 단계로 나뉘며, 각 단계에서 N 행 라인 중 하나를 활성화하고 활성화하려는 LED에 해당하는 열 라인을 활성화합니다. 행 라인은 각각 LED 전류의 M 배를 전달할 수 있으며, 이는 약간의 버퍼링을 요구한다. 각 LED는 시간의 1 / N에만 켜져 있으므로 정상적인 밝기를 유지하려면 현재 N 배를 늘려야합니다. 대부분의 LE는 이것을 좋아하지 않습니다. 찰 리플 렉싱은 관련된 큰 전류 때문에이 상황에서는 실용적이지 않다.

귀하의 질문에서 한 번에 하나의 LED 만 활성화하고 싶다는 것을 알고 있습니까? 이 경우 Charlieplexing에는 아무런 문제가 없습니다. 31 개의 I / O 핀이있는 uC는 900 개의 LED를 구동 할 수 있습니다. 건설과 같은 소리는 악몽이 될 것입니다 ...


5 년 후 업데이트 : 일반적인 멀티플렉싱 또는 Charlieplexing은 너무 많은 시간을 할애 할 때 유용하지만 100 개의 LED를 제어해야 할 때 WS2801 LED의 긴 스트립을 구입할 것입니다.


추가 할 것이 있다고 생각합니다. 고전류가 문제라면 고전압을 사용하십시오. 9V와 같지만 매우 짧은 시간 10mS와 정확하게 계산 된 듀티 사이클. 또한 LED 램프의 수명을 늘립니다.
표준 Sandun

LED에 의해 강하되는 전압은 고정되어 있으며 Arduino의 출력 전압도 있습니다 (일부 유형의 3.3V의 경우 5V). 듀티 사이클이 작은 더 높은 전류를 사용하면 일반적으로 LED 수명이 줄어 듭니다 .
Wouter van Ooijen

9

저렴하고 쉽게 찾을 수있는 74HC595 (또는 유사한) 시프트 레지스터를 사용하여 arduino의 핀 몇 개만으로 수백 개의 LED를 쉽게 제어 할 수 있습니다.

Arduino 사이트에 대한 자습서도 있습니다!

74HC595를 통한 직렬-병렬 변속 출력

시프트 및 595 칩

언젠가 Arduino 보드의 핀이 부족하여 시프트 레지스터로 확장해야 할 수도 있습니다. 이 예는 74HC595를 기반으로합니다. 이 데이터 시트는 74HC595를 "출력 래치가있는 8 비트 직렬 입력, 직렬 또는 병렬 출력 시프트 레지스터, 3 상태"라고합니다. 다시 말해, 마이크로 컨트롤러에서 몇 개의 핀만 사용하면서 한 번에 8 개의 출력을 제어하는 ​​데 사용할 수 있습니다. 여러 레지스터를 서로 연결하여 출력을 더욱 확장 할 수 있습니다.


그것은 많은 시프트 레지스터 일 것이지만 작동 할 것입니다 :) 약 88 (칩 당 700 LED / 8 LED) 시프트 레지스터와 1 mcu 만 필요합니다.
Johan

1
88 개의 입력이 처리하기에 상당히 많은 추가 로직 드라이버를 잊지 마십시오.
Ignacio Vazquez-Abrams

2

나는 이것을 모듈 방식으로 만들 것입니다. Maxim의 6960은 약간 비싸지 만 64 개의 LED를 구동합니다. 직렬 인터페이스로 구동되며 최대 256 개를 함께 연결할 수 있습니다.

7218/7221도 작동합니다.


2

이 질문에 대한 약간의 대답은 여기 있지만 단일 PICAXE 40X2에서 Charlieplexed 528 개의 LED가 있습니다. 모든 핀이 작업 전용 인 경우 최대 930 개의 LED가됩니다.

빌드 : http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

비디오 : http://www.youtube.com/watch?v=82LvqiaH-iA

PICAXE 아키텍처는 상당히 느리므로 동시에 켤 수있는 최대 LED 수는 깜박임이 문제가되기 전에 약 15 개로 제한됩니다. 더 빠른 프로세서와 더 영리한 프로그래밍은이 수를 크게 증가시킵니다.


1

내 대답이 좋은지 확실하지 않습니다 ...하지만 왜 WS2811 주소 지정 가능한 led 줄무늬에 대해 말하지 않습니까 ??

텍스트를 표시하기 위해 LED 매트릭스를 만들고 싶습니다. Arsyino와 거의 비슷한 Teensy에서 만든 프로젝트 ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html )가 있습니다.

PWM (Pulse Width Modulation) 개념을 사용하므로 단일 와이어로 복잡한 데이터를 LED 스트라이프에 보낼 수 있다고 생각합니다.

그러나 다시, 나는 내 대답이 좋은지 확실하지 않습니다 ...


문제는 필요한 타이밍으로 함께 연결할 수있는 LED의 수를 제한하고 여러 체인에 분산하면 전체 처리 시간이 늘어난다는 것입니다.
이그나시오 바스케스-아 브람스

0

최근의 질문에서 많은 LED를 구동하는 것과 관련하여 멋진 토론을했습니다. 내 대답은 귀하의 문제에 직접 적용되는 것 같습니다. 여기에 답을보십시오 :

장거리에서 LED 구동


4
해당 정보를 가져 와서이 질문에 맞게 조정할 수 있습니까? 둘 다에 대한 답변이 완벽하게 작동하면 정확한 복제의 표시입니다.
Kortuk

0

http://bildr.org/?s=shift+register의 정보를 기반으로 Arduino Uno와 함께 74H595 시프트 레지스터의 에있는 , '연결된 1000 개가있는 경우 1000 개를 가진 LED가있는'프로젝트는 320 개의 LED. 100 개가 넘는 LED가 깜빡 거리면 결국 아두 이노를 튀겼습니다.

그래서 저는 74H595 용 브레이크 아웃 보드를 판매 한 Sparkfun의 기술 지원에 대해 이야기했습니다. 그는 한 번에 5 개 또는 6 개의 LED 만 켤 수 있다고 말했다. 그래서 BLDR의 기사를 다시 읽고 74H595 / Arduino를 사용하여 수천 개의 LED를 제어 할 수 있지만 한 번에 수십 개만 가질 수 있다는 것을 깨달았습니다. (이는 Arduino가 5V 출력을 통해 200mA를 허용하고 각 LED가 20mA를 끌어서 약 10 개가 안전하게 전원을 공급하기 때문에 의미가 있습니다)

1mA의 전류로 스위치를 켤 수있는 트랜지스터가 있습니다. 만약 이것이 더 높은 전압 / 전류 컬렉터를 갖는 이미 터 흐름을 갖는 트랜지스터를 제어하는 ​​회로를 설계 할 수 있다면 사실이라면 말이다. 그러면 Arduino / 74H595 조합을 사용하여 전류가 더 높은 회로의 트랜지스터를 제어 할 수 있습니다.

댈러스의 앨런

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.