Spettrometro da PC: l’analisi dei materiali a portata di click

Utilizziamo la piattaforma basata sui sensori dell’AMS in abbinamento al Personal Computer e grazie a un software ad hoc tracciamo sullo schermo le curve di spettro frutto dell’analisi eseguita.

Nell’analisi dei materiali si utilizza da tempo la spettrometria, che è una tecnica di metrologia basata sul rilevamento dello spettro di una luce campione (ad ampia gamma di lunghezze d’onda) puntata contro la superficie da analizzare e da essa riflessa, almeno in parte; questa metodica permette quindi di riconoscere i materiali solidi o la composizione di una miscela liquida attraverso l’andamento della curva di risposta spettrale a una luce non coerente che le viene puntata contro e parzialmente riflessa.

La spettrometria viene utilizzata in tutti i laboratori di chimica e biologia e permette, ad esempio, di riconoscere un olio alimentare contraffatto oppure di distinguere un vino di qualità da uno scadente, ma anche di condurre analisi cliniche di vario genere.

La spettrometria si basa sul fatto che quando la luce colpisce un oggetto che non la assorbe completamente (è il caso di quasi tutti i corpi) una parte di essa torna indietro: questo è un fenomeno ottico comunemente conosciuto come riflessione e se la porzione di luce riflessa colpisce il nostro occhio, vediamo quell’oggetto del colore corrispondente.

La sensazione di colore è dovuta al fatto che la luce riflessa è composta dalla sola porzione, della luce che l’investe, corrispondente alle lunghezze d’onda non assorbite, quindi un corpo che vediamo verde alla luce del sole ci appare tale perché dello spettro della luce solare ha respinto solo la gamma intorno al verde, estesa intorno ai 560 nanometri.

Una cosa simile accade con i sensori di immagine e in generale con i fotosensori, i quali sono sensibili a determinate lunghezze d’onda e possono quindi essere stimolati dalla luce riflessa dai corpi.

Lo spettrometro su breakout board

Dopo questa premessa entriamo nel merito del progetto, che consiste nello sviluppare uno spettrometro da PC ottenuto connettendo alla porta USB (che ormai è uno standard per i Personal Computer e i dispositivi “mobile” come i tablet e gli smartphone) mediante un adattatore seriale/USB la breakout board rilevatrice di spettro (il cui progetto è stato pubblicato in questo post) e utilizzando uno specifico software fornito dalla AMS, che è il produttore dei tre componenti sensori spettrali impiegati nella breakout board stessa.

Il software, installabile in ambiente Windows, va in esecuzione su una specifica piattaforma chiamata ActiveTcl scaricabile liberamente (in versione free) dal sito di riferimento www.activestate.org; quindi non potete eseguirlo come qualsiasi applicazione Windows, ma dovete installare il runtime. Ma questo, come vedremo più avanti, non è un problema, in quanto l’ambiente di esecuzione è di libero utilizzo.

Ora facciamo una panoramica sul progetto, con un approfondimento sui componenti utilizzati.

Come funziona lo spettrometro da PC

Non stiamo qui a ripetere nel dettaglio il funzionamento della breakout board: per questo e per la realizzazione rimandiamo chi fosse interessato all’approfondimento, all’articolo “Realizza uno Spettrometro basato su Arduino per analizzare liquidi e materiali”.

Ci limiteremo a un riepilogo delle caratteristiche dei tre sensori di spettro della luce con cui essa è equipaggiata; tali sensori sono prodotti dalla AMS e connessi nella configurazione suggerita dal produttore.

Ogni sensore di quelli utilizzati nel nostro progetto misura l’intensità della luce in sei lunghezze d’onda (ogni lunghezza d’onda è quindi un canale) ben definite e siccome nel circuito i sensori utilizzati sono tre, contiamo su un totale di ben 18 canali: ce n’è abbastanza per coprire un ampio spettro di lunghezze d’onda e realizzare uno strumento utilizzabile in moltissime analisi.

Infatti, grazie all’integrazione di tre sensori della AMS, si riesce a ricostruire lo spettro da circa i 350 nm (il violetto) fino ai 1.000 nm, quindi si copre lo spettro della luce visibile più parte del NIR (Near Infrared Range), vale a dire del cosiddetto “vicino infrarosso”.

I tre sensori presenti nella breakout board appartengono alla famiglia AS7265X della AMS e sono siglati AS72651, AS72652 e AS72653; ciascuno è in grado di rilevare onde elettromagnetiche di sei lunghezze d’onda con un FWHM (Full Width at Half Maximum) di 20 nm, vale a dire che la larghezza di banda di ciascun canale considerata a un livello pari a metà dell’intensità luminosa percepita nello stesso è pari a 20 nm.
I tre sensori montati nella breakout board sono stati pensati per lavorare coordinati da uno di essi, ossia dall’AS72651, il quale integra un microcontroller che permette la comunicazione con gli altri due attraverso un’interfaccia smart.

Inoltre l’AS72651 si può interfacciare al computer mediante le linee dell’UART facente capo a RX (piedino 4) e TX (pin 5) oltre che le linee di reset RST (3) e INT (6); sul connettore della breakout board abbiamo anche l’alimentazione (che dev’essere di 3,3V e la GND.

La Flash EPROM una AT25SF041 dell’Atmel, della capacità di ben 4 Megabit, dual I/O, nella quale è caricato il nostro firmware Moonlight, scopo del quale è permettere al sensore che funzionerà da master di interrogare gli altri due e acquisire da essi i dati corrispondenti all’analisi spettrale effettuata da ciascuno, per poi inviare all’esterno i dati di tutti e tre secondo la modalità prescelta.

Lo stesso bus SPI dedicato alla lettura della Flash EPROM viene ripetuto sul connettore PRG della breakout board per la programmazione in-circuit.

I sensori di spettro AMS

Prima di entrare nel vivo dell’utilizzo dello spettrometro da Personal Computer, dedichiamo qualche paragrafo a un richiamo sui sensori di spettro prodotti dalla AMS, perché ci aiuterà a comprendere come sfruttare le informazioni rese disponibili dal software su Personal Computer e a capire il significato dei valori mostrati nelle varie schermate, così da sfruttare a pieno le informazioni nelle proprie analisi.

Come accennato, i dispositivi AS72651, AS72652 e AS72653 sono degli spettrometri digitali a 6 canali ciascuno e la Tabella 1 elenca le caratteristiche dei sei canali spettrali per ciascuno dei sensori della triade AMS: per ciascun canale è indicata la lunghezza d’onda su cui è centrata la curva di sensibilità.

Fig. 1 Curve di spettro dei 18 canali del sistema a tre sensori.

La Fig. 1 illustra le curve di risposta spettrale di tutti i canali di ciascun sensore e riepiloga il funzionamento del sistema Moonlight a tre sensori e 18 canali; nella figura vedete rappresentate in verde le curve relative all’AS72651, in rosso quelle riferite all’AS72652 e in azzurro quelle dell’AS72653, per un totale di 18 curve.

Tabella 1 Canali spettrali e lunghezza d’onda di centro banda dei sensori AMS7265x.

 

Per selezionare le varie lunghezze d’onda, nei sensori spettrali dell’AMS viene utilizzato il cosiddetto filtro gaussiano, che permette di estrarre dallo spettro della luce riflessa il 100% esattamente della lunghezza d’onda corrispondente al canale e una percentuale decrescente delle lunghezze d’onda attorno ad essa, costruendo una curva a campana, corrispondente, appunto, alla funzione gaussiana. Ciascuna delle curve riportate in Fig. 1 è una gaussiana.

Fig. 2 Schema a blocchi interno del generico sensore spettrale dell’AMS.

 

La Fig. 2 mostra lo schema a blocchi interno dei sensori della famiglia AMS, nel quale distinguiamo il sensore dello spettro (che ne è il cuore) il circuito di comunicazione dati su I²C-Bus e quello di controllo dei LED utilizzati per generare la luce puntata contro gli elementi di cui analizzare lo spettro.

Fig. 3 Schematizzazione del funzionamento del sensore di spettro, che nello specifico è il master AMS72651.

 

Il funzionamento dei sensori AMS è schematizzato dalla Fig. 3, che nello specifico riguarda quello dell’AS72651 che è il master della triade e che può interfacciarsi con un microprocessore attraverso il bus seriale (eventualmente convertibile in UART TTL) e con la memoria Flash dove viene conservato il firmware, attraverso il bus SPI a 4 fili dedicato.

 

La Fig. 4 propone uno schema a blocchi della breakout board con la connessione fra i tre sensori.

Ciascun dispositivo pilota, tramite la propria uscita DRV, un LED collegato al positivo di alimentazione attraverso un resistore di limitazione della corrente: detto LED viene acceso per proiettare la luce e subito dopo si attiva il sensore che rileva lo spettro della luce riflessa. Ogni LED è sincronizzato quindi con il rispettivo sensore.

 

L’interfacciamento della breakout board spettrometro con il PC

Per la comunicazione dati, nel sensore master AMS76251 possono essere implementate due differenti modalità: tramite registri I²C-Bus oppure attraverso dei comandi AT (i comandi Hayes, se preferite…) passando da un’interfaccia UART a livelli di tensione standard TTL 0/5V integrata nel sensore.

Chiaramente nel primo caso occorre interfacciare la triade di sensori con un dispositivo tipo un microprocessore o microcontrollore nel quale sia presente un’interfaccia I²C-Bus a due fili (SCL e SDA) rispetto a massa, mentre nel secondo, ossia quello della comunicazione in modalità UART, i due fili diventano TX ed RX e il colloquio può avvenire sia direttamente con un microcontrollore che disponga a bordo di un UART (Arduino rientra in questa categoria) sia con un Personal Computer, fermo restando che in questo caso serve un converter TTL/RS232 se si desidera l’interfacciamento con una COM (che funziona con livelli ±12V) o un più comune TTL/USB per i PC moderni, che non hanno più le porte RS232.

In entrambi i casi il controllo della triade di sensori e il colloquio su seriale avvengono tramite comandi AT, che rappresentano un semplice, quanto efficace, protocollo di comunicazione su seriale, che ci permette un rapido test della breakout board anche attraverso un emulatore di terminale per Windows, Linux o MacOS.

Per quanto riguarda la comunicazione con l’esterno, la selezione tra interfaccia I²C-Bus e UART si esegue con il piedino 8 (I2CE) e per l’esattezza, quando quest’ultimo è posto a zero logico si attiva il bus I²C, mentre se è a livello alto la comunicazione è in seriale TTL UART. Nella breakout board, il piedino 8 riceve il livello logico che imposta l’UART tramite il partitore resistivo composto da R6 ed R7, perciò è impostata la modalità UART, che è quella che ci interessa.

Le modalità di comunicazione con il sensore spettro

Ora che abbiamo chiarito struttura e funzionamento della breakout board possiamo approfondire il discorso sulla comunicazione con il PC, che poi è ciò su cui verte questo articolo: per dialogare con il PC sono possibili due soluzioni: la prima è appunto quella consistente nell’eseguire sul computer un programma di terminale (il classico Telnet o l’Hyper Terminal di Windows) e impartire comandi Hayes, mentre la seconda consiste nell’utilizzare l’apposito software fornito dalla AMS e scaricabile dal sito Intermet dell’azienda.

Per quanto riguarda la prima opzione, ogni comando viene inviato sotto forma di stringa di caratteri, deve iniziare con “AT” e finire con i caratteri di Carriage Return (CR) e New Line (NL).

I principali comandi AT adottati nel nostro sistema spettrometro sono i seguenti.
1. AT: per verificare che la comunicazione stia funzionando; il sistema risponderà “OK”.
2. ATDATA: ritorna la lista dei valori relativi ai 18 canali, ponendoli in ordine di sensore, vale a dire prima i sei del primo dispositivo, poi i sei del secondo e infine quelli del terzo.
3. ATXYZR: ritorna la lista dei valori relativi ai 18 canali, ordinandoli per lunghezza d’onda.
4. ATTEMP: restituisce le tre temperature di funzionamento dei rispettivi sensori, utili per effettuare eventuali correzioni.
5. ATVERSW: ritorna la versione del firmware installato nella Flash EPROM con cui si interfaccia il sensore che fa da master.

L’alternativa è la gestione mediante l’apposito software dell’AMS, che in pratica provvede da sé a interrogare la breakout board impartendo i comandi AT, in modo a noi trasparente. Questa soluzione è poi quella che descriveremo.

Connessione fisica al PC dei sensori di spettro

La breakout board può essere interfacciata a un PC mediante un converter TTL/USB come il modello USBTOUART che potete trovare qui a destra. Il converter TTL/seriale USBTOUART è simile al più noto FT782M (sempre della Futura Elettronica) ma ha il pregio che fornisce, sul suo connettore lato seriale, un’alimentazione a 3,3V invece che a 5V, quindi più adatta ad alimentare la breakout board spettrometro.

Questo piccolo convertitore da USB a UART è basato sul chip CH340 della WCH (invece che sull’FT232RL della FTDI) ed ha un connettore d’interfaccia a 6 contatti che sono, nell’ordine, DTR, RXD, TXD, VCC, CTS e GND.

L’ordine di disposizione dei contatti che ci interessano è analogo a quella dell’FT782M, con la differenza che saltiamo un contatto, ossia il CTS, dato che in questa applicazione non lo gestiamo. Una piccola parentesi su questo contatto: in realtà fa capo a un jumper a saldare su PCB che permette di connetterlo al CTS effettivamente oppure all’RTS, quando fosse necessario.

Lo schema di cablaggio è proposto nella pagina seguente. Il converter dispone di un mini-interruttore che permette di selezionare il funzionamento a 3,3 V o 5 V e tre LED di stato (alimentazione, TX, RX) e anch’esso, come l’FT782M, viene visto dal sistema operativo (gira sotto Windows 7, 8 e 10) come una COM virtuale, una volta installati i relativi driver. Siccome internamente al convertitore è previsto un regolatore di tensione, l’impostazione del mini-interruttore si riflette anche sulla tensione di uscita, pertanto siccome ci serve alimentare la breakout board con 3,3 volt, spostiamo la levetta del mini-interruttore in posizione 3V3 e siamo a posto.

In alternativa all’USBTOUART è comunque possibile interconnettere il PC alla breakout board tramite il tradizionale FT782M della Futura Elettronica basato sull’integrato FT232 della FTDI., fermo restando che questo converter, per quanto idoneo sul piano dei livelli logici sui contatti TX ed RX (perciò sulla seriale) fornisce 5 volt, mentre la scheda con i sensori AMS sarebbe opportuno che venisse alimentata con una tensione inferiore.
In questo caso la connessione al PC si esegue molto semplicemente connettendo la linea TX della breakout board alla RX dell’FT782M e la RX di quest’ultimo convertitore con la TX della breakout board. Collegate poi il contatto – al GND della breakout board, ma non l’alimentazione, che in questo caso sarà separata.

L’FT782M è quindi una soluzione consigliata se, ad esempio, si vuole mantenere separata dal PC l’alimentazione della breakout board contenere i tre sensori spettrali: ad esempio perché si desidera fornire un’alimentazione più filtrata di quella offerta dal PC o magari, per limitare al massimo la presenza di disturbi e residui degli switching interni al computer, prelevare i 3,3V da un regolatore lineare, come ad esempio un LDO capace di erogare una corrente d’uscita adeguata.

Qualunque sia l’hardware che avete utilizzato per interconnettere il PC alla breakout board AMS, una volta stabilita la connessione bisogna installare i driver e a quel punto avete a disposizione la COM virtuale che servirà a far dialogare il software di gestione dell’AMS con la breakout board dello spettrometro attraverso il convertitore.

Il software AMS per la gestione dello spettrometro

Vediamo dunque questo programma, che potete scaricare nella sezione download di questo articolo (il file è ams_Spectral_Sensor_Dashboard.tcl) e che per l’esecuzione, essendo in formato .tcl, richiede un ambiente di runtime: nello specifico si utilizza ActiveTCL, scaricabile in versione free da www.activestate.com.

Una volta scaricato e installato l’ambiente si può lanciare il file ams_Spectral_Sensor_Dashboard.tcl, che verrà quindi eseguito e mostrerà la schermata iniziale visualizzata nella Fig. 5. Tale schermata è la Dashboard del programma.

Fig. 5 Interfaccia utente del software AMS.

 

Notate che prima di lanciare l’esecuzione del software dovete aver connesso la breakout board al computer, altrimenti otterrete un messaggio di errore e il programma verrà chiuso.

Se invece avete già collegato la scheda, apparirà una finestra di dialogo che proporrà l’impostazione della COM affinché avvenga la connessione (Fig. 6); indicate la porta esatta e se non la ricordate, accedete a Pannello di controllo e nelle impostazioni di sistema e dell’hardware, verificate qual è la COM virtuale assegnata dal sistema operativo al converter TTL/USB.

Per selezionare la COM dovete cliccare, nel riquadro che elenca quelle trovate, sulla porta desiderata e poi fare clic sul pulsante Open. Così accedete alla Dashboard. In questa troviamo quattro tab (schede) che danno accesso ciascuna a determinate funzioni; notate che la Dashboard è stata pensata per gestire un sistema di tre sensori, ossia la nostra breakout board.

Fig. 6 Impostazione della COM virtuale cui connettere la breakout board.

 

Partiamo dalla tab 18 Channel Sensor che è suddivisa in due sezioni: la sezione Control & Status imposta i sensori per l’acquisizione dello spettro luminoso e quella sottostante riporta le letture.

Control & Status è ripartita nelle tre parti seguenti:
• Update Mode, permette di decidere se i dati mostrati debbano essere acquisiti in tempo reale oppure one-shot; nel primo caso cliccate su Continuous ponendovi il segno di spunta e in ogni caso l’acquisizione si avvia con il pulsante Start e si arresta cliccando su Stop (è lo stesso pulsante solo che dopo il clic passa da Start a Stop) allorché avrete dati aggiornati continuamente. Nella casella Stop After potete scrivere dopo quanti campioni acquisiti interrompere l’acquisizione, così da limitare il numero di campioni acquisiti e l’occupazione di memoria che ne deriva. Se invece non spuntate Continuous otterrete dati sulla risposta dei tre sensori di spettro solamente quando cliccherete sul pulsante, che in questo caso assume il nome di Sample.
• Status, riporta il numero di campionamenti effettuato dall’apertura della Dashboard.
• LED Control (electronic shutter) permette di impostare la modalità di accensione dei LED in base alle nostre esigenze, ovvero le correnti di lavoro di ciascuno, scegliendo tra i valori proposti nei singoli menu a tendina.

Ricordate che i tempi e le correnti di accensione dei LED determinano la qualità del rilevamento, così come la sincronizzazione tra i tempi di osservazione dello spettro riflesso da parte dei fotodiodi.

Per quanto riguarda i dati sullo spettro rilevato, saranno visualizzati nella sezione inferiore, distinti per sensore che li ha prodotti.

Sempre nella sezione inferiore, potete impostare la modalità di visualizzazione delle informazioni sullo spettro di luce, scegliendo una tra le 5 opzioni proposte; più esattamente, accanto a Show avete le opzioni di visualizzazione Raw (che mostra i dati grezzi ottenuti dai tre sensori) e Calibrated Data (che visualizza i dati dei sensori, ma calibrati). Invece accanto a sorted by avete le tre opzioni seguenti:
• Channel, che visualizza i dati divisi per canale del sensore corrispondente;
• Wavelenght, che mostra le lunghezze d’onda invece dei valori numerici rilevati nei singoli canali);
• as Spectrum, che probabilmente è la più immediata perché nella finestra del programma ci viene tracciato un grafico di spettro, facilmente leggibile (Fig. 7).

Fig. 7 Visualizzazione dello spettro sulla schermata del software.

Come vedete, si ottiene proprio la curva dettagliata per ampiezza delle singole componenti spettrali e lunghezza d’onda, nel range misurabile; il valore numerico sull’asse delle ordinate è quello relativo alla capacità di rilevamento e sensibilità dei sensori AMS. Passiamo alla tab Logging & Control, nella quale appaiono alcune informazioni nella sezione Device, come ad esempio la versione firmware e hardware, la COM selezionata eccetera (Fig. 8).

Nella sezione Logging possiamo aprire un file di log già creato e visualizzarne i valori memorizzati, mentre nella Sensor Control abbiamo due caselle:
• Integration (ms) da dove impostare il tempo di osservazione dei sensori, ovvero per quanto tempo acquisire la luce riflessa dopo l’accensione dei LED; questa funzione corrisponde al tempo di esposizione delle macchine fotografiche e va da sé che più alto è il tempo, più luce viene rilevata e viceversa (un tempo lungo aumenta la sensibilità del sistema e uno breve accelera il refresh delle analisi, ma lo fa a discapito della sensibilità);
• Gain, dalla quale impostare l’amplificazione del segnale fornito dai fotodiodi e quindi la sensibilità dei sensori alla luce.

Fig. 8 Tab Console che mostra il terminale integrato nel software.

 

L’ultima scheda che vediamo è la tab Console, che ci mette a disposizione un vero e proprio terminale integrato (Fig. 9), nel caso vogliamo impartire direttamente comandi AT senza dover uscire o switchare su un altro programma. Da questo terminale possiamo inviare tutti i comandi standard e visualizzare la comunicazione con la breakout board.

Fig. 9 Visualizzazione del terminale implementato nel software AMS.

Download

Conclusioni

Utilizzato in abbinamento a un sistema a microcontrollore oppure abbinato al Personal Computer tramite converter TTL/USB come descritto in queste pagine, lo spettrometro su breakout board si dimostra uno strumento affidabile e in grado di restituire analisi di spettro dei materiali sufficientemente valide, ad un costo irrisorio se paragonato a quello di uno spettrometro professionale da laboratorio di analisi.

Le grandi capacità di elaborazione dei Personal Computer vi permettono, se siete in grado di scrivere software capaci di interrogare la breakout board per estrarne e interpretarne i dati di spettro, di realizzare applicazioni specifiche in grado, ad esempio, di eseguire azioni automatiche in base alle analisi spettrali effettuate, come attivate un servomeccanismo che rimuove un prodotto da un nastro trasportatore o generare un alert al riconoscimento di un prodotto alimentare adulterato.

Le possibilità di impiego sono, come immaginerete, davvero tante…

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu