使用霍爾效應感測器透過磁力原理偵測風琴腳踏板位置
磁力可能是最接近魔法的東西了,微控制器則次之。今天的故事是關於這兩者,而且還會把巴哈 (J.S. Bach) 請出來。沒錯,就是音樂家巴哈。風琴踏板的運作方式與鍵盤一樣,是風琴演奏家的另一個「輸入裝置」(圖 1)。
圖 1:風琴踏板的排列如同樂器鍵盤。您有辦法在上面彈一曲 Chopsticks 嗎?(圖片來源:Michael Dunn)
話雖如此,但此處的討論適用於各種踏板。實際上,幾乎適用於任何一種想得到的切換應用或位置感測應用。請繼續讀下去。
我彈奏風琴的背景 (可略過不讀)
我從青少年開始就一直夢想擁有一台管風琴,即使是過得去的仿製品也行,這都是為了彈奏巴哈偉大的樂曲。您可以想像用巴黎聖日耳曼歐塞爾教堂的華麗管風琴,彈奏巴哈的音樂會有多麼震撼嗎 (圖 2)?在考慮到費用與空間這兩項因素之後,我發現管風琴對我而言太奢侈了。所以這幾十年以來,我一直將注意力集中在電子風琴上。起先是巨型全類比式設計,後來逐漸轉向數位生成的加法合成概念。可以這麼說,除了取得鍵盤及足鍵盤,這些計畫還未實現。當然,花錢買電子風琴也是可行的方案,但我就是沒找到喜歡的,這樣還有什麼樂趣呢?
圖 2:沒有空間放置,另外也是非賣品。(圖片與來源:巴黎聖日耳曼歐塞爾教堂的管風琴,Wikipedia.org)
但近幾年來,透過 Hauptwerk (一種風琴鍵盤的德文名稱) 等計畫,已開發出了不起的引擎,藉著取樣技術,重現風琴的原音。我必須承認,此時應該放棄從零開始設計樂器的夢想了。
感測踏板位置
既然已經決定使用商用軟體模擬風琴,剩下的工作就是打造出控制主機,其中包括二或三個鍵盤及一個足鍵盤。我在多年前就取得了這些硬體,但並沒有任何切換/感測的裝置。該怎麼做呢?
最原始的解決方法是,針對每一個按鍵與踏板使用某種開關 (或裸觸點)。但這種作法會妨礙速度與位置感測。您可能會納悶,我為什麼要為風琴考慮這些呢?但事實證明,經典的全機械式風琴確實會回應觸碰動作 (當然沒有達到鋼琴這類樂器的程度)。
但是,仍要在幾種開關選項中選擇,包括交錯排列的觸點對 (測量單次開啟與關閉的時距,以取得速度)、光學式、壓力式、電容式與電感式等選項,可是我對磁力感測更感興趣。線性霍爾效應感測器似乎是可行的方案,此種感測器可以提供低成本、低功率、多種安裝選項及位置感測。雖然市面上有眾多選項可供選擇,但我最後選用 32 個 Honeywell 的 SS39ET 霍爾效應感測器,安裝在小型分接板上 (圖 3)。目前只接上電力,使用 SparkFun 的 PRT-08024 絕緣電線。您相信嗎?大約是 1979 年,我曾經在 Honeywell 公司暑期打工。這是我人生中第一次見識到霍爾效應。這個效應被應用在電腦鍵盤開關上 (不是樂器鍵盤)。
圖 3:圖為安裝在小型分接板上的五個 Honeywell 的 SS39ET 霍爾效應感測器。如圖所示,目前只接上電力。(圖片來源:Michael Dunn)
我擔心的問題是踏板之間的磁性串音效應。在進行快速測試後發現,若移動相鄰的磁鐵,只會造成受試感測器發生約 2% 的輸出變化,這樣的結果在此應用可接受。為了提供所需的磁場,我使用 Radial Magnets Inc. 直徑 ½ 英吋的 8184 磁鐵,並將其安裝至踏板中 (圖 4)。對於更靈敏的使用案例,可能需要磁性屏蔽。另一個選項是將磁鐵固定並移動感測器,但前提是要可以接受電線彎折。
圖 4:磁鐵裝入踏板中可提供所需的磁場,用以激勵霍爾效應感測器。(圖片來源:Michael Dunn)
微控制器魔法
接下來,我需要選擇微控制器。在此案例中,微控制器是裝在小型板件上。如果只是要進行一輪生產,為何要多此一舉,使用電路板呢?我作出這種選擇,最重要的考慮因素是「如何對處理器進行編程?」腦海中浮現的預設答案是「使用 C 語言」,在 Arduino 環境中編程,或者利用製造商的開發支援服務。但是,我當時一直聽說 MicroPython 的優點,作為正規 Python 的粉絲,我決定試用看看。最後我選擇 Adafruit 的 3857 Feather M4 Express 電路板,此板可支援 Microchip Technology 的 ATSAMD51J19A-AU-EFB 120 MHz Arm Cortex-M4 核心,外加一組優良的周邊裝置。Adafruit 擁有自己的 MicroPython 版本 (稱為 CircuitPython),這是我要使用的版本。
此種語言的缺點在於速度。Python 是解譯型而非編譯型的語言,其執行速度僅僅是 C 語言的百分之幾而已;具體結果將會不同,視程式庫等因素而定。鑑於此專案的即時特性,我可能必須放棄 Python,這個主題我會留到之後在部落格中討論。無論從哪一個角度來看,這將是絕佳的學習體驗。
到底微控制器可以發揮什麼作用?首先也是最重要的,微控制器可以掃描霍爾效應感測器,然後將其讀數轉譯成樂器數位介面 (MIDI) 音符速度,並透過 USB 將資料傳至執行風琴軟體的主機電腦。
其次,微處理器將從 2 或 3 個鍵盤接收序列 MIDI 資料,這也是透過 USB 連線接收。我決定,此時至少要使用一些沒有在用的舊型合成器,而不是將 168 個按鍵感測器接線,製作更大規模的專案。除此之外,按鍵的間距比踏板的間距更小,這意味著串音可能成為問題。或許光學反射式感測器是可行的方案。我可能絕對不會將此電路板用在試驗電路板以外。在電路板現有形式下,Texas Instruments 的兩個 74HC4067 16:1 多工器,將 32 個感測器輸出中的一個接線至微控制器 (圖 5)。MIDI 輸入需要使用 ON Semiconductor 的三個 H11L1 光耦合器 (圖 5)。
圖 5:由左至右:Feather M4 微控制器板、兩個 74HC4067 CMOS 類比多工器,以及用於 MIDI 輸入的三個 H11L1 邏輯位準光耦合器。(圖片來源:Michael Dunn)
CUI Devices 的三個 SD-50SN DIN 插孔,將接至光耦合器輸入,作為標準 MIDI 輸入 (圖 6)。
圖 6:一如既往的標準 MIDI DIN 插孔。(圖片來源:CUI Devices)
處理器提供一個很棒的系統功能,就是自動校正。由於霍爾效應感測器、磁鐵與定位各不相同,因此每個感測器將產生特定輸出電壓範圍,大約從供應的中電壓 (磁鐵離得最遠) 移動幾乎 1 V (壓下踏板時)。藉著在每個踏板壓下時完成校正程序,微控制器會將每個踏板的最小值/最大值儲存在快閃記憶體中。
結論
我的足鍵盤計畫耽擱數十年後,終於實現了。在此過程中,我學到更多相關知識,包括磁力感測器及最新的微控制器發展,並且也省下在尋找及購買全新 MIDI 足鍵盤 (還真難找) 的花費。多數市面上的霍爾效應感測器,大概只是簡單的開關而已,只有線性產品才可做出多功能的感測解決方案。
我們今天處在微控制器的黃金時代,市面上有許多低價開發板,而且開發環境也相當優良。很快,我就會知道 CircuitPython 是否適用於這個專案,不然的話,我就得因「執行速度」的問題去選擇不同的解決方案。
其他的工作就只剩下結束硬體接線,然後深入探索軟體。我已經使用 CircuitPython MIDI 與 USB 程式庫成功完成試驗,雖然我的確遭遇到一些技術上的關卡,但透過 Adafruit 的支援論壇,這些問題都一一迎刃而解。我希望很快能完整報導最終系統,並開始進行韌體部分。
相關文章:
使用 MicroPython 快速開發即時微控制器架構的應用,Jacob Beningo,2017 年
工程師眼中的巴哈,Michael Dunn,EDN,2013 年

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