마이크로 핀 몇 개만으로 많은 LED를 어떻게 제어 할 수 있습니까?


10

6 핀 I / O가있는 Atmel ATtiny13을 사용하고 있습니다. 약 15 개의 LED를 제어하고 싶지만 모든 것을 연결하는 방법을 잘 모르겠습니다. 어떤 종류의 다중화가 없으면 한 번에 6 개의 LED 만 제어 할 수있는 것 같습니다. 마이크로 컨트롤러의 크기 때문에 6 개의 LED로만 제한됩니까?


나는 보지 못했다. 아마 복제 된 : electronics.stackexchange.com/questions/9860/…
Daniel Grillo

3
약간 더 작은 마이크로 컨트롤러 구매 비용과 옵션을 비교하는 것을 잊지 마십시오. 또한 포트 별 및 총 전류 제한에주의하십시오.
joeforker

얼마 전에 마이크로 작업을 시작했을 때, 이것은 분명한 대답으로 찾기 쉬운 질문이었습니다. 나는 찰 리플 렉싱에 대해 배우고 성공적으로 구현했지만 탁월한 SE 커뮤니티 답변의 품질로 여기에서 질문을 재현하고 싶었습니다.
JYelton

1
@joeforker 맞아요. 더 많은 핀을 가진 마이크로의 비용은 내 프로젝트가 일회성이라는 점을 고려하면 매우 적었습니다. 일을 완수하기 위해 약 20 개의 IO 핀이있는 마이크로를 사용하는 것에 대해 생각했지만, 목표 중 하나는 매우 작은 회로판 설치 공간이었습니다. 또한, 멋진 형용사 피니에 !
JYelton

답변:


18

몇 개의 IO 핀에서 많은 수의 LED를 구동하는 데 사용할 수있는 몇 가지 방법이 있습니다.

가장 간단한 방법은 표준 행 / 열 디스플레이 멀티플렉싱입니다. 이 기술을 사용하면 IO 핀으로 LED를 구동 할 수 있습니다 . 수학적으로 듀티 사이클은 다음과 같습니다.(/2)2

1미디엄나는나는미디엄미디엄(고유 한 행 패턴, 고유 한 열 패턴)

즉,이 기술은 모든 LED가 켜졌을 때 (또는 모든 행 또는 모든 열이 동일 할 때) 듀티 사이클이 100 %이고 대각선이 켜질 필요가있을 때 (또는 모든 행이 다른 경우) 듀티 사이클이 임을 의미합니다. ). 모든 LED 또는 하나의 LED (또는 제로 LED)를 조명 할 때는 100 % 듀티 사이클 만 보장되지만 실제로는 그다지 중요하지 않습니다.1/

약간 더 복잡한 것은 Charlieplexing 입니다. 이 기술을 사용하면 IO 핀으로 LED를 구동 할 수 있습니다 . 이 기술 에서는 LED 만 동시에 켜질 수 있습니다. 수학적으로 듀티 사이클은 다음과 같습니다.21

1최소 동시 세트

여기서 동시 세트는 공통 양극 또는 공통 음극을 갖는 고유 한 LED 그룹입니다. (이것은 입증되지 않았으며, 잠시 동안 문제를 숙고 한 후에 도착한 것입니다. 듀티 사이클이 중요한 경우 더 자세히 살펴보고 싶을 것입니다.) 이것은 지적 적으로 훨씬 더 복잡한 계산입니다. 표준 다중화에 대한 등가 계산보다 계산적으로. 효과적으로, 모든 LED가 켜져 있지만 n-1 이하 LED의 일부 (일부만) 패턴의 듀티 사이클이 100 % 일 때 의 듀티 사이클을 얻게 됩니다. 1 개의 LED를 켜면 100 % 듀티 사이클 만 보장됩니다.1/

마지막으로 언급 할 방법은 시프트 레지스터 또는 IO 확장기 를 사용하는 것 입니다. 두 개의 핀 (원시 데이터 / 클록 인터페이스, I2C 또는 단방향 SPI)을 사용하여 임의로 많은 수의 LED를 제어 할 수 있습니다. 모든 패턴의 듀티 사이클은 100 %이지만 업데이트 속도는 LED 수에 반비례합니다. 가장 비용이 많이 드는 방법입니다. 15 개의 LED의 경우 IO 핀이 많은 마이크로로 업그레이드하는 것이 더 저렴할 것입니다.


듀티 사이클 측면에 대한 설명을 +1합니다. Charlieplexing에 대한 두 번째 문장에서는 "드라이브 의미 않았다 N ^ 2-n 개의 LED의N ? IO 핀
JYelton

찰 리플 렉싱은 각 행에서 빛을 하나만 생략하면 멀티플렉싱과 매우 유사하게 수행 할 수 있습니다. 실제로 컬럼 드라이버가 정전류 출력이 아닌 경우 다른 드라이버의 밝기와 일치시키는 것이 어려울 수 있지만 다이오드를 추가하여 해당 빛을 "복원"할 수 있습니다.
supercat

11

Charlieplexing 을 사용하면 핀 에서 LED를 직접 구동 할 수 있습니다 .×(1)

예 :

3 개의 핀에 6 개의 LED :

PINS        LEDS
0 1 2   1 2 3 4 5 6
0 0 0   0 0 0 0 0 0
0 1 Z   1 0 0 0 0 0
1 0 Z   0 1 0 0 0 0
Z 0 1   0 0 1 0 0 0
Z 1 0   0 0 0 1 0 0
0 Z 1   0 0 0 0 1 0
1 Z 0   0 0 0 0 0 1
0 0 1   0 0 1 0 1 0
0 1 0   1 0 0 1 0 0
0 1 1   1 0 0 0 1 0
1 0 0   0 1 0 0 0 1
1 0 1   0 1 1 0 0 0
1 1 0   0 0 0 1 0 1
1 1 1   0 0 0 0 0 0

3 개의 출력 핀을 사용하는 Charlieplexing 회로도


출력 회로도 및 유용한 회로도에 감사합니다.
JYelton

1
회로도를 그리는 또 다른 방법은 NxN 그리드와 같지만 열만 구동하고 기본 대각선을 행 열 단락으로 대체하는 것입니다.
supercat

한 번에 모두 켤 수 없다는 의미입니까? 즉, 한 번에 모든 장치를 켜려면 눈을 속일만큼 충분히 시간을 조정해야합니까?
MaNyYaCk

@MaNyYaCk 예. 네가 옳아.
Daniel Grillo

8

멀티플렉싱 (직접 드라이브)이 없으면 6 개의 LED로 제한됩니다.

찰 리플 렉싱을 사용하면 n 핀에서 n * (n-1) LED를 구동 할 수 있습니다.

I / O 익스팬더 또는 시프트 레지스터를 사용하면 거의 무제한의 LED를 구동 할 수 있습니다.
예 : MCP23008 8 비트 I2C I / O 확장기


I / O 익스팬더가 무엇인지 자세히 설명 할 수 있습니까?
JYelton

3
I / O 확장기는 I / O 핀과 레지스터를 포함하는 외부 칩입니다. I2C 또는 SPI와 같은 표준 통신 버스를 사용하여 통신 할 수 있습니다.
mjh2007

+1 TI의 TLC594 ( focus.ti.com/lit/ds/symlink/tlc5940.pdf )를 사용하여 많은 LED를 구동 할 수 있지만 많은 작업에 과도 할 수 있습니다. search.digikey.com/scripts/DkSearch/…
kenny

감사합니다. I / O 확장기를 사용하여 사용법을 익히도록하는 프로젝트를 설계해야합니다.
JYelton


2

다음은 내가 구축 한 찰 리플 렉싱의 예입니다.

이 장치는 등대 빔 시뮬레이터이며 4 개의 GPIO로 찰리 플렉스 된 12 개의 LED 시리즈를 사용하여 디스크 주위의 광선을 스윕합니다. 여기에 비디오가 있습니다 .

이 프로젝트는 PIC 기반이며 8pin uP 인 PIC12f683을 사용하며 8pin AVR과 비슷한 것으로 간주 될 수 있습니다.

LED의 강도는 약 60Hz에서 32 단계 PWM을 제공하는 인터럽트에 의해 구동됩니다. 한 번에 두 개의 LED 만 켜면 각 LED마다 50 %의 듀티를 제공 할 수 있습니다. 또한 해상도에 대한 PWM 재생률과의 균형을 유지합니다.

찰 리플 렉싱을 한 번에 하나의 LED 만 매우 빠른 재생률로 조명하는 "클래식"방법을 고수하는 경우 실제로 찰 리플 렉싱을 사용하기위한 코딩. 먼저 필요한 PORT 및 TRIS (pic 특정 레지스터)를 용지에 기록한 다음 결과를 정적 배열에 저장합니다. LED x를 밝게하려면 PIC는 어레이의 인덱스 [x]에서 값을 찾아 PORT에 직접 써야합니다 (캐릭 플렉스에 사용되지 않은 다른 핀의 상태를 유지하기 위해 약간의 마스킹 사용)

내 프로젝트는 향후 개발을 위해 하나의 GPIO를 유지하기를 원할 때 15 개가 아닌 12 개 LED 또는 5 개 GPIO가 허용하는 최대 20 개만 있습니다.

어쨌든 ... 방금 요청한 것과 비슷한 예제를 만드는 것이 도움이 될 것이라고 생각했습니다.

전체 소스 코드와 회로도는 내 블로그에서 확인할 수 있습니다 .


0

또 다른 옵션은 Neopixel LED를 사용하는 것입니다. 이 제품에는 내장 제어 IC가 있으며 원하는 수의 LED를 제어하려면 하나의 핀만 있으면됩니다. 물론 적절한 별도의 LED 전원이 필요합니다.

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