La sicurezza non è mai troppa e ad oggi esistono migliaia di dispositivi ipertecnologici che aiutano l'essere umano a vivere più al sicuro. In auto, in bicicletta, a piedi e in casa. Grazie a combinazioni di sensori, attuatori e microcontrollori la tecnologia riesce a tenere lontano i ladri, il freddo e i pericoli in generale. In questo articolo si costruirà un allarme antigas utilizzando Arduino Nano che, tramite un sensore, dovrà segnalare acusticamente se ci sono perdite o presenze di gas in casa e un led lampeggiante ne segnalerà il corretto funzionamento. In caso di allarme, non sarà possibile disattivarlo finché il pericolo non sarà rientrato.
ATTENZIONE: Questo è un progetto dimostrativo e non vuole assolutamente sostituirsi alle apparecchiature certificate presenti in commercio. Se si desidera installare questo allarme antigas è bene utilizzarlo sempre parallelamente ad un dispositivo certificato.
Hardware
Come si avrà modo di constatare, questo sarà un progetto molto semplice, con pochi componenti e poche righe di codice. Il cuore sarà un classico Arduino Nano che si interfaccerà ad un sensore e ad un piccolo buzzer. Il sensore che è stato scelto è l'MQ-2 (Figura 1) che è in grado di rilevare il GPL, i-butano, propano, metano e fumo.
In alternativa si può scegliere l'MQ-5 che però rileva solamente il GPL, il gas naturale e il gas di città. Esistono anche altri tipi di sensori di gas:
MQ-3, ad esempio, è in grado di rilevare etanolo
MQ-4, invece, rileva molto bene il Gas Naturale
MQ-6 rileva la presenza di GPL, i-butano e propano a concentrazioni da 300 a 10000ppm (parti per milioni)
MQ-7 ha un'alta sensibilità al letalissimo monossido di carbonio (CO)
MQ-8 rileva la presenza di idrogeno con concentrazioni da 100ppm a 10000ppm
MQ-9 ha un'alta sensibilità al monossido di carbonio, al metano e al propano
MQ-135 è sensibile alla quantità di vapori di ammoniaca, agli ossidi di azoto e al benzene
Il funzionamento di questi sensori è simile tra loro: all'interno della capsula anti esplosione (quella metallica che si vede a occhio nudo) si trova una pellicola che reagisce in base al gas misurato aumentando o diminuendo la sua conducibilità elettrica. Nel caso del sensore usato per questo progetto, l'MQ-2 ha un sottile film di Biossido di Stagno (SnO2) che è un materiale con una bassa conduttività che va ad aumentare in caso di presenza di uno dei gas posto all'interno di un tubo di ceramica. Questa variazione si traduce in una tensione variabile generata dal circuito (Figura 2) su cui è saldato, che arriva al pin di uscita del sensore. Arduino leggerà questa tensione come ingresso analogico. Dai datasheet si legge che il range di funzionamento è da -20°C a 50°C e con umidità minore del 95%. Tuttavia, le letture ideali dei valori di gas avvengono con 20°C e con il 65% di umidità.
Il tutto si riduce ad un semplice partitore di tensione. Chiamando Rs la resistenza del sensore e RL la resistenza di carico e considerando che il sensore funziona a 5V (Vcc), si ha una tensione variabile all'uscita A0 con la formula:
E' possibile, inoltre, utilizzare un'uscita digitale, quindi avere due stati: c'è del gas, non c'è gas senza poter sapere però quanto ce ne sia. L'integrato LM393ADT che si vede nello schema di Figura 2 è un comparatore a bassa potenza. Nel pin 2 entra Vout ricavata nel partitore sopra e viene confrontata con la tensione di soglia (Vs) data dalla resistenza variabile R6 nel pin 3 che va a definire la sensibilità del sensore: se Vout > Vs l'integrato alzerà lo stato del pin 1 di uscita portando D0 alto, indicando così la presenza di eventuale gas. Per concludere l'analisi sensoristica, è importante sapere che LM393ADT ha 4 ingressi e due uscite. Dà la possibilità quindi di comparare due gruppi di valori e portare alte due uscite separatamente, come si vede dal pinout in Figura 3.
Il cuore del progetto è un Arduino Nano (Figura 4), scelto per la sua compattezza, bassi consumi e costi irrisori. Alla versione attuale v3.3, monta un microcontrollore ATMega328 con clock di 16MHz, una memoria flash di 32kB (di cui due occupati dal bootloader), 2kB di RAM. Infine, può funzionare da 5 a 12V.
Ecco che grazie a questa versatilità e semplicità porta il progettista a farne quasi sempre la prima scelta.
Analizzando la piedinatura di Arduino Nano schematizzata in Figura 5, si notano due grandi gruppi di pin: i pin etichettati da A0 a A7 sono I/O analogici e i pin etichettati da D2 a D13 sono, invece I/O digitali. Da notare che alcuni pin digitali hanno la dicitura PWM: sta a significare che hanno la possibilità di scrivere un valore analogico (onda PWM). Vengono utilizzati per pilotare motori con velocità variabili oppure LED con diverse luminosità. I pin A4 e A5 possono essere utilizzati come bus I2C, mentre i pin RX0 TX1 vengono utilizzati come porta seriale aggiuntiva. Il gruppo di sei pin in basso viene riservato al bus ICSP (In Circuit Serial Programming) ed è un bus riservato per la programmazione. Si utilizza quando si vuole ripristinare o installare il bootloader. Arduino Nano monta, infine, due uscite a 5V, una a 3.3V e un terminale di terra GND. La piedinatura potrebbe cambiare in base alla versione acquistata, ma tutti i pin sono comunque sempre serigrafati e numerati. Trovano infine posto alcuni LED di segnalazione: un LED PWR che serve ad indicare la presenza di alimentazione, una coppia di LED denominati RX-TX che indicano il trasferimento di dati e un LED interno definito come LED_BUILTIN che si può utilizzare nel basico programma BLINK, quello presente tra gli esempi nell'IDE di Arduino che fa lampeggiare un LED.
Come si vede in Figura 6, lo schema di collegamento è molto semplice. Si collega l'uscita analogica del sensore MQ-2 sul pin A0 di Arduino Nano; in questo caso è stata usata l'immagine del sensore MQ-3 perché non si è trovata la libreria corretta sul programma CAD Fritzing, ma i collegamenti sono equivalenti. L'alimentazione viene data rispettivamente dai pin 5V e GND. Per evitare di usurare troppo il LED che, normalmente, funzionerebbe a 3.3V ma l'uscita digitale D2 ne fornisce 5, si è messa in serie una resistenza che genera una caduta di tensione, che varia in base al tipo e colore di LED che si andrà a scegliere. Supponendo si scelga un LED di colore rosso da 5mm, la caduta di tensione tra l'anodo e il catodo non è di 0.7V, come un normale diodo al silicio, ma cambia in base alla lunghezza d'onda del colore, in questo specifico caso 1.6V. Se il LED fosse stato giallo, la caduta di tensione sarebbe stata di 2.2V e se, invece, fosse stato verde sarebbe stata di 2.4V. Definendo Vcc la tensione presente su D2 e Vd la caduta di tensione del diodo LED, si utilizza la formula inversa:
dove I è la corrente che transita attraverso il diodo che, nel caso di Arduino Nano, è definita di un massimo di 40mA. Facendo i conti spicci, quindi, si ha una resistenza di 85Ohm, che si andrà ad arrotondare con una resistenza da 100Ohm. Nel progetto pratico, questo LED avrà solamente lo scopo di segnalare il funzionamento della centralina, lampeggiando ogni secondo, quindi non ha necessità di essere molto luminoso. Si cercherà di abbassare ulteriormente la corrente assorbita per ridurne i consumi aumentando il valore della resistenza: esiste una convenzione che, per i LED rossi, si usa una resistenza da 350Ohm.
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2073 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.