Logo audio valvole
Banner Audiovalvole
Gruppo Facebook Audio Valvole il sito degli appassionati di elettronica valvolareCompra Audiovalvole eBook su lulu.com
Audio Valvole:Pagina Consigliata
--->Pagina consigliata: Fuoritema
Versione stampabile
Versione stampabile della pagina

SpettroFotometro con Arduino e sensore di colore tcs230

Cos'è la spettrofotometria

Alcuni metodi per l’analisi di campioni di materiali biologici si basano sulla misura di composti colorati che si formano durante alcune reazioni chimiche che li coinvolgono e l’intensità di un determinato colore può essere usato come misura della concentrazione di una determinata sostanza nel campione in esame. La misura del colore per determinare l'indice di concentrazione di alcune sostanze è noto col termine di colorimetria e lo strumento usato per la misura relativa si chiama colorimetro. Si definisce spettrofotometria la tecnica che si basa sulla misura diretta dell’intensità di colore in termini di potere di assorbimento/riflessione della luce da parte di una data soluzione in alcune regioni specifiche dello spettro della luce. In altre parole, banalizzando, si illumina con luce bianca (quindi con una composizione spettrale tale da contenere tutti i colori) una soluzione di cui si vuole misurare il colore, poi si filtrano tramite filtri ottici alcuni colori la cui intensità vogliamo misurare e si inviano a dei sensori che ne rilevano l'intensità. Il tutto in relazione ad un liquido di riferimento di cui conosciamo le caratteristiche (come termine di paragone per tarare lo strumento).

Premessa

Esistono molti modelli di spettrofotometro presenti sul mercato, tuttavia i costi sono molto alti, si tratta di strumenti di laboratorio che vengono usati in vari ambiti della fisica e della chimica. Il nostro obbiettivo è più modesto, ci occorre uno strumento affidabile per determinare con precisione il colore della birra. Ci accontentiamo di una precisione inferiore. Allo scopo, per non riscoprire la ruota partiremo da un hardware di largo utilizzo, il microcontrollore programmabile completo di tutti gli integrati di contorno che prende il nome di "Arduino". Questo è un progetto che non aspira a rivaleggiare con spettrofotometri commerciali dal costo di migliaia di euro, ma nel nostro piccolo abbiamo cercato di fare un buon lavoro. Ci siamo ispirati a lavori che sono di pubblico dominio, pubblicati su vari siti internet e possiamo affermare che quello che si trova in giro su internet è quasi sempre impreciso e frammentario, quasi sempre frutto di scopiazzamento fra siti, (abbiamo trovato lo stesso errore su tutti) quindi cercheremo di fare meglio.

Progetto dello spettrofotometro

Come prima cosa occorre un sensore adeguato da collegare ad arduino, quindi abbiamo scelto un sensore standard che è il TCS230 (Texas advanced optoelectronics solution). Si tratta di un sensore composto da una matrice di elementi fotosensibili, 64 esattamente di cui 16 con un filtro rosso 16 con un filtro verde e 16 con un filtro blu, più altri 16 non filtrati. Questo sensore all'uscita produce una frequenza che è funzione della luce che lo colpisce. E' possibile selezionare l'uscita legandola alla misura di uno dei 4 gruppi di sensori di cui sopra. Arduino seleziona il colore da misurare e legge la frequenza in uscita dal modulo TCS230. Il tutto grazie ad un programma che abbiamo sviluppato e caricato su arduino.

Pin Lato TCS230

Lato Arduino

S0

Digital 10

S1

Digital 11

S2

Digital 12

S3

Digital 13

OUT

Digital 5

Vcc

5V

GND

GND

OE

GND

Collegamento fra il sensore e arduino. In fase di costruzione del prototipo è opportuno usare gli appositi ponticelli, in fase di costruzione definitiva è meglio usare dei fili saldati, sia da una parte che dall'altra per evitare falsi contatti.

Sensore TCS230 fissato su una basetta millefori Sensore TCS230 fissato su una basetta millefori Sensore TCS230 fissato su una basetta millefori

Fissaggio del sensore ad una basetta millefori che servirà da supporto per fissare i componenti accessori che sono un trimmer per regolare il contrasto del display lcd alcune resistenze e alcuni condensatori di stabilizzazione dell'alimentazione.

Collegamento di arduino con il sensore per la realizzazione di un prototipo Collegamento di arduino con il sensore per la realizzazione di un prototipo Collegamento di arduino con il sensore per la realizzazione di un prototipo Collegamento di arduino con il sensore per la realizzazione di un prototipo

Collegamento di arduino con il sensore per la realizzazione di un prototipo per verificare i parametri di funzionamento e abbozzare un primo programma di test.

Prove di funzionamento sul prototipo dello spettrofotometro. Prove di funzionamento sul prototipo dello spettrofotometro. Prove di funzionamento sul prototipo dello spettrofotometro.

Prove di funzionamento sul prototipo dello spettrofotometro.

Schermatura del sensore di luce dalla luce diretta dei diodi led Schermatura del sensore di luce dalla luce diretta dei diodi led Schermatura del sensore di luce dalla luce diretta dei diodi led

Considerazioni sulla luce che direttamente passa dai diodi led al sensore: occorre evitare questo in modo assoluto, noi abbiamo disaccoppiato i led dal sensore mediante un collarino di tubo nero (abbiamo usato un tubo di plastica ricavato da un pennarello esaurito). Il sensore è ora in fondo al centro dello spezzone di tubo e la possibilità che la luce dei led vi possa giungere è stata eliminata.

Integrazione di un diplay lcd nello spettrofotometro Integrazione di un diplay lcd nello spettrofotometro Visione d'insieme del circuito dello spettrofotometro completo

Il prossimo passo è integrare un display lcd per poter usare lo strumento senza ricorrere al computer. La scelta del display cade su un modello a due righe 16 caratteri (compatibile con il driver Hitachi HD44780). Questo ha richiesto un certo numero di modifiche come ad esempio il montaggio di un trimmer per regolare il contrasto e di alcune resistenze per regolare la luminosità del display. Poi abbiamo ricablato tutti i fili saldandoli direttamente sul PCB di arduino in modo da eliminare una volta per tutte i falsi contatti. Nel dispay a sinistra si vedono le frequenze relative ai tre colori fondamentali (R=rosso,B=blu,V=verde) e al bianco (W). Nel display al centro la versione del software e il committente (parte introduttiva dopo l'accensione). Nella foto a destra tutto l'apparato completo di arduino uno, display e sensore, con tutti i fili di collegamento direttamente saldati sul PCB di arduino.

Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno
Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno

Ora dobbiamo costruire una scatola adatta a contenere tutto. Caratteristiche della scatola:

  • con l'interno verniciato di nero opaco in modo da evitare riflesioni ed ermetica in modo da evitare infiltrazioni di luce esterna. Questo è fondamentale, quanto usare sempre la stessa provetta (o meglio lo stesso tipo) per contenere il liquido. Cambiando questi parametri la macchina necessita di essere ritarata.
  • Il sensore dovrà essere preferibilmente collocato a 10-11 cm dall'oggetto da illuminare, i led impiegati emettono un fascio di luce molto direttivo che si apre sufficientemente solo a questa distanza. Posizionare il sensore troppo lontano è controproducente in quanto diminuisce la luce che lo colpisce e saremmo in questo caso costretti a ricorrere a delle ottiche per migliorarne la sensibilità come ad esempio una lente biconvessa per aumentare la concentrazione della luce sul sensore. In alternativa posizionare il sensore a contatto con la provetta e rendere più direttivi i led. In questo modo cala la luce ma il sensore è molto vicino, quindi più sensibile.
  • L'oggetto da misurare dovrà preferibilmente essere l'unico oggetto posto davanti al sensore in grado di emettere luce (in questo caso per riflessione), quindi tutto il resto andrà schermato, questo per aumentare il rapporto segnale utile/luce indesiderata e migliorare la presisione del sistema.

In alto alcune fasi della costruzione della scatola, realizzata in legno.

Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno Alcune fasi della costruzione della scatola per lo spettrofotometro, realizzata in legno Provetta che useremo per i test sullo spettrofotometro.

Colorazione dell'interno della scatola di nero opaco.

Fori passanti per il collegamento esterno di arduino per la programmazione e l'alimentazione.

Provetta che useremo per i test sullo spettrofotometro.

Studio alla lavagna dei problemi connessi alla riflessione per la collocazione della provetta nello spettrofotometro. Studio alla lavagna dei problemi connessi alla riflessione per la collocazione della provetta nello spettrofotometro.

Studio alla lavagna dei problemi connessi alla riflessione per la collocazione della provetta nello spettrofotometro.

Considerazioni sull'allineamento della provetta di fronte al sensore. Per evitare la riflessione del vetro occorre inclinare la provetta rispetto al sensore, in modo che l'angolo fra le fonti di luce e il sensore non possa in alcun caso e per nessuna combinazione essere zero. Questo vale sia per le provette in vetro borosilicato che per quelle in materiale plastico che per tutti gli oggetti di vetro. Questo nell'ottica di miglorare sempre il rapporto fra la luce utile e quella indesiderata.

Supporto per obbligare la provetta in una posizione ben precisa. Supporto per obbligare la provetta in una posizione ben precisa. Montaggio del supporto nella scatola dopo averlo verniciato di nero.

Supporto inferiore della provetta. Serve per bloccarla sempre in una precisa posizione per evitare errori di posizionamento della stessa.

Supporto inferiore della provetta. Serve per bloccarla sempre in una precisa posizione per evitare errori di posizionamento della stessa.

Montaggio del supporto guidaprovetta all'interno della scatola dopo averlo verniciato di nero opaco.

Provetta messa in posizione nel supporto guidaprovetta. Provetta messa in posizione nel supporto guidaprovetta. Scatola finita e montata. Sopra la scatola si vedono tre provette di taratura realizzate per eseguire dei test.

Provetta messa in posizione nel supporto guidaprovetta. E' stato messo in posizione anche il supporto reggisensore, con il sensore montato e a contatto con la provetta.

Provetta messa in posizione nel supporto guidaprovetta. E' stato messo in posizione anche il supporto reggisensore, con il sensore montato e a contatto con la provetta.

Scatola finita e montata. Sopra la scatola si vedono tre provette di taratura realizzate per eseguire dei test.

Conclusioni finali

Lo spettrofotometro si comporta alla prova pratica in maniera discreta, è sicuramente troppo accurato per il lavoro che deve svolgere. La soluzione scelta, come potete vedere nelle foto, è quella di mettere il sensore a contatto della provetta e limitare l'apertura del fascio di luce dei led tramite dei tubetti di plastica inseriti sul corpo degli stessi. La scatola è perfettibile ma si tratta di un prototipo che non ha certamente velleità di tipo estetico.

Di seguito il programma utilizzato per le prove dello spettrofotometro: basta copiarlo e trasferirlo su arduino.

#include <SPI.h>
#include <FreqCount.h>
#include <TimerOne.h>
#include <LiquidCrystal.h>

#define S0 13 // Please notice the Pin's define
#define S1 12
#define S2 11
#define S3 10
#define OUT 5
#define DELAY 1000

LiquidCrystal lcd(2, 4, 9, 8, 7, 6);
void inizio()
{
pinMode(S0, OUTPUT); // OUTPUT FREQUENCY
pinMode(S1, OUTPUT); // OUTPUT FREQUENCY
pinMode(S2, OUTPUT); // RGB Selection
pinMode(S3, OUTPUT); // RGB Selection
pinMode(OUT, INPUT); // Frequency reader

digitalWrite(S0, LOW); // OUTPUT FREQUENCY SCALING 2%
digitalWrite(S1, HIGH);
// Inizializza il display con i numeri dei piedini collegati ad arduino

}

void setup() {

Serial.begin(9600);
FreqCount.begin(1000);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.clear();
lcd.print("Colorimetro V1.0");
lcd.setCursor(0, 1);
lcd.print("->BrewThePlanet");
lcd.setCursor(0, 2);
lcd.print("Colore Scala EBC");
}

void loop() {
unsigned long countR;
unsigned long countB;
unsigned long countG;
unsigned long countW;

digitalWrite(S2, LOW); // Rosso
digitalWrite(S3, LOW);
delay(DELAY);
if (FreqCount.available()) {
countR = FreqCount.read();
}

digitalWrite(S2, LOW); // Blu
digitalWrite(S3, HIGH);
delay(DELAY);
if (FreqCount.available()) {
countB = FreqCount.read();
}

digitalWrite(S2, HIGH); // Verde
digitalWrite(S3, HIGH);
delay(DELAY);
if (FreqCount.available()) {
countG = FreqCount.read();
}

digitalWrite(S2, HIGH); // Senza filtro (Bianco)
digitalWrite(S3, LOW);
delay(DELAY);
if (FreqCount.available()) {
countW = FreqCount.read();
}

Serial.print("->Frequenza Rosso =");
Serial.println(countR);
Serial.print("->Frequenza Blu =");
Serial.println(countB);
Serial.print("->Frequenza Verde =");
Serial.println(countG);
Serial.print("->Frequenza Bianco=");
Serial.println(countW);
Serial.println("-----------------------------------------------");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("R:");
lcd.print(countR);
lcd.setCursor(8, 0);
lcd.print("B:");
lcd.print(countB);
lcd.setCursor(0, 1);
lcd.print("V:");
lcd.print(countG);
lcd.setCursor(8, 1);
lcd.print("W:");
lcd.print(countW);

}

Inizio Pagina