기타와 같은 목을 가진 MIDI와 같은 컨트롤러를 만들려고합니다. 그 목에는 거대한 압력 센서 매트릭스가 있습니다. 컨트롤러는 3 개의 문자열을 에뮬레이션합니다.
작동 방식 : 전원에 연결된 3 개의 긴 양면 구리 테이프 스트립 (넥 길이 0.5cm)이 있습니다 (3.3V 또는 5V는 중요하지 않습니다). 이 스트립에는 압력에 따라 저항이 변하는 Velostat 층이 있습니다. velostat의 상단에는 velostat 층을 통한 전압 판독 값을 내뿜는 무언가에 연결된 구리 테이프의 다른 행 또는 셀 층이 있습니다. 목의 길이는 약 40cm이므로 줄이 80 개 이상입니다.
목을 따라 차트의 열로 아래쪽 3 개의 구리 테이프 스트립을 상상하면 측정 방법에 따라 센서가 셀 또는 행이됩니다 (열을 다중화 할 수도 있다고 생각했습니다. 행이있을 수 있습니다.) 몇 가지 특별한 조건이 있지만이 작업을 더 쉽게 할 수 있습니다. 이것은 기타와 같은 컨트롤러이므로 모든 상호 작용을 측정 할 필요는 없습니다! 컨트롤러 본체에 가장 가까운 터치 만 중요합니다. 또한 8 비트의 해상도는 충분히 정확해야합니다. 어쨌든 255 압력 수준은 아마도 필요한 것 이상입니다.
이제 어려운 일들 :
측정은 해머 온 등을 감지 할 수있을 정도로 실시간으로 이루어져야합니다 (샘플 속도를 얼마나 높게 측정해야하는지 잘 모름-측정 및 재생성을 위해 몇 kHz로 추정) 컨트롤러의 디지털 출력은 다음 중 하나 여야합니다. MIDI (문자열 당 하나의 개별 채널 3 개) 또는 Raspberry Pi로 처리 할 수있는 디지털 신호.
내 지식이 실제로 제한되어 있으므로 작업에 적합한 도구를 생각할 수 없었습니다. 내가 아는 것은 가능합니다. 매우 유사한 기술을 사용하는 유사하지만 다른 컨트롤러가 있습니다 (실제로 리버스 엔지니어링 된 것으로 나타났습니다. 실제로 리버스 엔지니어링되었으며 특허를 보유하고 있으며 그 방법에 대한 정보는 생각보다 비열한 것이 아닙니다) .ROLI라고합니다. 해안.
TL; DR :
약 240 개의 센서
동일한 회선으로 구동되는 80 개의 그룹으로 분리 가능
이것은 실시간 응용 프로그램입니다. 터치 할 때 모든 센서에서 압력을 가져와야합니다 (일부 조건이 적용됨, 위 참조).
미리 감사드립니다. 읽어야 할 것이 많다는 것을 알고 있습니다. 나는 어떤 제안에 감사하고 내가 생산하기로 설정 한 끔찍한 혼란을 달성하도록 도울 수 있다면 매우 기쁠 것입니다!
내가 생각한 것들 :
멀티플렉싱 행 및 열, MCP3008 이상의 ADC를 사용하여 각 셀을 읽고 위치 별 최저 상호 작용을 최종 신호에 푸시하지만 내 계산에서 병목 현상이 발생할 수있는 ATmegas를 체인 업 (데이지 체인 또는 트리와 같은) 통신 오버 헤드. 또한 이전 모델에는 리본 전위차계가 포함되어 있는데,이 설계는 설계가 나쁘기 때문에 (몇 번의 시도로 충분히 시원하지 않았기 때문에) 버렸습니다.
편집 / 업데이트 :
지금까지 좋은 제안에 감사드립니다! 덕분에 이제 내 문제를 훨씬 더 명확하게 표현할 수 있습니다.
80 열 * 3 열의 압력 센서 매트릭스가 있습니다. 사람이 센서 매트릭스와 상호 작용하면 근접한 여러 센서가 열을 따라 만 터치를받습니다. 컬럼은 기계적으로 분리됩니다. 센서의 저항은 100 Ohm과 1 kOhm 사이입니다. 이러한 모든 센서는 깊이 8 비트로 판독되고 처리되어야하며 결과는 1kHz 이상의 속도로 전송되어야합니다. 따라서 단일 판독 / 처리에는 밀리 초 미만이 소요됩니다. 열당 최종 출력은 float32의 경우 4 바이트, uint8의 경우 1 바이트 여야합니다. float32는 열을 따라 첫 번째 상호 작용의 평균 위치를 나타냅니다. 상호 작용은 압력이 특정 임계 값을 초과하는 연속적인 센서 클러스터로 정의됩니다. 처리가 혼합되는 곳입니다. 판독 값이 임계 값을 초과 할 때까지 열이 아래로 이동합니다. 그러면 상호 작용의 시작으로 계산됩니다. 모든 센서의 압력과 위치는 첫 번째 센서까지 기억되며, 최대 4 개의 연속 센서로 임계 값 아래로 떨어집니다. 기록 된 상호 작용의 모든 센서에서 가장 높은 압력 (가장 낮은 저항)을 판독하는 센서와 바로 위 또는 아래에 가장 높은 센서가 두 개만 처리됩니다. 부동 소수점 위치는 압력에 의해 가중치가 부여 된 두 센서 위치를 평균하여 계산됩니다. 상호 작용의 전체 압력은 0과 255 사이에 고정 된 두 압력을 추가하는 것입니다 (단위 8의 두 압력을 uint16에 추가하고 반올림없이 2로 나누고 불필요한 비트는 버립니다-이것은 빠릅니다). 이것은 모든 열에 대해 발생해야합니다. 15 바이트 크기의 결과는 SPI를 통해 신시사이저 역할을하는 작은 컴퓨터 (Raspberry Pi B3)로 전송됩니다. 전송 방법이 설정되어 있지 않습니다. SPI가 업무에 적합한 도구가 아닌 경우 Raspberry Pi가 처리 할 수있는 모든 통신 방법을 기꺼이 취하겠습니다. 이것은 음악 대화 형 응용 프로그램이므로 대기 시간이 중요합니다.
정확한 질문은 다음과 같습니다. 은행을 해치지 않고 단일 마이크로 컨트롤러로이 문제를 해결할 수 있습니까? 취미 프로젝트를 위해 수백 달러 상당의 IC를 살 여유가 없습니다. 어떤 하드웨어를 추천 하시겠습니까? 내가 조심해야 할 명백한 경고가 있습니까?
내가 지금까지 얻은 답변에서 얻은 접근 방식은 각 열에 개별적으로 전원을 공급 한 다음 SPI를 통해 Arduino에 연결된 5 개의 16 채널 ADC (ADS7961)로 행을 읽습니다. 이것이 가장 쉬운 방법이 아니거나> 1 kHz의 속도에 도달하기에 충분히 빠르지 않을까 걱정됩니다.
면책 조항 : 나는 전기 공학에 관해서는 일반적으로 이론적 인 화학자이자 끔찍한 아마추어입니다. 내가 아는 모든 것은 자율적이며 전문적인 배경이 없습니다 (결과적으로 지식이 많은 사람들의 도움을 구하는 이유입니다). 그래도 소프트웨어를 둘러싼 길을 알고 있습니다. 소프트웨어에 관한 모든 것, 나는 충분한 시간으로 알아낼 것입니다. 또한 저는 독일인이므로 가끔 문법 결함이 있습니다.