Spettrometro

Salve a tutti :slight_smile: ebbene si il titolo dice già tutto: voglio costruire uno strumento con arduino che mi permetta di analizzare lo spettro (quindi costruire uno spettrogramma) di una luce( che puoò essere quella solare o quella di una lampada a led/neon ecc).
Per farlo ho pensato di sfruttare dei led da 3w(per 2 motivi: 1) hanno una caduta di tensione piu alta dei soliti 3mm o 5mm 2) li ho a casa) al contrario :stuck_out_tongue: infatti se il led viene sottoposto ad una tensione questo emette una determinata luce (sto parlando di led colorati in quanto il bianco comprende uno spettro completo) con una lunghezza d'onda fissa, ma viceversa se il led viene irradiato da quella frequenza di luce questo sviluppa una tensione che posso leggere con gli ingressi analogici di arduino.
Prendendo quindi diversi led di diverso colore partendo da 395nm fino ad arrivare a 660nm dovrei riuscire a dividere lo spettro in punti e creare un grafico che mi mostri (non in maniera così precisa ma è gia sufficiente) la quantità di radiazione luminosa di ogni singola frequenza di luce.

questo sarebbe l'obbiettivo:


(ovviamente mooolto più approssimato)

grazie in anticipo spero che la cosa sia interessante :slight_smile:

Ho dimenticato la domanda :drooling_face: :drooling_face: : qualcuno ha provato a fare qualcosa del genere? se si come? i led si "eccitano" solo con le frequenze di luce che dovrebbero emettere? serve un operazionale per aumentare la sensibilità della lettura? avevo pensato ad usare visual basic per il grafico.. o mi convieve usare excell? insomma accetto consigli e aiuti. se doveste farlo voi da cosa comincereste?

Purtroppo la cosa non e' cosi semplice ... prima di tutto, i led di un certo colore non emettono di piu se colpiti da lunghezza d'onda dello stesso colore (puo sembrare strano, ma e' cosi) ... secondo, anche usando un'array di fotodiodi ognuno con un diverso filtro colorato davanti (ed ovviamente dovresti anche calibrare ogni fotodiodo con una sorgente nota, perche' nessun fotodiodo ha una curva di risposta "piatta" alle diverse lunghezze d'onda), avresti solo un'indicazione molto generica ... forse finiresti per avere un'indicazione piu precisa usando uno di quei sensori "RGB" per la lettura del colore ...

Se vuoi realizzare uno spettrometro, uno che sia almeno decente, non dico professionale, servono, come minimo:

un contenitore impermeabile alla luce (meglio se in metallo)

un paio di lamette da barba (per creare la fenditura lineare micrometrica senza dover spendere uno sproposito acquistandone una da ThorLabs o altri venditori simili)

una griglia di diffrazione a riflessione (al limite anche a trasparenza, ma quelle a riflessione sono migliori)

uno specchio cilindrico ad argentatura superficiale (cilindrico, non sferico, serve per allargare l'uscita dalla griglia a diffrazione verso il sensore in modo da aumentare la risoluzione)

Un sensore lineare, anche recuperato da qualche vecchio scanner a colori, per leggere lo spettro, possibilmente con un'uscita che permetta ad arduino di leggerlo ...

... come minimo ...

Ho fatto qualche prova con dei led da 1W, ma come dice Etemenanki la risposta non è affatto come ci si aspetta, alla fine ho preso un sensore colore della adafruit il TCS34725, forse protrebbe esserti utile

quello ti dovrebbe dare le percentuali R, G e B nello spettro visibile ... non proprio uno spettrometro, ma per rilevare il colore della luce va bene ... quello che non puo fare e' darti un grafico delle lunghezze d'onda, perche' rileva solo il colore e non la composizione spettrale (intendo dire, se hai luce rossa che contiene anche altre lunghezze d'onda, ti dice solo che e' "rossa", ma non puo fare una misura del resto)

Per poter costruire uno spettrometro, serve per forza una griglia a diffrazione, per scomporre la luce in una striscia "arcobaleno", che poi puo essere letta da un sensore lineare ... oppure puoi realizzare un "monocromatore", ma meccanicamente e' piu complesso e difficile da costruire per via delle parti in movimento e della vite micrometrica necessaria ...

Qualche anno fa ne avevo costruito uno, usando un vecchio prisma, un paio di specchi superficiali tolti da una vecchia Kodak defunta, ed un vecchio sensore tolto da uno scanner Epson che aveva l'interfaccia SPI, ma non era molto sensibile (non avevo trovato la griglia a riflessione e lo specchio cilindrico, per cui era abbastanza ingombrante in lunghezza, ed il prisma si "mangiava" parte della luce, rendendolo meno sensibile) ... avevo anche progettato una versione migliore, ma poi per problemi vari miei e' finito tutto nel dimenticatoio ...

Allora scusate per il ritardo nel rispondere :confused: io ho provato con led rossi e viola in particolare 660nm e 420nm e questi se vengono illuminati dalla loro luce (con un led analogo) sviluppano una tensione se invece illumino il led rosso con quello viola questo non la sviluppa. Se illumino emtrambi conun led bianco 6500k ottengo quasi la stessa tensione :o

-zef-:
Ho fatto qualche prova con dei led da 1W, ma come dice Etemenanki la risposta non è affatto come ci si aspetta, alla fine ho preso un sensore colore della adafruit il TCS34725, forse protrebbe esserti utile

Con che led hai provato? Colorati? Perche se utilizzi dei led bianchi vengono "eccitati" da tanti colori visto che il bianco ha uno spettro completo

cgyui:
... Se illumino emtrambi conun led bianco 6500k ottengo quasi la stessa tensione :o

Il che ti dimostra come una misura del genere possa essere imprecisa e fuorviante, se fatta in quel modo ... un led "bianco" in realta' non e' bianco, e' blu, coperto da una cupola o pannello di resina fluorescente che emette principalmente nella zona fra il verde e l'arancio (ma con una curva abbastanza larga), ed e' la miscelazione di tutte queste lunghezze d'onda che ce lo fa apparire come bianco, ma se vai a controllare lo spettro di emissione, trovi una cosa del genere

un picco nel blu, ed un secondo picco piu basso e largo nella zona verde-gialla-arancio (per i led bianco freddo, se fosse bianco caldo, la parte a destra sarebbe piu spostata verso il rosso) ... misurandolo come dici tu, hai la stessa indicazione che avresti da un sensore TCS, ovvero solo le percentuali dei colori a cui reagiscono i led, ma non lo spettro ...

Etemenanki:
Il che ti dimostra come una misura del genere possa essere imprecisa e fuorviante, se fatta in quel modo ... un led "bianco" in realta' non e' bianco, e' blu, coperto da una cupola o pannello di resina fluorescente che emette principalmente nella zona fra il verde e l'arancio (ma con una curva abbastanza larga), ed e' la miscelazione di tutte queste lunghezze d'onda che ce lo fa apparire come bianco, ma se vai a controllare lo spettro di emissione, trovi una cosa del genere

un picco nel blu, ed un secondo picco piu basso e largo nella zona verde-gialla-arancio (per i led bianco freddo, se fosse bianco caldo, la parte a destra sarebbe piu spostata verso il rosso) ... misurandolo come dici tu, hai la stessa indicazione che avresti da un sensore TCS, ovvero solo le percentuali dei colori a cui reagiscono i led, ma non lo spettro ...

Ma se so le percentuali di come reagiscono i led alla loro lunghezza d'onda posso ricostruire (a quadrettoni perché avrei una risoluzione di 10 punti contro i 400 di un grafico decente) spettro?

cgyui:
Con che led hai provato? Colorati? Perche se utilizzi dei led bianchi vengono "eccitati" da tanti colori visto che il bianco ha uno spettro completo

sono dei led RGB da 1W con la cupolina trasparente, alimentavo un colore alla volta e misuravo la tensione generata su un altro led, ora non ricordo di preciso i valori, ma il rosso era sensibile solo al rosso, il blu era più sensibile al rosso che al blu e il verde era il meno sensibile di tutti al suo colore o agli altri.

Allora il mio discorso crolla drasticamente

non ricordavo nemmeno di averla salvata ma qua puoi vedere un altro esperimento che avevo fatto sempre con lo stesso led rgb come sensore ma per generare i colori ho usato la tv collegata al pc con sfondi realizzati con un programma di grafica, stanza buia e tv da 55" a 50cm dal led:

 colore tv              tensione letta in Volt
                            sul led rgb
 R   G   B                 R       G       B
 0 - 0 -255 Blu		0,0122	0,0615	0,0166
 0 -255-255 Ciano	0,1468	0,0640	0,0167
 0 -255- 0  Verde	0,1548	0,0027	0,0000
255-255- 0  Giallo	0,2165	0,0039	0,0005
255- 0 - 0  Rosso	0,0854	0,0005	0,0000
255- 0 -255 Viola	0,1000	0,0620	0,0167

i risultati sono un tantino diversi da come ricordavo e da come avevo scritto nel precedente post :confused:

Questo perche', appunto, non e' detto che un led di un colore sia sensibile a quel particolare colore ... ed anche perche' l'effetto fotoelettrico ha una sua curva di sensibilita' specifica, che non dipende dal colore di emissione, e che in genere, salvo fotodiodi molto speciali e costosi, ha la massima sensibilita' fra rosso ed infrarosso ...

Ripeto, per fare una cosa come quella che vuoi tu, in quel modo, dovresti usare una decina di fotodiodi, ognuno con un pezzetto di filtro o gelatina colorata di fronte, in modo che ognuno legga solo un certo colore, poi amplificarli tutti ognuno con il suo operazionale con guadagno regolabile, in modo da portare la sensibilita' di ogni colore allo stesso livello, e comunque alla fine avresti un'indicazione molto, ma molto approssimativa lo stesso ...

Se riesci a recuperare da qualche parte una webcam da qualche portatile massacrato, una qualsiasi di quelle senza led e microfono a bordo, che sono tutte USB (oppure il sensore di uno scanner CCD, ed una lente cilindrica), ed una griglia di diffrazione lineare, o ancora meglio un prisma ottico, ottieni alla fine risultati molto migliori che con qualsiasi led o fotodiodo ...

-zef-:
non ricordavo nemmeno di averla salvata ma qua puoi vedere un altro esperimento che avevo fatto sempre con lo stesso led rgb come sensore ma per generare i colori ho usato la tv collegata al pc con sfondi realizzati con un programma di grafica, stanza buia e tv da 55" a 50cm dal led:

 colore tv              tensione letta in Volt

sul led rgb
R  G  B                R      G      B
0 - 0 -255 Blu 0,0122 0,0615 0,0166
0 -255-255 Ciano 0,1468 0,0640 0,0167
0 -255- 0  Verde 0,1548 0,0027 0,0000
255-255- 0  Giallo 0,2165 0,0039 0,0005
255- 0 - 0  Rosso 0,0854 0,0005 0,0000
255- 0 -255 Viola 0,1000 0,0620 0,0167




i risultati sono un tantino diversi da come ricordavo e da come avevo scritto nel precedente post :confused:

beh già qui si vede una bella analisi secondo me va benissimo se conti poi che la luce non era generata dallo stesso tipo di led che veniva letto e che quindi aveva una lughezza d'onda sicuramente diversa il risultato non è affatto male.

Etemenanki:
Ripeto, per fare una cosa come quella che vuoi tu, in quel modo, dovresti usare una decina di fotodiodi, ognuno con un pezzetto di filtro o gelatina colorata di fronte, in modo che ognuno legga solo un certo colore, poi amplificarli tutti ognuno con il suo operazionale con guadagno regolabile, in modo da portare la sensibilita' di ogni colore allo stesso livello, e comunque alla fine avresti un'indicazione molto, ma molto approssimativa lo stesso ...

Ma come faccio a trovare i filtri? Devo costruirmeli? Come capisco la lunghezza d'onda che leggono? A ma basta una cosa molto approssimata. Un grafico a quadrettoni che mi dica solo la quantità di luce che c'è con quella determinata lunghezza d'onda.

I filtri li puoi, o costruire con plastiche traspearenti di diversi colori (ma non e' detto che trovi tutti i colori che vuoi, ed anche trovandoli non puoi sapere esattamente quali lunghezze d'onda filtrano), oppure chiedere una "campionatura" di gelatine colorate per luci di scena (che sono un po migliori e di solito hanno parecchi colori presenti, ma piu difficili da trovare perche' e' roba piu specializzata), oppure fabbricare immergendo (o verniciando uniformemente) ognuno dei fotodiodi (e non i led) in un diverso colore trasparente per vetri o per acrilico (li si trovano nei negozi di belle arti o colorifici un po forniti, ma non ho idea di quanto possano costare)

Ovviamente tutti questi sistemi ti danno un risultato molto approssimativo, e la lunghezza d'onda non la puoi determinare con sicurezza ... puoi usare una stampa dello spettro con le varie lunghezze d'onda per confrontarlo con il colore delle gelatine o dei coloranti, ma sempre "ad occhio" ... perche' l'unico modo per sapere esattamente quale lunghezza d'onda lascia passare una determinata gelatina o colorante sarebbe quello di usare ... uno spettrometro, appunto ... :smiley:

Quindi viene comunque una cosa ad occhio... ma gli spettrometri professionali come funzionano? Certo non sono fatti con led

Uno spettrometro professionale, in genere, ha all'interno un sensore tipo quelli da scanner (pero' con risoluzione migliore e calibrato per avere una curva il piu "piatta" possibile), una fessura di entrata affacciata su una presa per fibra ottica, una griglia di diffrazione riflettente (in pratica uno specchio con 1000 o piu incisioni per mm sulla superfice, piu sono e migliore e' la risoluzione in nanometri), un secondo specchio superficiale cilindrico, un contenitore assolutamente a prova di luce, e poco altro ... ho cercato di disegnarti uno schemino di principio usando Eagle, fa un po pena dato che non e' un cad grafico, ma si dovrebbe capire lo stesso ...

es-spettr.png

La fessura serve per ottenere righe spettrali di larghezza minore possibile, e di solito e' di un decimo di mm o meno ... ed essendo accopiata a fibra, non serve un secondo schermo di allineamento perche' la sorgente risulta fissa ... da li, la luce viene riflessa dalla griglia, che la scompone in uno spettro "arcobaleno", lo spettro e' fatto rimbalzare su uno specchio cilindrico che allarga il ventaglio per avere una migliore risoluzione, ed il ventaglio finisce sul sensore lineare, che legge in sequenza l'intensita' della luce che colpisce ogni singolo pixel ... siccome ogni pixel viene colpito da una diversa lunghezza d'onda, l'elettronica puo poi formare un grafico dell'intensita' di ogni pixel, e ricavarne la curva di lunghezza d'onda di emissione della sorgente di luce (spiegato un po alla buona, ma il funzionamento e' quello)

Pero' questa configurazione "ripiegata" con lo specchio cilindrico si usa principalmente per contenere le dimensioni ed avere lo stesso una buona risoluzione ... se la lunghezza totale non e' un problema, si puo facilmente realizzarne una versione "artigianale" usando un prisma al posto della griglia (le piu economiche fra quelle decenti vanno dai 60 ai 120 dollari, piu spedizione, mentre un prisma "giocattolo" in vetro ottico lo si trova a meno di 10 dollari) e senza lo specchio cilindrico superficiale, che e' difficile da trovare e costa pure lui ... se si vuole solo un'uscita "visuale", si sfrutta una webcam per portatile (hanno obbiettivi piccoli e permettono di focalizzare piu vicino), e si vede lo spettro sul monitor del PC, ed in quel caso si puo contenere la lunghezza complessiva sui 30/35cm ... se si vuole invece qualcosa di piu "serio" (anche se comunque non uno strumento professionale da laboratorio), che possa essere interfacciato con qualche programma e creare grafici, serve usare un sensore lineare per scanner, e la lunghezza del tutto finirebbe per essere come minimo una cinquantina di cm, o anche qualcosa in piu, dipende dalla larghezza della zona sensibile dello scanner ... si puo ridurre se si trovano un paio di specchi superficiali piatti, che si possono recuperare anche quelli a costo zero dallo stesso scanner da cui si estrae il sensore comunque ...

Ci sono anche i "monocromatori", che hanno risoluzione anche maggiore, ma sono meccanicamente piu incasinati ... comunque uno spettrometro (che abbia l'uscita come segnale video da una camera, o come segnale dati da una MCU), si puo costruire abbastanza semplicemente, se non si pretende una risoluzione superiore ai 4 o 5 nm ... se vuoi, provo a schematizzartene uno al volo ...

es-spettr.png

Allora intanto grazie di esserti appassionato al mio progetto. Una risoluzione già di 10nm per me era un sogno. Quindi mi procuro il necessario: la griglia di rifrazione dove la trovo? Webcam la ho intanto farei un pannelo con la fessura e la griglia. Mi conviene farlo lungo e nom ripiegato allora? Quindi verrebbe tuttodritto senza specchi? Intanto comincio a distruggere lo scanner :smiley:

Seguo la discussione, spero di poter contribuire