제조공정
| 부품명 | 수량 |
|---|---|
| Arduino UNO | 1 |
기타 연주에서 가장 중요한 것 중 하나는 악기가 정확히 튜닝되어 있는지 확인하는 것입니다. 최고의 기타리스트라도 튜닝이 맞지 않는 기타로는 좋은 소리를 낼 수 없습니다. 표준 튜너로 수동 튜닝하는 것이 일반적이지만, 자동 튜너를 사용하면 훨씬 쉽고 재미있습니다! 이 Arduino 기반 프로젝트가 기타를 자동으로 튜닝해 줍니다.
자동 기타 튜너의 전체 구조입니다.
입출력은 4개 회로로 제어: 푸시 버튼용 디지털 입력, 기타용 아날로그 오디오 입력, LED 디스플레이용 디지털 출력, 튜닝 페그 그리퍼용 모터 구동 회로. 이 4개 회로가 Arduino Due와 상호작용하며, Simulink로 개발된 알고리즘이 실행됩니다.
기타는 표준 기타 케이블로 튜너에 연결. 케이블 끝에는 팁과 슬리브 두 연결부가 있습니다. 한쪽 끝을 입력 잭에 연결하고, 팁과 슬리브 리드에 와이어를 납땜하여 오디오 입력 회로에 연결.
이 회로에는 TL972 오페라셔널 앰프를 추천합니다. 매우 낮은 노이즈의 레일투레일 앰프로 매우 낮은 공급 전압에서도 동작합니다.
일반 DC 모터는 사용할 수 없습니다. 저속 고토크의 기어드 모터가 필요합니다. 사용한 모터는 6 RPM, 최대 토크 613 oz-in, 전압 범위 3-12V로 9V 배터리를 전원으로 사용.
모터 축에 클램프 허브, 나사 4개, 테이프로 간단한 그리핑 메커니즘을 조립했습니다.
Simulink와 Arduino 지원 패키지로 튜너 알고리즘을 개발했습니다. Simulink는 알고리즘 개발과 동적 시스템 모델링을 위한 블록 다이어그램 환경입니다. 지원 패키지로 Simulink 블록을 사용해 Arduino 핀 읽기/쓰기가 가능합니다. 외부 모드 기능으로 알고리즘을 Arduino에서 시뮬레이션하며 자동 코드 생성과 실시간 파라미터 튜닝이 가능하고, 재컴파일 없이 실행 중인 시뮬레이션을 조정할 수 있습니다. 이후 알고리즘을 하드웨어에 배포해 독립 실행 가능.
외부 모드로 스코프 블록을 사용해 알고리즘 실행 중 일부를 모니터링할 수 있습니다. 버튼 스코프에서 버튼 눌림 시 입력이 0에서 1로 변경됨을 확인. 이 0→1 상승 에지(라이징 트리거)로 현 선택을 전환합니다. "Select String"이라는 Stateflow 차트를 만들었는데, 6개 현 각각에 대한 6개 상태를 가지며 상승 트리거 입력에 따라 상태 전이합니다.
각 상태 진입 시 해당 현의 LED 핀을 HIGH로, 이탈 시 LOW로 설정. 기본값으로 저음 E현(6번 현)을 선택하여 전원 투자 시 이 상태에서 시작.
Stateflow 차트 출력 7개: 6개 현 LED용 + periodRange(나중에 설명). LED 출력은 Arduino 디지털 출력 블록으로 연결.
기타 신호는 아날로그 입력 블록으로 들어옵니다. 블록 샘플 타임을 0.0002초(5kHz 샘플링 레이트)로 설정. 기타를 연주하며 오디오 스코프 블록을 열면 파형 확인 가능.
스코프 블록으로 오디오 회로의 포텐셔미터를 조정해 입력 게인 튜닝. 파형 피크가 최대값 1023에 도달하지 않는 최대한 높은 게인으로 설정하여 가장 정밀한 신호 읽기 가능.
연주하지 않을 때 입력 신호는 500-700 사이의 평탄한 라인(제 경우 약 550). 이 값을 알아야 튜너가 음이 연주될 때만 오디오를 처리합니다. 평탄한 라인 바로 위인 575를 임계값으로 설정. Simulink의 실시간 파라미터 튜닝으로 쉽게 임계값 설정 가능.
기타에서 단일 음을 연주하면 생성된 파형은 주기적입니다. 파형의 주기는 특정 음높이에 대응. 튜닝 알고리즘은 파형 주기를 결정해 현의 음높이를 추정. 이 피치 추정을 수행하는 MATLAB 함수를 작성해 MATLAB Function 블록으로 Simulink 모델에 포함.
MATLAB 함수는 각 현에 대해 "인튜닝으로 간주되는 주기 범위" 입력이 필요하며, 이는 Stateflow 차트의 periodRange 출력에서 옵니다. 함수는 주기 범위를 기반으로 현의 음높이가 너무 높은지, 낮은지, 인튜닝인지 판단하고 모터 제어 출력을 생성.
MATLAB 함수 출력은 모터를 제어하는 3개 핀으로, Arduino 디지털 출력 블록으로 직결.
알고리즘 검증 후 하드웨어에 배포하여 PC 연결 없이, Simulink 독립적으로 실행 가능.
이제 자동으로 기타 튜닝 가능!
푸시 버튼 회로: 풀다운 저항이 있는 간단한 스위치.
LED 디스플레이 회로: 6개 LED와 전류 제한 저항.
아날로그 오디오 입력: Arduino 아날로그 입력 핀 'A0'로 기타 오디오 신호 읽기. Arduino Due는 0-3.3V 전압 읽기 가능. 그러나 기타 신호는 진폭이 매우 작고 0V를 중심으로 진동하여 Arduino가 읽을 수 없는 음전압 포함. 이를 해결 위해 입력 회로가 신호 증폭 및 DC 오프셋 추가, 고주파 성분 제거용 로우패스 필터 제공. 샘플링 레이트 5kHz이므로 2.5kHz 이상 주파수 제거.
모터 구동 회로: Arduino 디지털 출력 3핀을 L293D H-브리지 칩에 연결하여 모터 정/역/정지 제어. 인에이블 핀이 HIGH일 때만 모터 회전, 나머지 2핀으로 방향 결정.
제조공정
배경 페인트—액체 또는 페이스트 형태의 비히클에 분산된 안료—는 보호와 장식 두 목적을 겸합니다. 붓, 롤러, 스프레이건으로 목재, 금속, 석재 등에 도포합니다. 최초 알려진 벽화는 2만~2만 5천 년 전 프랑스와 스페인 동굴에 남아 있습니다. 원시 예술가는 흙 안료, 숯, 열매 즙, 돼지기름, 혈액, 밀크위드 수액 등 주변 천연 물질로 인간과 동물을 그렸습니다. 이후 중국, 이집트, 히브리, 그리스, 로마 문명이 기술을 발전시켜 황토 적/황, 분필, 비화황, 공작석 녹색 같은 안료를 아라비아 고무, 석회, 난백, 밀랍 같은 바인더
필요한 부품 및 소모품 부품명 수량 비고 아두이노 우노 1 TI 듀얼 H-브리지 모터 드라이버 L293D 1 브레드보드 1 디질런트 NI myRIO용 모터 어댑터 1 필요한 도구 글루건 프로젝트 개요 이 프로젝트는 일상생활에서 발생하는 물 낭비 문제를 해결하기 위한 자동 수도꼭지 시스템입니다. 코드 아두이노 기반 IR 센서 자동 수도꼭지 (C/C++) 아두이노와 IR 센서를 이용해 일상생활의 물 낭비 문제를 해결하는 자동 수도꼭지를 만들었습니다. #include <Servo.h>