홀 효과 센서를 통해 오르간 페달 위치를 전자기 방식으로 감지

자력은 아마도 마법에 가장 가까운 것일지도 모릅니다. 마이크로 컨트롤러가 그 뒤를 따르죠. 이 둘을 결합한 이야기를 들려드리겠습니다. 또한 요한 세바스찬 바흐 이야기를 해보려고 합니다. 오르간의 페달은 키보드와 같은 방식으로 작동하여, 오르간 연주자에게 하나의 추가적 '입력 장치'를 제공합니다(그림 1).

그림 1: 악기 키보드와 동일하게 배치된 오르간 페달 오르간으로 젓가락 행진곡을 연주할 수 있을까요? (이미지 출처: Michael Dunn)

하지만 이 내용은 모든 종류의 페달에 적용됩니다. 실제로, 생각할 수 있는 모든 종류의 스위칭 또는 위치 감지 응용 제품에 적용됩니다. 계속 읽어보시죠.

나의 오르간 이야기(건너뛰셔도 좋습니다)

십대 시절부터, 저는 J.S. 바흐의 아름다운 음악을 연주하기 위해 파이프 오르간이나 그와 비슷한 악기를 가지고 싶어 했습니다. 파리 생제르멩 오세루아 교회의 아름다운 오르간으로 연주하는 바흐의 음악이 상상되시나요(그림 2)? 비용과 공간적인 측면에서 파이프 오르간은 현실적이지 않기 때문에, 초반에는 거대한 전 아날로그 설계부터 시작하여 나중에는 디지털 방식으로 생성된 부가 합성 개념에 이르기까지 전자 오르간을 수십 년 동안 제 마음에 두고 있었습니다. 핵심만 말씀드리면, 키보드와 페달보드를 구입한 것 외에 이 계획은 아무런 성과가 없었습니다. 물론 전자 오르간을 구매할 수도 있었지만 마음에 드는 것이 없었고, 또한 전자 오르간에 무슨 재미가 있겠습니까?

그림 2: 설치할 공간도 없지만, 이런 파는 게 아닙니다. (이미지 및 출처: 파리 생제르멩 오세루아 교회의 오르간, Wikipedia.org)

하지만 최근 수년에 걸쳐 Hauptwerk(오르간 키보드 중 하나를 가리키는 독일어 이름)와 같은 프로그램이 샘플링 기술을 통해 실제 오르간의 소리를 재현하는 훌륭한 엔진으로 변모했습니다. 악기를 처음부터 설계하겠다는 저의 꿈을 버려야 할 때가 온 것 같습니다.

페달 위치 감지

오르간 시뮬레이션에 상용 소프트웨어를 사용하기로 한 저는, 2개 ~ 3개의 키보드와 하나의 페달보드를 포함하는 콘솔을 만들어야 했습니다. 수년 전에 이러한 메커니즘을 구했지만 여기에는 어떤 스위칭/감지 기능도 없습니다. 어떻게 해야 할까요?

기본적인 해결책은 키 및 페달마다 스위치(또는 노출된 접점)를 사용하는 겁니다. 하지만 이렇게 하면 속도와 위치 감지 기능을 구현할 수 없게 됩니다. 왜 오르간에 이러한 기능이 필요한지 의아하실 수도 있지만, 완전히 기계적인 클래식 오르간은 접촉에 반응합니다. 물론 피아노 정도만큼은 아니지만요.

그래도 접점 두 개를 엇갈리게 배열하는 방법(접점 한 개는 열리는 시간, 다른 한 개는 닫히는 시간을 감지하여 속도를 측정), 광학, 압력, 정전 용량 방식, 유도 용량 등의 여러 스위치 옵션이 있지만, 저는 자기 감지에 끌렸습니다. 낮은 비용, 저전력, 여러 실장 옵션, 위치 감지를 제공하는 선형 홀 효과 센서가 가장 효과적일 것 같았습니다. 선택할 수 있는 다양한 센서 중에서, 저는 결국 소형 브레이크아웃 기판에 실장되어 있는 32개의 Honeywell SS39ET 홀 효과 센서를 선택했습니다(그림 3). 이 시점에서는 SparkFunPRT-08024 절연 전선을 사용하여 전력만 연결되어 있습니다. 제가 1979년경 여름 방학 때 Honeywell에서 일했다면 믿으시겠습니까? 여기서 처음으로 홀 효과에 대해 알게 되었습니다. 홀 효과는 키보드 스위치(악기가 아닌 컴퓨터 키보드)에 사용되었습니다.

그림 3: 소형 브레이크아웃 기판에 실장된 5개의 Honeywell SS39ET 홀 효과 센서. 여기에서 볼 수 있듯이 이 때는 전력만 연결되어 있습니다. (이미지 출처: Michael Dunn)

제가 우려했던 것은 페달 사이의 자기 누화였습니다. 간단하게 테스트해 본 결과, 바로 옆의 자석을 움직였을 때 센서의 출력이 약 2%밖에 변하지 않았고, 이는 이 응용 제품에서 수용 가능한 수준입니다. 필요한 자기장을 제공하기 위해 Radial Magnets Inc.의 지름 ½인치 8184 자석을 페달에 실장했습니다(그림 4). 더 민감한 사용 사례에는 자기 차폐가 필요할 수 있습니다. 전선 휨을 감당할 수 있다면 자석을 고정하고 센서를 움직이는 옵션도 있습니다.

그림 4: 페달에 실장된 자석이 필요한 자기장을 제공하여 홀 효과 센서를 활성화합니다. (이미지 출처: Michael Dunn)

마이크로 컨트롤러의 마법

다음으로, 마이크로 컨트롤러를 선택해야 했습니다. 이 경우에는 소형 기판에 설치되어야 했죠. 한 개를 생산하는데 휠(또는 PC 기판)을 다시 만들 필요는 없으니까요. 제 선택에서 가장 중요한 측면은 “프로세서를 어떻게 프로그래밍할 것인가?”였습니다. Arduino 환경에서나, 제조업체 개발 지원을 사용하는 경우에나, 기본적인 대답으로 “C 언어”가 떠올랐습니다. 하지만 MicroPython에 관한 좋은 평판을 들어 왔었고 정규 Python을 좋아했기 때문에 시도해 보기로 결정했습니다. 결국 Microchip Technology ATSAMD51J19A-AU-EFB 120MHz Arm Cortex-M4 코어가 장착되어 있고 우수한 주변 장치가 제공되는 Adafruit3857 Feather M4 Express 기판을 선택하게 되었습니다. Adafruit에는 CircuitPython이라는 자체적인 MicroPython이 있어, 이 언어를 사용하기로 했습니다.

이 언어의 단점은 속도입니다. 컴파일링되는 것이 아니라 해석이 필요한 Python은 C 언어보다 훨씬 낮은 속도로 실행됩니다(라이브러리 사용량 등의 요인에 따라 결과가 달라질 수 있음). 실시간 프로젝트이므로 Python을 포기해야 했지만 이 내용은 향후 블로그에서 따로 다루겠습니다. 어쨌든 이 경험을 통해 많은 것을 배울 수 있었습니다.

마이크로 컨트롤러가 정확히 어떤 역할을 해야 할까요? 첫째로 가장 중요한 것은 홀 효과 센서를 스캔하고, 판독값을 MIDI(Musical Instrument Digital Interface) 노트 속도로 변환하고, USB를 통해 데이터를 오르간 소프트웨어를 실행하는 호스트 컴퓨터로 전송하는 것입니다.

둘째, 2개 ~ 3개의 키보드에서 직렬 MIDI 데이터를 수신하여 USB 연결을 통해 전송합니다. 최소한 지금으로서는 168개의 키 센서를 연결하는 훨씬 큰 프로젝트를 시작하는 대신, 가지고 있던 오래된 신디사이저들을 사용하기로 했습니다. 게다가, 키 간 간격이 페달보다 가까우면 누화로 인한 문제가 발생할 수 있습니다. 여기서는 광학 반사 센서가 적합할 수 있습니다. 이 회로를 브레드 기판보다 더 영구적인 기판으로 옮기지는 않을 것 같습니다. 현재의 형태에서, 2개의 Texas Instruments 74HC4067 16-to-1 멀티플렉서가 32개 센서 출력 중 하나를 마이크로 컨트롤러로 라우팅합니다(그림 5). MIDI 입력에는 3개의 ON Semiconductor H11L1 광 커플러가 필요합니다(그림 5).

그림 5: 왼쪽부터 Feather M4 마이크로 컨트롤러 기판, 2개의 74HC4067 CMOS 아날로그 멀티플렉서, MIDI 입력을 위한 3개의 H11L1 논리 레벨 광 커플러 (이미지 출처: Michael Dunn)

3개의 CUI Devices SD-50SN DIN 잭이 광 커플러 입력에 연결되어 표준 MIDI 입력의 역할을 합니다(그림 6).

그림 6: 언제나 표준의 자리를 지켜 온 MIDI DIN 잭 (이미지 출처: CUI Devices)

이 프로세서가 제공하는 훌륭한 시스템 기능 중 하나는 자동 보정입니다. 홀 효과 센서, 자석, 위치가 다양하기 때문에, 각 센서는 자석이 멀리 떨어져 있는 경우 중간 범위부터 페달이 눌리면 1V에 가까운 전압까지 특정한 출력 전압 범위를 생성합니다. 각 페달이 눌릴 때마다 보정 절차를 진행함으로써, 마이크로 컨트롤러는 각 페달의 최소/최대값을 플래시 메모리에 저장합니다.

결론

수십 년간 페달보드에 앉은 후(말 그대로가 아닌 비유적으로), 드디어 이를 실현하게 되어 매우 기쁩니다. 이 과정에서 자기 센서, 최신 마이크로 컨트롤러에 대해 배우고, 새로운 MIDI 페달보드를 찾고 구매하는 비용을 크게 절약하고 있습니다. 쉽게 구할 수 없는 품목이기 때문입니다. 시중에 있는 대부분의 홀 효과 센서는 단순한 스위치이지만, 다목적 감지 솔루션에는 선형 센서가 적합합니다.

또한 우리는 저렴한 개발 기판이 다양하고 개발 환경이 훌륭한 마이크로 컨트롤러의 황금시대에 살고 있습니다. 곧 이 프로젝트에 CircuitPython이 적합한지 확인하고, 적합하지 않다면 실행 속도 때문에 다른 솔루션을 선택해야 할 것입니다.

이제 하드웨어를 연결하고 소프트웨어 작업만 하면 됩니다. CircuitPython MIDI 및 USB 라이브러리 실험을 성공적으로 마쳤고, 몇 번의 오류가 발생했지만 Adafruit의 지원 포럼을 통해 해결할 수 있었습니다. 완성된 시스템에 대한, 펌웨어 측면에 중점을 둔 상세한 보고서로 곧 돌아올 수 있기를 기대합니다.

관련 기사:

Develop Real-Time Microcontroller-Based Applications Quickly Using MicroPython, Jacob Beningo, 2017

Bach for Engineers, Michael Dunn, EDN, 2013

작성자 정보

Image of Michael Dunn

Michael Dunn has several decades of electrical engineering experience under his belt and was more recently Editor-in-Chief of Scope Junction and EDN.

More posts by Michael Dunn
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum