{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sensore di distanza\n", "\n", "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.\n", "\n", "
\n", "\n", "\"Immagine\"\n", "\n", "
\n", "\n", "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.\n", "\n", "
\n", "\n", "\"Immagine\"\n", "\n", "
\n", "\n", "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.\n", "\n", "* Stimare l'intervallo di tempo corrispondente ad una distanza sensore - ostacolo di $ 3~m $.\n", "\n", "* Stimare l’intervallo di tempo corrispondente ad una distanza sensore - ostacolo di $ 2~cm $.\n", "\n", "## Discussione dell'esempio\n", "\n", "Se $ d $ è la distanza tra il sensore e l'ostacolo, lo spazio percorso dall'impulso è $ \\Delta x = 2 d $.\n", "\n", "La propagazione dell'onda avviene con velocità costante $ v $.\n", "\n", "Nel moto rettilineo uniforme il legame tra lo spazio percorso e l'intervallo di tempo (*tempo di volo*) necessario a percorrerlo è espresso dalla relazione:\n", "\n", "
\n", "\n", "$$ v = \\dfrac{\\Delta x}{\\Delta t} $$\n", "\n", "
\n", "\n", "In questo esempio si ha quindi:\n", "\n", "
\n", "\n", "$$ \\Delta t = \\dfrac{\\Delta x}{v} = \\dfrac{2 d}{v} $$\n", "\n", "
\n", "\n", "## Calcoli con Python" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Distanza sensore - ostacolo = 3 m\n", "Tempo di volo = 17.857 ms\n", "Distanza sensore - ostacolo = 0.02 m\n", "Tempo di volo = 0.119 ms\n" ] } ], "source": [ "v = 336 # Velocità di propagazione in m/s.\n", "d1 = 3 # Distanza sensore - ostacolo in m.\n", "d2 = 0.02 # Distanza sensore - ostacolo in m.\n", "\n", "Dt1 = 2 * d1 / v # Utilizzato per calcolare il tempo di volo in s.\n", "Dt2 = 2 * d2 / v # Utilizzato per calcolare il tempo di volo in s.\n", "\n", "print(\"Distanza sensore - ostacolo =\", d1, \"m\") # Utilizzato per stampare.\n", "print(\"Tempo di volo = {0:0.3f} ms\".format(Dt1 * 1000)) # Utilizzato per stampare.\n", "print(\"Distanza sensore - ostacolo =\", d2, \"m\") # Utilizzato per stampare.\n", "print(\"Tempo di volo = {0:0.3f} ms\".format(Dt2 * 1000)) # Utilizzato per stampare." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calcoli in modalità interattiva\n", "\n", "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 $.\n", "\n", "
\n", "\n", "\"Immagine\"\n", "\n", "
\n", "\n", "Utilizzando uno **slider** possiamo calcolare il *tempo di volo* dell'impulso per una qualsiasi distanza sensore - ostacolo compresa nell'intervallo di funzionamento del dispositivo." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tempo di volo = 17.857 ms\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Utilizzato per importare la libreria adoperata per i widget.\n", "import ipywidgets as widgets\n", "\n", "\n", "v = 336 # Velocità di propagazione in m/s.\n", "\n", "# Utilizzato per creare un widget (FloatSlider) adoperato per cambiare interattivamente il valore della distanza.\n", "sliderDistance = (widgets.FloatSlider(min = 2, max = 500, step = 0.1, value = 300, description = \"Distanza (cm):\"))\n", "\n", "# Funzione.\n", "def funzione(d):\n", " Dt = 2 * (d / 100) / v # Utilizzato per calcolare il tempo di volo in s.\n", " print(\"Tempo di volo = {0:0.3f} ms\".format(Dt * 1000)) # Utilizzato per stampare.\n", "\n", "# Utilizzato per collegare il widget alla funzione e per interagire con lo slider.\n", "widgets.interact(funzione, d = sliderDistance)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> 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**](https://mybinder.org) online.\n", "\n", "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Darkaquon/Physics-with-Open-Source-Software/master?filepath=%2FNotebook%2FSensore_di_distanza.ipynb)\n", "\n", "## What we have learned\n", "\n", "*Fisica*\n", "\n", "* Principio di funzionamento dei sensori di distanza.\n", "\n", "## References and notes\n", "\n", "1. [Experiments and data analysis on one-dimensional motion with **Raspberry Pi** and **Python**](https://iopscience.iop.org/article/10.1088/1361-6552/ab73d2) (See also Supplementary Information).\n", "\n", "2. I sensori evidenziati nella prima immagine sono del tipo 284425707R.\n", "\n", "#### Immagini\n", "\n", "3. Immagini originali realizzate con uno smartphone Samsung Galaxy S9 e modificate con Microsoft Paint 3D.\n", "\n", "## Grafica notebook" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "/* File CSS */\n", "\n", "/* File utilizzato per modificare la visualizzazione del notebook. */\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Utilizzato per importare la libreria adoperata per visualizzare l'HTML con il Python.\n", "from IPython.core.display import HTML\n", "\n", "\n", "css_file = \"Notebook.css\" # File CSS.\n", "\n", "# Utilizzato per aprire e leggere il file CSS adoperato per modificare la visualizzazione del notebook.\n", "HTML(open(css_file, \"r\").read())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Copyright and License\n", "-------------------------\n", "(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.](https://opensource.org/licenses/BSD-3-Clause)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }