Pianola

Ultrasuoni: pacchetti di impulsi a 40 kHz

Ci siamo procurati un trasmettitore e due ricevitori piezoelettrici a ultrasuoni, con una frequenza di lavoro intorno a 40 kHz, e abbiamo progettato e dimensionato i relativi circuiti di trasmissione e di ricezione. Naturalmente, non potevamo più sfruttare l'algoritmo già escogitato per calcolare la differenza di cammino in funzione della differenza di fase tra i due segnali. Infatti la lunghezza d'onda a 40 kHz è di meno di 9 mm e questa sarebbe dunque la massima distanza rilevabile senza ambiguità. Chiaramente una simile dimensione non è sufficiente per realizzare una tastiera!

La prima soluzione al problema che ci si è presentata alla mente è stata quella più utilizzata nei sistemi di misura che si basano su ultrasuoni, come ad esempio nei sensori di parcheggio per le automobili: lavorare a pacchetti.

Un simile approccio ci veniva suggerito anche da un documento della Texas Instruments: le forme d'onda sullo schermo dell'oscilloscopio mostrate nel documento a pag.5 sono analoghe a quelle che abbiamo poi potuto osservare noi stessi sui nostri circuiti. La differenza è però che noi lavoravamo con un trasmettitore e due ricevitori.

Il trasmettitore, controllato da un PIC, invia un segnale periodico: all'interno del periodo, prima si trasmette un pacchetto contenente un certo numero di impulsi, poi per il tempo restante non si trasmette nulla. In questo modo il segnale a 40 kHz è modulato da un'onda quadra: il limite di distanza che si può misurare non è più dettato dalla durata del periodo a 40 kHz, bensì dalla durata del periodo costituito dagli impulsi a 40 kHz e dal silenzio seguente. Si possono rilevare distanze ben maggiori e la vera restrizione finisce per essere imposta dall'attenuazione del segnale.

Dunque, il trasmettitore invia regolari pacchetti di impulsi, che dai due ricevitori, collocati in generale a due distanze diverse rispetto al trasmettitore, vengono ricevuti in istanti diversi. Misurando la differenza di tempo tra l'istante in cui l'impulso n-esimo del pacchetto raggiunge il primo ricevitore e quello in cui raggiunge il secondo ricevitore, si può stimare la differenza di cammino e dunque, attraverso i medesimi calcoli trigonometrici sviluppati precedentemente, la posizione del trasmettitore lungo la tastiera.

Dopo aver realizzato fisicamente il sistema, già dall'osservazione dei segnali con l'oscilloscopio ci siamo accorti di un grave problema.

Dal trasmettitore veniva trasmesso un treno di 10 impulsi, ma al ricevitore se ne potevano visualizzare quasi il doppio. L'ampiezza degli impulsi al ricevitore era inzialmente piccola, cresceva fino a un valore di regime e si smorzava poi lentamente, dunque il periodo di "silenzio" al ricevitore era molto più breve. Questo naturalmente perché i sensori piezoelettrici hanno una loro dinamica e le oscillazioni, una volta eccitate, non possono cessare istantaneamente.

Fin qui, nulla di strano e nulla di problematico. Abbiamo pensato fosse sufficiente decidere una soglia di ampiezza e considerare, per effettuare il confronto tra i due ricevitori, il primo impulso del treno che superava in ampiezza quella soglia. Abbiamo scritto così il programma per il DSP. Ma i valori di differenza di cammino forniti al termine dell'elaborazione erano quasi sempre sbagliati, di un periodo almeno o di suoi multipli. Perché?

I due ricevitori non solo sono due oggetti fisici con una loro dinamica, ma sono due oggetti fisici distinti, costruiti per comportarsi nel modo più simile possibile, ma mai veramente identici. Ecco l'aspetto veramente ostico. Ciascuno dei due ricevitori aveva una sua dinamica e le due dinamiche erano diverse! L'evoluzione dell'ampiezza del treno di impulsi era sempre leggermente diversa sui due canali. A causa di ciò, fissando una soglia, si finiva spesso per confrontare l'impulso n-esimo su un canale con l'impulso (n+k)-esimo sull'altro canale, con k purtroppo non nullo...

A un simile problema non si è potuto far fronte. Anche cambiando la soglia, non c'era la possibilità di evitare frequentissimi errori di almeno un periodo nella determinazione della differenza di percorso, che si ripercuotevano in misura ancor più significativa sulla determinazione della posizione dell'emettitore.

L'unica possibilità era a quel punto cambiare nuovamente strategia, cercando di evitare che la differente dinamica dei due ricevitori a ultrasuoni avesse tanto peso. Poiché avevamo notato, nei nostri esperimenti iniziali, che lavorando in continua, e non a pacchetti, non si presentava nessun problema, abbiamo cercato una maniera per trasmettere continuamente, ma allo stesso tempo modulare il segnale emesso dal trasmettitore, affinché la massima distanza rilevabile fosse comunque ben superiore ai 9 mm.