제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 |
| ||||
| ||||
| ||||
| ||||
|
| ||||
| ||||
| ||||
|
소개
이것은 나의 첫 번째 Arduino 프로젝트입니다. 내 작업은 Persistence of Vision Display[2,3,4]를 만든 여러 제작자 프로젝트에서 영감을 받았습니다.
시력의 지속성 (POV)는 여러 개의 개별 이미지가 인간의 마음 속에서 단일 이미지로 혼합되는 착시를 의미하며 영화 및 애니메이션 영화에서 모션 인식에 대한 설명으로 여겨집니다[1].
프로젝트 [2,3,4]는 개별 LED와 개별 시프트 레지스터를 사용하여 POV 글로브 디스플레이를 구현합니다. 대신 내 장치는 회전하는 실린더와 기성품 RGB LED 스트립을 POV 디스플레이로 사용하고 있습니다.
내 POV 실린더의 주요 기능은 다음과 같습니다.
<울>기술 개요
<울>
기계 건축
기계적 구성은 아래 그림과 같습니다.
이 장치는 섀시와 로터로 구성됩니다. 섀시는 3개의 나사산 막대를 통해 연결된 2개의 원형 합판 디스크로 구성됩니다. 디스크 사이의 거리는 120mm입니다. 중간에는 두 개의 볼 베어링과 샤프트가 있습니다. 샤프트의 경우에도 나사산 막대가 사용됩니다. 샤프트는 2개의 크라운 기어와 톱니 벨트를 통해 전기 모터로 구동됩니다. 회전 속도는 최대 1300RPM(22Hz)입니다.
로터는 2개의 스티로폼 실린더와 2개의 원형 알루미늄 디스크로 구성됩니다. 스티로폼 실린더는 하부 디스크에 접착되어 있습니다. 상단 디스크를 제거할 수 있습니다. 로터를 샤프트에 부착하는 데 사용됩니다.
전자 장치는 로터의 상부에 있습니다. 여기에는 다음과 같은 부분이 포함됩니다.
<울>전원 공급 장치(7.5V)는 슬라이딩 접점과 접점 링을 통해 전원 공급 장치 보드에 공급됩니다.
총 40개의 RBG LED가 있는 4개의 LED 스트립이 사용됩니다. 아두이노 쉴드에 케이블로 연결되어 있습니다.
4개의 LED 스트라이프가 아래 그림과 같이 배치됩니다. 4개의 이동된 LED 스트라이프를 사용하여 LED 사이의 Y축 거리를 4로 나눕니다. X축의 거리는 SW에서 처리합니다. SW는 회전당 40개의 모든 LED를 151번 업데이트합니다. 그림의 격자는 보이는 픽셀에 해당합니다.
전자 회로
전자 회로는 첨부된 PDF 회로도에 나와 있습니다.
LM317 전압 조정기가 있는 전원 공급 장치 보드가 있습니다. 입력 전압은 7.5V이고 출력 전압은 4.6V입니다. 전압 조정기는 Arduino Due 보드와 LED 스트립을 공급합니다.
Arduino 용 자체 제작 실드도 있습니다. 여기에는 LED 스트립에 대한 커넥터 케이블과 IR 수신기용 회로가 포함됩니다. IR 수신기는 로터 위치를 감지하는 데 사용됩니다. 아두이노의 타이머/인터럽트 입력에 연결됩니다.
STRIP0에서 STRIP3까지 4개의 LED 스트립이 있습니다. 각 스트립에는 5개의 LPD8806 LED 드라이버와 10개의 RBG LED가 있습니다. STRIP0은 USART0에 연결되고 STRIP1은 USART1에 연결됩니다. 두 USART 모두 SPI 모드에서 작동합니다. STRIP2와 STRIP3는 직렬로 연결되어 있으며 Arduino의 SPI 인터페이스에 의해 구동됩니다.
PC와의 통신을 위해 HC-06 블루투스 모듈이 USART3에 연결됩니다. 블루투스 모듈은 아두이노 보드에서 제공하는 3.3볼트에 의해 공급됩니다.
Arduino 소프트웨어
Arduino 소프트웨어는 메인 프로그램(mpc.ino ) 및 다음 라이브러리:
<울>LED 스트립에 대한 사진의 주기적 출력은 인터럽트 구동으로 수행됩니다. 두 개의 토글 프레임 버퍼가 있습니다. 각 프레임 버퍼는 40 x 151 픽셀의 사진 하나를 보유합니다. 각 픽셀은 1바이트 색상 팔레트 인덱스입니다. 한 프레임 버퍼가 인터럽트와 DMA를 통해 LED 스트립으로 출력되는 동안 다른 프레임 버퍼는 메인 프로그램(예:GIF 그림을 디코딩하는 기능)에서 준비합니다. 프레임 버퍼의 토글은 프레임 인터럽트 루틴에 의해 수행됩니다.
IR 센서에 의해 트리거되는 회전당 하나의 프레임 인터럽트가 있습니다. 프레임 인터럽트 루틴은 하드웨어 타이머를 통해 진화 속도를 측정하고 하드웨어 타이머를 사용하여 주기적인 컬럼 인터럽트(컬럼당 하나, 즉 회전당 인터럽트 150개)를 프로그래밍합니다. 열 인터럽트 루틴은 현재 열을 LED 스트립으로 출력합니다. 성능상의 이유로 출력은 완전히 병렬로 작동하는 3개의 DMA 채널을 통해 수행됩니다.
전체 Arduino 소스 코드는 github에서 사용할 수 있습니다.
PC 제어 프로그램
PC 제어 프로그램(pccp )는 C++로 작성된 명령줄 도구입니다. Cygwin에서 실행 중이며 Bluetooth를 통해 Arduino와 통신합니다. pccp 다음 단일 문자 명령으로 POV 실린더를 제어할 수 있습니다.
<울>pccp 그래픽 사용자 인터페이스에 대한 인터페이스도 제공합니다. 또한 현재 회전 속도(Hz 및 µs)와 프레임 카운터 값을 표시합니다.
전체 소스 코드는 github에서 사용할 수 있습니다.
그래픽 사용자 인터페이스
그래픽 사용자 인터페이스는 유니버설 Windows 앱입니다. POV Cylinder에서 표시할 GIF 파일을 선택할 수 있습니다. 이 앱은 "Microsoft Windows Universal Samples"[5]의 FilePicker 앱에서 파생되었습니다.
전체 소스 코드는 github에서 사용할 수 있습니다.
참조
[1] https://en.wikipedia.org/wiki/Persistence_of_vision
[2] RGB LED 지구 - 시점 - 40 x 200
[3] POV 글로브 디스플레이 RGB
[4] POV Globe Display RGB - 프로젝트 설명(독일어)
[5] https://github.com/Microsoft/Windows-universal-samples
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">제조공정
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 4 저항 10k 옴 × 4 저항 221옴 음, 220옴... × 2 단일 회전 전위차계 - 100,000옴 × 1 부저 × 1 브레드보드(일반) × 1 점퍼 와이어(일반) × 1
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 1 Perma-Proto 브레드보드 절반 크기 × 1 점퍼 와이어(일반) × 1 저항 1k 옴 × 1 저항 10k 옴 × 1 저항 470k ohm 1% × 3 저항 680옴 1% × 3