산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 기반 MIDI 스테퍼 모터 신시사이저

부품 및 소모품

부품수량비고
Arduino UNO (또는 호환 보드)1I/O 확장을 위해 Mega 등 사용 가능
A4988 스테퍼 드라이버4
Arduino CNC Shield V31선택 사항, 없으면 브레드보드에 직접 배선
12V 6A 파워 서플라이1스테퍼 모터 구동용
NEMA 17 스테퍼 모터 (OpenBuilds)4

필요 도구 및 장비

프로젝트 소개

플로피 드라이브 음악 영상을 보고 스테퍼 모터로 소리를 내는 악기를 직접 만들기로 했습니다. 기존 프로젝트들은 코드 미공개 또는 버그가 많아, C++ 학습 경험을 살려 간단하고 수정하기 쉬운 코드를 목표로 개발했습니다.

전체 프로세스

핵심은 MIDI 데이터를 추출해 각 음에 해당하는 스테퍼 모터 스텝 속도(주파수)로 변환하는 것입니다.

MIDI 데이터 추출

MIDI 라이브러리를 이용해 들어오는 MIDI 메시지(Note On/Off, 채널 등)를 파싱하고, 음높이(노트 번호)와 채널 정보를 스테퍼 제어 함수로 전달합니다.

스테퍼 제어

A4988 드라이버의 STEP, DIR 핀으로 제어합니다. DIR은 소리에는 영향 없으므로 LOW 고정(또는 GND 연결). STEP 핀에 펄스를 주면 모터가 한 스텝 회전하며 소리가 납니다. digitalWrite로 펄스 생성.

동시 다중 모터 구동의 과제

여러 모터를 동시에 돌리려면 delay()를 쓸 수 없습니다. 대신 micros()로 마이크로초 단위 타이밍을 계산해 각 모터별 다음 펄스 시점을 관리합니다. 속도 변수를 배열로 만들어 인덱스 = 모터 번호 = MIDI 채널로 매핑, 모터 수를 배열 크기만 바꾸면 쉽게 확장 가능.

초기엔 millis()를 썼으나 해상도 부족으로 음정 구현 불가 → micros()로 해결.

속도(주기) 계산

테스트 결과 440Hz 사각파를 STEP 핀에 주면 A4(440Hz) 음이 나옴. 즉, 스텝 펄스 주기(µs) = 1,000,000 / 주파수. MIDI 노트 번호(0~127)별 주기를 미리 계산한 pitchValues 배열에 저장. 속도 0 = 정지.

USB MIDI 장치로 만들기

아두이노의 ATmega16U2(또는 8U2) 펌웨어를 mocuLUFA로 교체하면 USB MIDI 장치로 인식됨. 듀얼 부트 지원으로 ICSP 헤더에 점퍼만 꽂으면 USB 시리얼(업로드용) ↔ USB MIDI 전환 가능. HIDUINO도 대안.

코드

전체 소스코드, 설정 가이드, 튜닝 스케치는 GitHub 저장소에 있습니다.

https://github.com/jzkmath/Arduino-MIDI-Stepper-Motor-Instrument

커스텀 파트 및 인클로저

회로도

제조공정

  1. 호박: 고대 수지에서 과학적 보물로 - 역사, 특성, 현대적 용도
  2. 기요틴: 역사, 설계, 유산
  3. 실리콘: 특성, 생산, 시장 전망
  4. 우쿨렐레: 포르투갈 뿌리에서 현대 장인정신까지
  5. 미국 닭고기 산업 완벽 가이드: 역사, 생산 체계, 품질 관리
  6. 퇴비: 토양을 살리는 궁극의 유기농 솔루션
  7. 젤라틴: 고대 단백질에서 현대적 응용까지 – 생산, 용도, 안전성
  8. 현대 핀 텀블러 자물쇠의 진화와 제조
  9. 보드카: 고대 증류에서 현대 생산까지
  10. 철: 특성, 역사, 일상 응용