회로

Arduino로 8x8x8 LED 큐브를 만들고 제어하는 ​​방법 : 7 단계 (그림 포함)

Show and Tell: Hypnocube LED Cube!

Show and Tell: Hypnocube LED Cube!

차례:

Anonim

Instructables에는 많은 LED 큐브가 있습니다. 왜 다른 LED 큐브를 사용해야합니까? 대부분은 27 또는 64 개의 LED로 구성된 작은 입방체 용이며, 마이크로 컨트롤러에서 사용할 수있는 출력 수에 제한이 있기 때문에 드물게 커집니다. 이 큐브는 512 개의 LED가 될 것이며 Arduino에서 11 개의 출력 와이어 만 필요합니다. 이것이 어떻게 가능한지? Allegro Microsystems A6276EA LED 드라이버를 사용하여.
큐브 자체와 컨트롤러 보드, 마지막으로 코드를 어떻게 만들 었는지 보여 드리겠습니다.


용품:

1 단계 : 자료

큐브를 구축하는 데 필요한 모든 부품 :
1 Arduino / Freeduino와 Atmega168 이상의 칩
512 개의 LED, 크기 및 색상은 고객에게 달려 있습니다. 3mm 빨간색을 사용했습니다.
4 A6276EA Allegro의 LED 드라이버 칩
8 개의 NPN 트랜지스터가 전압 흐름을 제어하기 위해 BDX53B Darlington 트랜지스터를 사용했습니다.
4 1000 ohm 저항기, 1/4 와트 이상
12 560 옴 저항기, 1/4 와트 이상
1 330uF 전해 콘덴서
4 24 핀 IC 소켓
9 개의 16 핀 IC 소켓
4 "x4"(또는 그 이상)의 부품으로 모든 부품을 보관할 수 있습니다.
오래된 컴퓨터 팬
이전 플로피 컨트롤러 케이블
오래된 컴퓨터 전원 공급 장치
많은 연결선, 솔더, 납땜 인두, 플럭스, 다른 것
이것을하는 동안 당신의 인생을 더 쉽게 만들어라.
7 "x7"(또는 그 이상)의 목재 조각으로 LED 납땜 지그 제작
완료된 큐브를 표시하는 좋은 사례
My Arduino / Freeduino는 www.moderndevice.com의 Bare Bones Board (BBB)입니다. LED는 이베이 (eBay)에서 구매했으며 중국에서 출하 된 1000 개의 LED에 대해 23 달러를 들었다. 나머지 전자 제품은 Newark Electronics (www.newark.com)에서 구입했으며 가격은 약 25 달러입니다. 모든 것을 사야한다면이 프로젝트의 비용은 약 100 달러에 불과합니다.
나는 오래된 컴퓨터 장비가 너무 많아서 그 부분들이 스크랩 힙에서 나왔다.

2 단계 : 레이어 어셈블

이 512 LED 큐브의 1 층 (64 개 LED)을 만드는 방법 :
내가 구입 한 LED의 지름은 3mm입니다. 필자는 작은 LED를 사용하여 비용을 절감하고 책상이나 선반을 완전히 차지하지 않고 책상이나 선반에 앉아있을 정도로 큐브의 최종 크기를 작게 만들기로 결정했습니다.
저는 선 사이에 약 0.6 인치의 8x8 격자를 그렸습니다. 이것은 한 면당 약 4.25 인치의 입방체 크기를주었습니다. 각 층을 납땜 할 때 LED를 고정 할 지그를 만들기 위해 라인이 만나는 3mm 구멍을 뚫습니다.
A6276EA는 전류 싱크 장치입니다. 이것은 소스 전압 경로가 아닌 접지 경로를 제공한다는 의미입니다. 공통 음극 구성으로 입방체를 제작해야합니다. 대부분의 큐브는 공통 음극으로 제작됩니다.
LED의 긴 쪽은 일반적으로 양극이며 확인하여 확인하십시오. 내가 한 첫 번째 일은 모든 LED를 테스트하는 것입니다. 그렇습니다. 길고 지루한 과정이며 원하는 경우 건너 뛸 수 있습니다. LED 큐브를 조립 한 후에 큐브에서 사각 지대를 발견하는 것보다 LED를 테스트하는 데 시간을 할애하고 싶습니다. 1000 개 중 1 개의 불량 LED가 발견되었습니다. 나쁘지 않습니다.
11 인치의 단단하고 비 절연 된 훅 와이어를 잘라냅니다. 귀하의 지그에있는 행의 각 끝 부분에 1 개의 LED를 놓은 다음 와이어를 각 양극에 납땜하십시오. 이제 나머지 6 개의 LED를 행에 배치하고 양극을 와이어에 납땜하십시오. 이것은 수직 또는 수평 일 수 있습니다. 모든 레이어를 동일한 방식으로 수행하는 한 중요하지 않습니다. 각 열을 마칠 때, 양극에서 과량의 납을 줄이십시오. 약 1/8 "남았습니다.
모든 8 개의 행을 마칠 때까지 반복하십시오. 이제 방금 만든 행에 걸쳐 3 개의 연결선을 납땜하여 모든 것을 단일 부품으로 연결하십시오. 그런 다음 5 볼트를
저항을 통해 와이어 격자를 연결하고 접지 리드를 각 음극에 닿게하십시오. 불이 들어오지 않는 LED는 모두 교체하십시오.
조심스럽게 지그에서 레이어를 제거하고 따로 설정하십시오. 전선을 구부리면 걱정하지 마세요. 가능하면 최선을 다하십시오. 구부리기가 매우 쉽습니다. 내 사진에서 알 수 있듯이 구부러진 전선이 많이 있습니다.
축하합니다. 1/8 완료되었습니다. 레이어를 7 개 더 만듭니다.
선택 사항 : 레이어를 함께 솔더링 (3 단계)하기 쉽고 각 후속 레이어는 여전히 지그로 구부러지며 음극의 상단 1/4 인치는 45 ~ 90도 전방에 위치합니다. 이렇게하면
연결되어있는 LED 주위로 닿아 솔더링이 훨씬 쉽게됩니다. 첫 번째 레이어에는이 작업을 수행하지 말고 하나가 맨 아래 레이어이고 리드가 직선이어야한다고 선언합니다.

3 단계 : 큐브 조립

큐브를 만들기 위해 모든 레이어를 함께 납땜하는 방법 :
어려운 부분은 거의 끝났습니다. 이제 조심스럽게 하나의 레이어를 지그에 다시 넣으십시오. 그러나 너무 많은 압력을 사용하지 마십시오. 우리는 그것을 구부리지 않고 제거 할 수 있기를 원합니다. 이 첫 번째 레이어는 큐브의 윗면입니다. 첫 번째 레이어 위에 다른 레이어를 배치하고 선을 정렬하고 납땜을 시작하십시오. 나는 모서리를 먼저 만든 다음, 바깥 쪽 모서리를 만들고, 그 다음에 행을 만드는 것이 가장 쉬운 방법이라는 것을 알았다.
완료 될 때까지 레이어를 계속 추가합니다. 리드를 미리 구부린 경우 마지막으로 직선 리드로 레이어를 저장해야합니다. 그것은 바닥입니다.
각 레이어 사이에 너무 많은 공간이있어서 큐브 모양을 얻지 못했습니다. 별거 아니에요, 나는 그걸로 살 수 있어요.

4 단계 : 컨트롤러 보드 구축

컨트롤러 보드를 제작하고 Arduino에 연결하는 방법 :
회로도를 따라 선택하고 보드를 만드십시오. 컨트롤러 칩을 보드의 중앙에 놓고 왼쪽 측면을 사용하여 큐브의 각 레이어에 대한 전류를 제어하는 ​​트랜지스터를 유지하고 컨트롤러 칩에서 음극까지가는 커넥터를 고정하는 데 오른쪽을 사용했습니다. LED 열.
컴퓨터 전원 공급 장치에 연결하기 위해 여성용 몰 렉스 커넥터가있는 구형 40mm 컴퓨터 팬을 발견했습니다. 이것은 완벽했습니다. 칩을 가로 지르는 소량의 공기 흐름이 유용하며 컨트롤러 칩과 Arduino 자체에 5 볼트를 제공하는 쉬운 방법이 있습니다.
회로도에서 RC는 각 A6276EA에 연결된 모든 LED에 대한 전류 제한 저항입니다. LED에 5 밀리 암페어를 제공하기 때문에 1000 옴을 사용했습니다. Super Brite LED가 아닌 고휘도를 사용하므로 전류가 더 적습니다. 열에있는 8 개의 LED가 모두 한 번에 켜지면 40 밀리 암페어에 불과합니다. A6276EA의 각 출력은 90 밀리 암페어를 처리 할 수 ​​있으므로 범위 내에 있습니다.
RL은 논리 또는 신호 도선에 연결된 저항입니다. 실제 값은 존재하고 너무 크지 않은 한별로 중요하지 않습니다. 나는 그 (것)들의 잔뜩을 사용할 수 있었기 때문에 560 옴을 사용하고있다.
큐브의 각 레이어로가는 전류를 제어하기 위해 최대 6 amps를 처리 할 수있는 파워 트랜지스터를 사용했습니다. 이것은 큐브의 각 레이어가 모든 LED가 켜진 채로 320 밀리 암페어를 끌기 때문에이 프로젝트에 과잉입니다. 나는 방이 커지기를 원했고 나중에 컨트롤러 보드를 사용했다. 귀하의 필요에 맞는 크기의 트랜지스터를 사용하십시오.
전압 소스에 걸친 330uF 커패시터는 사소한 전압 변동을 완화시키는 데 도움이됩니다. 이전 컴퓨터 전원 공급 장치를 사용하고 있기 때문에 필요하지는 않지만 누군가가 5V 벽면 어댑터를 사용하여 큐브에 전원을 공급하고자 할 때를 대비하여 방치했습니다.
각 A6276EA 컨트롤러 칩에는 16 개의 출력이 있습니다. 필자는 다른 적합한 커넥터를 가지고 있지 않았기 때문에 16 핀 IC 소켓에 납땜을 납땜하여 컨트롤러 보드를 큐브에 연결하는 데 사용했습니다. 또한 IC 소켓을 반으로 자르고 트랜지스터를 큐브 층에 연결하는 8 개의 전선을 연결하는 데 사용했습니다.
Arduino의 커넥터로 사용할 오래된 플로피 케이블 끝 부분에서 약 5 인치 정도 잘라 냈습니다. 플로피 케이블은 2 열 20 핀, 베어 본 보드는 18 핀입니다. Arduino를 보드에 연결하는 매우 저렴한 방법입니다. 리본 케이블을 2 개의 와이어 그룹으로 따로 따로 떼어 냈습니다. 끝 부분을 벗기고 함께 납땜했습니다. 이렇게하면 Arduino를 커넥터의 두 행에 연결할 수 있습니다. 회로도를 따라 커넥터를 제자리에 납땜하십시오. Arduino에 전원을 공급하기 위해 커넥터의 5 볼트 및 접지 리드를 납땜하는 것을 잊지 마십시오.
모듈러 디자인이 나를 위해 잘 작동하도록이 컨트롤러 보드를 다른 프로젝트에 사용할 계획입니다. 연결을 하드 와이어 연결하려면 괜찮습니다.

5 단계 : 디스플레이 사례 구축

귀하의 최종 제품을 멋지게 보이게하십시오 :
나는 $ 4를 위해 취미 로비에서이 나무로되는 가슴을 발견했고, 그것이 멋지게 보이는 모든 철사를 잡을 공간이 있기 때문에 그것이 완벽 할 것이라고 생각했다. 나는 그들이 컴퓨터 책상에서 사용했던 것과 똑같은 얼룩을이 얼룩으로 얼룩 져서 일치시킨다.
솔더링 지그에 사용 된 그리드와 동일한 크기의 상단에 그리드를 그립니다 (선 사이 0.6 인치). 리드를 위쪽으로 통과하도록 구멍을 뚫고 레이어 / 평면 와이어 (단계 4의 트랜지스터에서)에 대해 그리드 뒤쪽에 다른 구멍을 뚫습니다. 작은 구멍을 통과하기 위해 64 개의 리드를 정렬하는 것이 어렵다는 것을 알게되었습니다. 마침내 프로세스를 더 빨리 진행하기 위해 모든 구멍을 조금 더 크게 드릴하기로 결정했습니다. 나는 약 0.2 드릴 비트를 사용하여 끝났다.
이제 큐브가 디스플레이 상단에 놓이게되어 모서리 리드를 구부려서 와이어를 부착 할 때 큐브가 제 위치에 유지됩니다. 모든 전선을 올바른 순서로 연결하십시오.
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
그리고 레이어 (회로도의 '평면'으로 표시)와 트랜지스터 사이에 와이어를 연결합니다. Arduino 핀 6의 트랜지스터는 큐브의 최상위 레이어입니다.
와이어가 잘못되었을 경우 코드 내에서 어느정도 수정할 수 있지만 많은 작업이 필요할 수 있으므로 올바른 순서로 시도하십시오.
좋아요, 모든 것이 내장되어 있으며 준비가되어 있습니다. 코드를 한 번 사용해 보겠습니다.

6 단계 : 코드

이 입방체에 대한 코드는 대부분의 경우와 다르게 수행됩니다. 적응 방법을 설명하겠습니다.
대부분의 큐브 코드는 열에 대한 직접 쓰기를 사용합니다. 코드는 열 X가 켜져 있어야하므로 약간의 주스를 ​​주어야한다고 말합니다. 그것은 컨트롤러 칩을 사용할 때 작동하지 않습니다.
컨트롤러 칩은 4 선을 사용하여 Arduino와 통신합니다 (SPI-in, Clock, Latch 및 Enable). 나는 출력이 항상 가능하도록 Enable (핀 21)을 저항 (RL)을 통해 접지시켰다. 나는 코드를 사용하지 않으므로 Enable을 사용하지 않았다. SPI-in은 Arduino의 데이터이며, Clock은 말하는 동안 두 사람 사이의 타이밍 신호이며, Latch는 컨트롤러에 새로운 데이터를 받아 들일 시간이라고 알려줍니다.
각 칩의 각 출력은 16 비트 2 진수로 제어됩니다. 예를 들어; 1010101010101010을 컨트롤러에 보내면 컨트롤러의 다른 모든 LED가 켜집니다. 코드는 디스플레이에 필요한 모든 것을 실행하고 해당 이진수를 작성한 다음 칩으로 보내야합니다. 그것은 소리보다 쉽습니다. 엄밀히 말하면 비트 단위의 덧셈입니다.하지만 비트 단위의 수학에서는 비현실적입니다. 그래서 모든 것을 10 진수로 처리합니다.
처음 16 비트에 대한 10 진수는 다음과 같습니다.
1 << 0 == 1
1 << 1 == 2
1 << 2 == 4
1 << 3 == 8
1 << 4 == 16
1 << 5 == 32
1 << 6 == 64
1 << 7 == 128
1 << 8 == 256
1 << 9 == 512
1 << 10 == 1024
1 << 11 == 2048
1 << 12 == 4096
1 << 13 == 8192
1 << 14 == 16384
1 << 15 == 32768
이것은 출력 2와 10을 밝히고 자 할 때 소수점 (2와 512)을 합쳐 514가됩니다. 컨트롤러에 514를 보내면 출력 2와 10이 켜집니다.
그러나 우리는 16 개 이상의 LED를 가지고 있으므로 약간 더 어려워집니다. 우리는 4 칩에 대한 디스플레이 정보를 만들어야합니다. 어느 것이 건물을 짓는 것처럼 쉽습니다. 3 번 더하십시오. 전역 변수 배열을 사용하여 제어 코드를 유지합니다. 그렇게 쉬운 방법 일뿐입니다.
4 개의 모든 디스플레이 코드를 보낼 준비가되면 래치를 놓고 (LOW로 설정) 코드 전송을 시작하십시오. 마지막으로 먼저 보내야합니다. 칩 4, 3, 2, 1에 대한 코드를 보낸 다음 래치를 다시 HIGH로 설정하십시오. Enable 핀은 항상 접지에 연결되어 있으므로 디스플레이가 즉시 변경됩니다.
Instructables에서 보았던 대부분의 큐브 코드와 일반적으로 웹은 미리 설정된 애니메이션을 수행하도록 설정된 거대한 코드 블록으로 구성됩니다.더 작은 큐브에서는 잘 작동하지만 디스플레이를 변경하려고 할 때마다 512 비트의 바이너리를 저장, 읽기 및 전송해야하므로 많은 메모리가 필요합니다. Arduino는 몇 프레임 이상을 처리 할 수 ​​없었습니다. 그래서 미리 설정된 애니메이션이 아닌 계산에 의존하는 큐브를 보여주는 간단한 함수를 작성했습니다. 어떻게하는지 보여주기 위해 작은 애니메이션을 포함 시켰지만, 나 자신 만의 디스플레이를 만들기 위해 맡겨 둘 것입니다.
cube8x8x8.pde는 Arduino 코드입니다. 나는 코드에 기능을 계속 추가 할 계획이며 주기적으로 프로그램을 업데이트 할 것이다.
matrix8x8.pde는 자신의 디스플레이를 제작하기위한 Processing의 프로그램입니다. 주어진 첫 번째 숫자는 pattern1 , 두 번째 숫자는 pattern2 등이됩니다.
A6276EA의 데이터 시트는 다음 웹 사이트에서 제공됩니다.
http://www.allegromicro.com/en/Products/Part_Numbers/6276/6276.pdf

7 단계 : 귀하의 수공예품 전시

이제 끝났습니다. 이제 큐브를 즐길 때입니다.


보시다시피, 내 큐브가 조금 비뚤어졌습니다. 나는 또 다른 건물을 짓는 데별로 열의가 없기 때문에 비뚤어진 채로 살거야. 나는 내가 조사 할 필요가있는 몇 개의 사각 지대를 가지고있다. 연결 상태가 좋지 않거나 새로운 컨트롤러 칩이 필요할 수도 있습니다.
이 Instructable이 A6276AE를 사용하여 자신 만의 입방체 또는 다른 LED 프로젝트를 만들 것을 부탁드립니다. 댓글을 작성할 경우 댓글에 링크를 게시하십시오.
나는 여기서 어디로 가야할지 결정하려고 애썼다. 컨트롤러 보드는 또한 4x4x4 RGB 큐브를 제어하므로 가능성이 있습니다. 구형을 작성하는 것이 깔끔하고 코드 작성 방법이 너무 복잡하지 않을 것이라고 생각합니다.