I sensori a effetto Hall per il rilevamento magnetico della posizione dei pedali dell'organo
Il magnetismo è la cosa più prossima alla magia, seguita a ruota dai microcontroller. Vi voglio raccontare una storia che parla di entrambi. E anche di Bach. Johann Sebastian Bach. I pedali dell'organo si comportano come una tastiera, offrendo all'organista un ulteriore "dispositivo di ingresso" (Figura 1).
Figura 1: I pedali dell'organo sono disposti come una tastiera musicale. Pensate che potreste suonarvi il valzer "Le tagliatelle"? (Immagine per gentile concessione di Michael Dunn)
Ciò detto, la discussione che segue si applica a tutti i tipi di pedali. Di fatto, si applica a quasi ogni tipo di dispositivo di commutazione o per il rilevamento di posizione immaginabile. Continuate a leggere.
I miei rapporti con l'organo (potete tralasciare questa parte).
Da quando ero adolescente, ho sempre desiderato un organo a canne, o uno strumento che gli assomigliasse, soprattutto per poter suonare la straordinaria musica di J. S. Bach. Immaginate che suono avrebbe la musica di Bach sul magnifico organo della chiesa di Saint Germain l'Auxerrois di Parigi (Figura 2)? Visto che i costi e lo spazio me ne precludono il possesso, per decenni gli organi elettronici sono stati al centro dei miei pensieri, a partire dai miei primi progetti completamente analogici sino ai concept generati digitalmente basati sulla sintesi additiva. È sufficiente dire che, fatta eccezione per l'acquisto di tastiere e di una pedaliera, i miei progetti non hanno fatto molti passi avanti. Avrei potuto comprare un organo elettronico, ma non ne ho trovato uno che mi piacesse. E in ogni caso, non mi sarei divertito.
Figura 2: Lo spazio per questo non è sufficiente, e, oltretutto, non è in vendita. (Immagine e fonte: Organo della chiesa di Saint Germain l'Auxerrois, Parigi, da Wikipedia.org)
Negli ultimi anni, programmi come Hauptwerk (il nome tedesco di una delle tastiere di un organo) sono diventati strumenti davvero efficaci per ricreare i suoni dei veri organi con la tecnologia di campionamento. Credo sia venuto il momento di mettere da parte i miei progetti di progettare uno strumento ex novo.
Come rilevare la posizione dei pedali
Dopo aver deciso di utilizzare software in commercio per la simulazione dell'organo, mi rimaneva da costruire la consolle, comprese due o tre tastiere e una pedaliera. Ho acquistato questi meccanismi molti anni fa e non contengono alcun dispositivo di commutazione o di rilevamento di qualche tipo. Che fare?
La prima soluzione che viene in mente sarebbe quella di usare un interruttore di qualche tipo (o contatti nudi) per ciascun tasto e pedale. Ma questo pregiudicherebbe il rilevamento della velocità e della posizione. Vi domanderete perché dovrebbe interessarmi, trattandosi di un organo. Ma gli organi classici, completamente meccanici, reagiscono al tocco. Ovviamente non come un pianoforte, ad esempio.
Ciò lasciava comunque aperte numerosi opzioni di commutazione, tra cui coppie di contatti sfalsati, che tramite la misurazione del tempo tra l'apertura di uno e la chiusura dell'altro avrebbero restituito la velocità, di tipo ottico, a pressione, capacitiva e induttiva ma sono stato catturato dal rilevamento magnetico. Un sensore lineare a effetto Hall sembrava una strada percorribile, visto il basso costo e i consumi ridotti, le opzioni di montaggio e il rilevamento della posizione. Esiste un'ampia gamma tra cui scegliere, ma alla fine ho optato per 32 sensori SS39ET a effetto Hall montati su piccole schede di breakout di Honeywell (Figura 3). A questo punto solo l'alimentazione è collegata, con il filo isolato PRT-08024 di SparkFun. Non ci credereste mai, ma intorno al 1979 ho avuto un lavoro estivo in Honeywell. È stato il mio primo incontro con l'effetto Hall, utilizzato negli interruttori delle tastiere (tastiere del computer, non di strumenti musicali).
Figura 3: Vista di cinque sensori SS39ET a effetto Hall montati su piccole schede di breakout di Honeywell. Come si vede, a questo punto solo l'alimentazione è collegata. (Immagine per gentile concessione di Michael Dunn)
Una delle mie preoccupazioni era la diafonia magnetica tra i pedali. Un test veloce ha dimostrato che lo spostamento di un magnete adiacente modificava l'uscita del sensore testato di circa il 2%, un valore accettabile per questa applicazione. Per ottenere i campi magnetici necessari, ho utilizzato magneti 8184 di Radial Magnet Inc. con diametro 1,27 cm montati nei pedali (Figura 4). Per utilizzi che richiedono maggiore sensibilità potrebbe essere necessaria la schermatura magnetica. Un'altra opzione è costituita dal fissaggio dei magneti e dallo spostamento dei sensori, se riuscite a sopportare la flessione dei fili.
Figura 4: Magneti montati nei pedali forniscono il campo magnetico necessario per stimolare i sensori a effetto Hall. (Immagine per gentile concessione di Michael Dunn)
La magia dei microcontroller
La scelta successiva era quella di un microcontroller; in questo caso montato su una piccola scheda. Per produrne una sola, perché reinventare la ruota (o la PCB?) L'aspetto più importante da considerare era il metodo di programmazione del processore che intendevo adottare. La risposta che veniva immediatamente in mente era il C, sia in un ambiente Arduino sia utilizzando il supporto per lo sviluppo del produttore. Ma avevo sentito parlare bene di MicroPython, perciò, in quanto sostenitore del normale Python, ho deciso di metterlo alla prova. Alla fine ho scelto una scheda di Adafruit, 3857 Feather M4 Express, dotata di un core Arm Cortex-M4 ATSAMD51J19A-AU-EFB da 120 MHz di Microchip Technology, oltre a un set di buone periferiche. Adafruit ha sviluppato una propria versione di MicroPython, chiamata CircuitPython, che ho deciso di utilizzare.
Lo svantaggio di scegliere questo linguaggio è la velocità. Essendo interpretato e non compilato, Python gira a una velocità che è di pochi punti percentuali rispetto a quella del C, con risultati che variano in base a fattori come l'uso delle librerie. Vista la natura in tempo reale di questo progetto, potrei dover abbandonare Python, ma questo è un argomento per un altro blog. Avrà comunque rappresentato un'importante esperienza di apprendimento.
Cosa vogliamo che faccia esattamente il microcontroller? Come primo e principale compito, eseguirà la scansione dei sensori a effetto Hall, traducendo le loro letture nella velocità delle note dell'interfaccia MIDI e invierà quei dati tramite l'USB al computer host su cui gira il software dell'organo.
In secondo luogo, riceverà i dati MIDI seriali dalle due o tre tastiere, che verranno a loro volta convogliati attraverso la connessione USB. Ho deciso, almeno per ora, di rimettere in funzione un vecchio sintetizzatore di mia proprietà che è abbandonato da qualche parte piuttosto di intraprendere il progetto ben più impegnativo di cablare sino a 168 sensori per i tasti. Inoltre, lo spazio ristretto tra i tasti rispetto a quello tra i pedali potrebbe provocare diafonia. Forse i sensori ottici riflettenti potrebbe rappresentare la soluzione. Non credo trasformerò questo circuito in qualcosa di più permanente di una basetta sperimentale. Nella sua forma attuale, due multiplexer 74HC4067 16-a-1 di Texas Instruments smistano una delle 32 uscite dei sensori al microcontroller (Figura 5). I tre optoaccoppiatori H11L1 di ON Semiconductor sono necessari per gli ingressi MIDI (Figura 5).
Figura 5: Da sinistra a destra: la scheda a microcontroller Feather M4, i due multiplexer analogici CMOS 74HC4067 e i tre optoaccoppiatori a livello logico H11L1 per l'ingresso MIDI. (Immagine per gentile concessione di Michael Dunn)
Tre connettori femmina DIN SD-50SN di CUI Devices saranno collegati agli ingressi degli optoaccoppiatori per fungere da ingressi standard MIDI (Figura 6).
Figura 6: Il connettore femmina DIN standard MIDI da sempre. (Immagine per gentile concessione di CUI Devices)
Una fantastica caratteristica del sistema che viene fornita dal processore è la calibrazione automatica. A causa delle variazioni dei sensori a effetto Hall, dei magneti e del posizionamento, ogni sensore genererà un intervallo specifico delle tensioni di uscita che varia, approssimativamente, dall'alimentazione media quando il sensore è nella posizione più lontana, procedendo di circa un volt più il pedale viene abbassato. Tramite una procedura di calibrazione in cui ogni pedale viene abbassato, il microcontroller memorizzerà i valori min/max per ciascun pedale nella memoria flash.
Conclusione
Dopo aver ignorato la mia pedaliera per decenni, sono veramente soddisfatto di riportarla finalmente in vita. Mentre lo faccio, imparo sempre qualcosa di nuovo sui sensori magnetici, sulle novità dei microcontroller e sto risparmiando un sacco sulla ricerca e l'acquisto di una nuova pedaliera MIDI (credetemi, non è un oggetto comune). La maggior parte dei sensori a effetto Hall nel mondo reale è probabilmente costituita da semplici interruttori, ma quelli lineari producono soluzioni di rilevamento versatili.
E viviamo nell'età dell'oro dei microcontroller, tra cui vi sono molte schede di sviluppo a basso costo e fantastici ambienti di sviluppo. Scoprirò presto se CircuitPython è adatto a questo progetto o se dovrò utilizzare una diversa soluzione a causa della velocità di esecuzione.
Mi rimane solo da finire il cablaggio dell'hardware per poi immergermi nel software. Ho già fatto esperimenti riusciti con le librerie MIDI & USB di CircuitPython, sebbene abbia incontrato qualche glitch che ho risolto con l'aiuto dei forum di supporto di Adafruit. Spero di tornare presto a scrivere una relazione completa sul sistema finito, concentrandomi sull'aspetto firmware.
Articoli correlati:
Sviluppare rapidamente applicazioni basate su microcontroller in tempo reale con MicroPython, Jacob Beningo, 2017
Bach for Engineers, Michael Dunn, EDN, 2013

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