Nuova sezione libri disponibile!

Misurare la costante di Planck con Arduino e Python - Parte 3

Ludovico Russo

lettura in 4 minuti

Eccomi qui per la terza ed ultima parte di questo tutorial sulla misura della costante di Planck utilizzando dei led colorati, Arduino e Python.

Misura della caratteristica di Led

Se vi siete persi le parti precedenti, le trovate ai seguenti link:

Una volta modellata e misurata la caratteristica del led, come visto nei due tutorial precedenti, possiamo procedere alla stima della tensione di tensione di attivazione VDV_D del singolo Led, e poi, alla misura della costante di Planck utilizzando la seguente approssimazione:

VD‚ČÉhő≥eV_D \simeq \frac{h\gamma}{e}

Dove (ricordiamo) ő≥\gamma √® la frequenza della radiazione emessa, hh √® la costante di Planck e ee √® la carica elettrica dell'elettrone (in valore assoluto).

Stima della tensione di attivazione VDV_D

Alla fine del tutorial precendete, eravamo arrivati a disegnare la curva caratteristica di vari led colorati. Tramite l'immagine disegnata in iPython o Spyder, possiamo misurare in modo molto accurato il punto in cui la curva inizia a salire, utilizzando il puntatore del mouse del computer e leggendo la sua posizione nel grafico (visualizzata in basso a destra).

Andiamo quindi a posizionare il mouse nel punto del grafico in cui la curva inizia a salire e prendiamo nota del valore xx indicato in basso a destra, come segnalato nella figura seguente

Misura di VD

Come da immagine, possiamo segnare la tensione Vx=2.52996VV_x = 2.52996V.

Salviamo questo valore in python

Vx = 2.52996V

Ricordate che questo valore non è esattamente la tensione di attivazione del LED, in quanto non viene misurato a corrente nulla. Per ottenere un valore migliore di VDV_D, ci viene in aiuto l'approssimazione del diodo vista nel primo tutorial, formulata come segue:

i‚ąó={0se¬†v<VD1RD(v‚ąíVD)se¬†v>VDi^* = \begin{cases} 0 & \text{se $v < V_D$} \\ \frac{1}{R_D}(v-V_D) & \text{se $v > V_D$} \end{cases}

dove VDV_D è detta tensione di attivazione, ed è una costante empirica che rappresenta la minima tensione a partire dalla quale il diodo inizia a condurre. RDR_D approssima la resistenza interna al diodo.

Adiamo quindi ad apprissimare i punti che sono maggiori della tensione trovata con una retta, ed ad intersecare questa retta con l'asse delle xx. Il punto di intersezione sarà la nostra migliore misura della tensione di arrivazione VDV_D.

Come visto nel primo tutorial, fortunatamente, abbiamo già pronta una funzione per esegure l'approssimazione. Il tutto si fa eseguente queste due linee di codice:

mask = v > Vx
RD, VD = polyfit(i[mask],v[mask],1)

Dove il valore di ritorno VD è esattamente il valore VDV_D che ci interessa.

Per verificare che l'approssimazione sia corretta, andiamo a disegnarla sovrapposta al grafico della carattersticare reale.

Per prima cosa, definiamo la funzione di approssimazione in Python

def diode_approx(v, VD, RD):
    i = np.array(v)

    for k in range(len(v)):
        if v[k] < VD:
            i[k] = 0
        else:
            i[k] = (v[k]-VD)/RD
    return i

e usiamola per dignare la curva di approssimazione

plot(v, diode_approx(v, VD, RD))

Se tutto va bene, otterrete un'immagine come la seguente

Diodo approssimazione

Dato che i due grafici si sovrappongono perfettamente nella parte di crescita, possiamo salvare il valore VDV_D ottenuto. Nel mio caso, ho visurato VD=2.52VV_D= 2.52V.

Misura della costante di Planck

A questo punto, siamo pronti per stimare la costante di Planck dalla misura ottenuta. Dobbiamo prima di tutto trovare il valore della lunghezza d'onda della luce emessa dal led. Ci sono infinte risorse online da cui attinere; da una breve ricerca su google ho trovato questa pagina, da cui si può anche confrontare il colore del led reale con il colore riportato accanto alla lunghezza d'onda.

Nel mio caso, il led utilizzato risulta essere di colore "super blue", con lunghezza d'onda őĽ=470nm\lambda=470nm. Ricordo che la frequenza ő≥\gamma di una radiazione √® legata alla sua lunghezza d'onda őĽ\lambda dalla seguente relazione

ő≥‚čÖőĽ=c\gamma\cdot\lambda = c

Dove cc è la velocità della luce nel vuoto.

Possiamo finalmente stimare la costante invertendo l'equazione sopra riportata:

h‚ČÉVD‚čÖeő≥=VD‚čÖe‚čÖőĽch \simeq V_D \cdot \frac{e}{\gamma} = V_D \cdot \frac{e\cdot \lambda}{c}

Ricodando che

  • c=3‚čÖ108msc = 3\cdot10^8\frac{m}{s}
  • e=1.621‚čÖ10‚ąí19Ce = 1.621\cdot 10^{-19} C

Otteniamo come valore

h=6.40‚čÖ10‚ąí34Jsh = 6.40 \cdot 10^{-34} Js

Confrontando questo valore sperimentale con uno delle misure pi√Ļ precise disponibile per la costante di Planck: h=6.62‚čÖ10‚ąí34h=6.62\cdot 10^{-34} otteniamo un errore di circa il 3%3\% (non male no? Con gli altri led mi √® andata peggio).

Misure con differenti Led

Possiamo eseguire la stessa procedura su tutti gli altri Led colorati che abbiamo a dispozione. Dai miei esperimenti, ho ottenuto i seguenti valori:

Tabella valori

Notare che, rispetto al led blu (che per caso √® stato il primo led con cui ho eseguito il calcolo), le altre misure risultano pi√Ļ lontane rispetto alla stima precisa della costante di Planck. Tuttavia, tutte le misure rientrano all'interno di un errore minore del 20%, che non √® decisamente male considerando gli strumenti utilizzati.

Ora tocca a voi

Provate ad eseguire questo esperimento con i vostri led colorati per vedere se ottenete risultati simili. Cosa cambia? Riuscite ad ottenere misure simili alla mia?

Ti è piaciuto questo post?

Registrati alla newsletter per rimanere sempre aggiornato!

Ci tengo alla tua privacy. Leggi di pi√Ļ sulla mia Privacy Policy.

Ti potrebbe anche interessare

HB Cloud Tutorial #1 - Uso dei Led
Iniziamo ad utilizzare la piattaforma di Cloud Robotics
HB Cloud Tutorial #2 - Uso dei Bottoni
Rieccomi con il secondo tutorial legato all'uso dei bottoni per il robot **DotBot-ROS**. In questo tutorial, vedremo come configurare ed utilizzare in Python un bottone attaccato ad un pin GPIO del Raspberry Pi 3.
HB Cloud Tutorial #3 - I Motori
I Motori sono una delle parti essenziali dei robot. In questo tutorial, vederemo come è possibile in modo semplice ed intuitivo implementare un programma in Python che controlla i motori in base a comandi inviati via Wifi al Robot.
Utilizzare la RaspiCam in streaming con la piattaforma Cloud
Breve tutorial che spiega come abilitare la RaspiCam su ROS e la piattaforma di Cloud Robotics
Installiamo ROS su Raspberry Pi
Un breve tutorial su come utilizzare ROS sul Raspberry Pi
Video Corso ROS Rokers - Completati i video di Introduzione
Sono disponibili online i video tutorial del corso di ROS partito dalla community Rokers
Inviare Goals alla Navigation Stack - versione nodo ROS Python
Inviare un goal all ROS navigation stack utilizzando un nodo Python
Controllare siBOT dalla piattaforma HBR
Come controllare il manipolatore siBOT utilizzando la piattaforma HBR
Sviluppare un rilevatore di fiamma con la visione artificiale
Sviluppare un rilevatore di fiamma con la visione artificiale
Scriviamo un Blog in Python e Flask
Tutorial su come implementare, a partire da zero, un blog personale utilizzando Python e Flask! Prima parte!
Un laboratorio di Fisica con Arduino e Python
Primi esperimenti con Arduino e Python per realizzare un semplice laboratorio di fisica sfruttando la potenza di Python e la versatilità di Arduino
Un IDE web Arduino sviluppato in Python e Flask
Un mio progetto dell'estate del 2015 che permette di programmare Arduino da un'interfaccia Web esposta da un Raspberry Pi
Utilizziamo Atom come editor di testo remoto su Raspberry Pi
Come usare Atom come editor di testo remoto per Raspberry Pi
Canopy: una Pythonica alternativa a Matlab
Presento questo interessante tool python che può essere considerato una buona alternativa a Matlab per l'analisi dei dati!
Spyder, un'altra alternativa in Python a Matlab
Una velocissima prova del tool interattivo Spyder per l'analisi scientifica in Python
Simuliamo il moto parabolico in Python e Spyder
Un piccolo tutorial per iniziare ad utilizzare Spyder con Python
Python + Arduino = Nanpy
Programmare Arduino in Python con Nanpy
Utilizzo di Nanpy con il sensore di temperatura/umidità della famiglia DHT
Come utilizzare Nanpy col sensore DHT di temperatura e Umidità
Pasqua al Liceo Stampacchia di Tricase: Corsi di Arduino e Stampa 3D
In occasione delle vacanze di Pasqua 2017, il Liceo G. Stampacchia organizza due corsi tenuti da me su Arduino e stampa 3D.
Breve Introduzione all'utilizzo di Spyder per il Plot dei dati a livello scientifico
Una brevissima guida che mostra come utilizzare Spyder per il plot dei dati a livello scientifico
Accendere led con Arduino e Telegram
Un bot telegram in grado di controllare Arduino realizzato da 3 ragazzi del Liceo Stampacchia
Gestire le macchine virtuali senza sforzo con Vagrant
Introduzione ed esempio di utilizzo su Vagrant, il tool che semplifica la gestione delle macchine virtuali per lo sviluppo.
Implementiamo un bot Telegram con Python
Una semplice guida per iniziare a muovere i primi passi nello sviluppo di chatbot Telegram con Python
Pillole di Python: pyscreenshot
Una semplice tutorial che mostra il funzionamento della libreria pyscreenshot
Sviluppiamo un'app in Electron per controllare la scheda Arduino - parte 2
In questo tutorial, vediamo come sviluppare un oscilloscopio con Node.js, Electron e Typescript
Python Decorators
Introduzione ai decoratori in Python
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 1
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Implementiamo un bot Telegram con Python - I Comandi
Vediamo come gestire i comandi del nostro bot in Telegram
4 (+1) Libri su Python (in Inglese) da cui imparare
Una lista di libri su Python (in Inglese) da cui ho imparato a programmare
Virtualenv: gestiamo meglio le dipendenze in Python
A cosa servono e come si utilizzano i virtualenv Python
Leggere i codici a barre con OpenCV e zbar in Python
Come usare Python per leggere i codici a barre degli alimenti e ricavarne alcune informazioni utili
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 2
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Sviluppiamo un bot Telegram che legge i codici a barre degli alimenti
Implementiamo un bot Telegram in grado di leggere ed analizzare le immagini per la lettura ed interpretazione dei codici a barre
TDD con Flask e PyTest per lo sviluppo di API REST. Parte 3
Tutorial su come usare il Test Driver Development (TDD) con Flask e PyTest per sviluppare delle semplici API REST
Divertiamoci sviluppando UI da terminale con ASCIIMATICS
Le UI da terminale fanno molto anni '80, però sono sempre diventerti da implementare. Oggi vi voglio introdurre ad una semplice libreria per creare questo tipo di applicazione.
Sviluppiamo un Robot con tecnologie Open Source
Inizio una serie di videoguide, in cui voglio introdurvi al mondo della robotica di servizio in modo pratico, facendo vedere come è possibilile, sfruttando tecnologie completamente Open Source, quali Arduino, Raspberry Pi, ROS e Docker, costruire un piccolo robot di Servizio.
Parliamo come GMaps: come creare file audio con gtts (Google Text to Speech) in Python
gtts è una libreria in Python per sfruttare le API di Google Text to Speech per generare file audio dal testo
Robot Open Source - Introduzione a Docker
√ą disponibile il video "Introduzione a Docker".
I chatbot possono Parlare? Sviluppiamo un bot telegram che manda messaggi vocali
Usiamo le API di sintesi vocale di google per creare un bot in grado di mandare messaggi vocali
Robot Open Source - Docker e Raspberry
√ą disponibile il video "Docker e Raspberry".