Un sensore ad ultrasuoni può essere utilizzato come sensore anticollisione. In alcuni nuovi modelli di automobili, i sensori ad ultrasuoni rilevano i veicoli circostanti, segnalano possibili collisioni e forniscono assistenza al parcheggio.
Il sensore emette un impulso che si propaga nell'aria con una velocità costante $ v $ di $ 336~m/s $. L'impulso viaggia fino all'ostacolo e viene riflesso indietro fino a raggiungere nuovamente il sensore.
Calcolare la durata dell’intervallo di tempo che intercorre tra l’istante in cui l’impulso viene inviato e l’istante in cui l’impulso, riflesso dall’ostacolo, raggiunge il sensore.
Stimare l'intervallo di tempo corrispondente ad una distanza sensore - ostacolo di $ 3~m $.
Stimare l’intervallo di tempo corrispondente ad una distanza sensore - ostacolo di $ 2~cm $.
Se $ d $ è la distanza tra il sensore e l'ostacolo, lo spazio percorso dall'impulso è $ \Delta x = 2 d $.
La propagazione dell'onda avviene con velocità costante $ v $.
Nel moto rettilineo uniforme il legame tra lo spazio percorso e l'intervallo di tempo (tempo di volo) necessario a percorrerlo è espresso dalla relazione:
In questo esempio si ha quindi:
v = 336 # Velocità di propagazione in m/s.
d1 = 3 # Distanza sensore - ostacolo in m.
d2 = 0.02 # Distanza sensore - ostacolo in m.
Dt1 = 2 * d1 / v # Utilizzato per calcolare il tempo di volo in s.
Dt2 = 2 * d2 / v # Utilizzato per calcolare il tempo di volo in s.
print("Distanza sensore - ostacolo =", d1, "m") # Utilizzato per stampare.
print("Tempo di volo = {0:0.3f} ms".format(Dt1 * 1000)) # Utilizzato per stampare.
print("Distanza sensore - ostacolo =", d2, "m") # Utilizzato per stampare.
print("Tempo di volo = {0:0.3f} ms".format(Dt2 * 1000)) # Utilizzato per stampare.
Distanza sensore - ostacolo = 3 m Tempo di volo = 17.857 ms Distanza sensore - ostacolo = 0.02 m Tempo di volo = 0.119 ms
Consideriamo in particolare il sensore ad ultrasuoni HC-SR04. Secondo le specifiche tecniche, questo sensore può operare nell'intervallo tra $ 2~cm $ e $ 5~m $.
Utilizzando uno slider possiamo calcolare il tempo di volo dell'impulso per una qualsiasi distanza sensore - ostacolo compresa nell'intervallo di funzionamento del dispositivo.
# Utilizzato per importare la libreria adoperata per i widget.
import ipywidgets as widgets
v = 336 # Velocità di propagazione in m/s.
# Utilizzato per creare un widget (FloatSlider) adoperato per cambiare interattivamente il valore della distanza.
sliderDistance = (widgets.FloatSlider(min = 2, max = 500, step = 0.1, value = 300, description = "Distanza (cm):"))
# Funzione.
def funzione(d):
Dt = 2 * (d / 100) / v # Utilizzato per calcolare il tempo di volo in s.
print("Tempo di volo = {0:0.3f} ms".format(Dt * 1000)) # Utilizzato per stampare.
# Utilizzato per collegare il widget alla funzione e per interagire con lo slider.
widgets.interact(funzione, d = sliderDistance)
Tempo di volo = 17.857 ms
<function __main__.funzione(d)>
Per eseguire il codice Python contenuto in questo notebook Jupyter, anche se Python e Notebook Jupyter non sono installati sulla macchina che stai adoperando, puoi utilizzare l'ambiente binder online.
Fisica
Experiments and data analysis on one-dimensional motion with Raspberry Pi and Python (See also Supplementary Information).
I sensori evidenziati nella prima immagine sono del tipo 284425707R.
# Utilizzato per importare la libreria adoperata per visualizzare l'HTML con il Python.
from IPython.core.display import HTML
css_file = "Notebook.css" # File CSS.
# Utilizzato per aprire e leggere il file CSS adoperato per modificare la visualizzazione del notebook.
HTML(open(css_file, "r").read())
(c) 2020 Andrea Mandanici, Marco Guarnera, Giuseppe Mandaglio, Giovanni Pirrotta. All content is under Creative Common Attribution CC BY 4.0 and all code is under BSD 3 - Clause License.