Fartalyzer è un progetto che implementa la scheda Flip&Click della MikroElektronica per la misura di parametri quali la temperatura e livelli di gas metano. Una volta che i dati di interesse vengono acquisiti, un supporto flash permette di salvarli ogni 20 secondi. Oltre alla scheda Flip&Click vengono utilizzati i seguenti moduli Click MikroBUS: RTC2 Click, Thermo 3 Click, MicroSD Click e Methane Click. Quest’ultimo sfrutta la potenza di un sensore MQ-4 per la rilevazione di CH4 (metano), il campo di rilevamento è 200-10000 ppm. Il metano è un idrocarburo che si trova in natura sotto forma di gas, la molecola ha forma tetraedrica con angoli di legame di 109,5°. Il modulo Methane Click comunica con la scheda target attraverso la linea mikroBUS AN (OUT), ed è progettato per lavorare con una alimentazione di 5V. Gli altri moduli impiegati nel progetto sono analizzati anche in ulteriori articoli quali il progetto Master Chef Demo e l’etilometro.
Introduzione
Il Methane click è formato da un sensore MQ-4 (Figura 1) con uno strato sensibile di diossido di stagno (SnO2), dove la conduttività aumenta con l'aumentare dei livelli di metano. Per calibrare il sensore viene utilizzato un piccolo potenziometro che permette di regolare la resistenza di carico del circuito sensore. Per una taratura precisa il sensore deve essere preriscaldato, impiegando circa 24h per raggiungere la giusta temperatura (Figura 2 e 3).
Il circuito di azionamento è molto semplice, l’importante è collegare l’alimentazione di 5 V e aggiungere una resistenza di carico; successivamente collegare l'uscita ad un eventuale ADC. Questo sensore ha un'alta sensibilità con tempi di risposta molto rapidi. Viene fornito in un package simile al sensore di alcol MQ-3. Le caratteristiche tecniche del sensore MQ-4 possono essere riassunte di seguito:
- Alimentazione di 5V DC o AC.
- Set-up con una tensione di riscaldamento.
- Range di temperatura di lavoro: da -10°C a 50°C.
- Consumo di circa 700 mW.
- Dimensioni: diametro 20mm e altezza 23mm
Oltre al modulo sensore relativamente al metano, il progetto si compone di RTC2 Click: un real time clock; il sensore Thermo 3 Click: un sensore di temperatura digitale IC con un piccolo ingombro di soli 1,6 mm x 1,6 mm; e MicroSD Click. Il sensore di temperatura è TMP102 (Figura 4 e 5) della Texas Instruments con una precisione di 0,5 °C e un campo di misura compreso tra -25 °C a 85 °C. Un ADC integrato 12-bit consente la risoluzione di misura fino a 0,0625 °C. Thermo 3 click comunica con la scheda target attraverso i pin I2C (SCL, SDA), e uno di allarme aggiuntivo (INT sulla configurazione mikroBUS di default).
MicroSD Click è una scheda di memoria nel fattore di forma mikroBus, dotato di uno slot per schede microSD come supporto di memorizzazione per i dispositivi portatili. L’interfaccia SPI standard di settore assicura una comunicazione con elevate velocità di trasmissione (Figura 6 e 7).
La Serial Peripheral Interface (SPI) è una specifica interfaccia di comunicazione seriale sincrona utilizzata per la comunicazione a breve distanza, soprattutto in sistemi embedded. Le applicazioni tipiche includono schede Secure Digital e schermi a cristalli liquidi.
Codice
Il firmware (Arduino) del progetto consta di 3 funzioni principali. La prima relativa all’acquisizione della temperatura, gli altri, invece, per il calcolo dei ppm per il livello del gas metano e la memorizzazione dei dati sulla MicroSD.
// Get Temperature float get_temp() { int temp; float temperature; Wire1.beginTransmission( TMP102_I2C_ADDR ); // Issue I2C start signal Wire1.write( 0 ); Wire1.endTransmission(); Wire1.requestFrom( TMP102_I2C_ADDR, 2 ); //wait for response while ( Wire1.available() == 0 ); temp = Wire1.read() << 4; temp |= Wire1.read() >> 4; Wire1.endTransmission(); if ( temp & ( 1 << 11) ) // Test negative bit temp |= 0xF800; // Set bits 11 to 15 to logic 1 to get this reading into real two complement temperature = (float)temp * 0.0625; // Multiply temperature value with 0.0625 (value per bit) return temperature; // Return temperature data }
Per la temperatura, la funzione restituisce una variabile float espressa in gradi centigradi. Tutti i valori sono memorizzati nella MicroSD con l’indicazione del giorno, ora e livello ppm.
// Logger void log_some_gas() { File dataFile; dataFile = SD.open( "gasser.txt", FILE_WRITE ); if( dataFile ) { char tmp_txt[100]; float current_ppm = calculatePPM(); tmElements_t current_time; RTC.read( current_time ); sprintf( tmp_txt, "Day %d - Hour %d: PPM %2.2f, Temp %3.2fC\n", current_time.Day, current_time.Hour, current_ppm, get_temp() ); dataFile.write( tmp_txt ); dataFile.flush(); Serial.print( tmp_txt ); dataFile.close(); } wakeup_flag = false; }
I valori ppm sono espressi attraverso la funzione calculate_ppm() analoga a quella vista nel progetto master chef demo. Parti per milione (ppm) è una unità di misura adimensionale calcolata in rapporto alla massa molare per un milione, è impiegata nei sistemi di misura relativamente a grandezze omogene con bassi livelli di concentrazione.
//Calculation of PPM double calculatePPM() { double lgPPM; double ppm; // ppm double Vrl; double Rs; // Rs (Ohm) - Sensor resistance double ratio; // Rs/Rl ratio #define Rl 5000.0 // Rl (Ohm) - Load resistance #define Vadc_5 0.0048828125 // ADC step 5V/1024 4,88mV (10bit ADC) #define Vadc_33 0.0032226562 // ADC step 3,3V/1024 3,22mV (10bit ADC) // Output voltage Vrl = (double)analogRead( METH_AN ) * Vadc_5; // For 3.3V Vcc use Vadc_33 Rs = Rl * (5 - Vrl) / Vrl; // Calculate sensor resistance ratio = Rs / Rl; // Calculate ratio lgPPM = (log10(ratio) * -0.9) + 1.1; // Calculate ppm ppm = pow(10, lgPPM); // Calculate ppm return ppm; }
Lo schema a blocchi della funzione setup() e loop() è visualizzato nella figura 8, il codice può essere scaricato nel link riportato alla fine dell’articolo.
Conclusioni e considerazioni
I rilevatori di gas dannosi sono in grado di determinare la presenza di sostanze pericolose soprattutto in ambienti lavorativi. Il progetto proposto vuole essere un’idea per implementare la Flip&Click attraverso i suoi moduli sensori Click. Ulteriori varianti possono essere l’implementazione di un display quale OLED Click per la visualizzazione dei valori, oppure un Buzz Click per l’allarme sonoro qualora i valori ppm di metano superino una determinata soglia, così come una matrice di LED per implementare una interfaccia grafica visiva basata sull’illuminazione di alcuni LED che possono esprimere anche un’idea della quantità ppm di gas metano misurata. In accordo alle quantità di porte Click USB presenti nella Flip & Click, è possibile inserire ulteriori sensori della MikroElektronika quali Ozone click e LPG click. La flessibilità della scheda permette di implementare il progetto anche con Python utilizzando il tool Zerynth Studio scaricabile dal seguente link: http://www.zerynth.com/. La suite è composta da un IDE per la programmazione embedded, Virtual Machine RTOS e una App per la gestione mobile.
Allegati
Codice Arduino del progetto Fartalyzer
Per ulteriori approfondimenti al seguente link trovate tutti gli articoli Flip&Click http://it.emcelettronica.com/?s=flip+click
Fartalyzer in inglese non e’ proprio il massimo 🙂 Cmq rende l’idea.