Pages: [1] 2 3 4   Go Down
Author Topic: Rilevatore di fughe di gas  (Read 4820 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salute. Ho bisogno di una mano.
Ho progettato un circuito che vorrei realizzare su PCB (penso da un service ma non escludo di farlo a casa, se mi gira). Si tratta di un rilevatore di fughe di gas basato su 2 sensori MQ-4 e MQ-7 pilotato da un Attiny84. I sensori rilevano CH4 e CO, metano e monossido di carbonio. L'idea è quella di farne un paio da mettere in lavanderia, dove ho la caldaia, ed in cucina.

Vi illustro cosa fa il sensore. All'avvio, riscalda i sensori, dopodiché esegue una lettura ogni x secondi. Se i valori letti sono maggiori di quelli memorizzati in EEPROM, fa suonare un cicalino. Inoltre un paio di led (giallo e rosso) si accendono quando i valori di uno dei 2 gas passano il valore massimo e, dopo 4 letture oltre il limite, scatta l'allarme sonoro. Se i gas scendono sotto la soglia di allarme, l'allarme si spenge ma i led rosso e/o giallo lampeggiano periodicamente, in modo da avvisare l'utente che l'allarme è scattato in sua assenza per la presenza di una concentrazione superiore alla media di uno o di tutti e 2 i gas.

Sulla scheda ci sono 2 pulsanti. Uno è il reset, l'altro è un pulsantino per gestire il circuito. Quando i led lampeggiano alternativamente per segnalare che è scattato un allarme, la pressione del pulsantino azzera questo lampeggio. Se si preme il pulsantino mentre si mette a Vcc il ponticello normalmente pullato-basso che si vede nello schema, si entra in modalità programmazione: la scheda attende 5 minuti durante i quali riscalda i sensori, dopodiché effettua una lettura e memorizza in EEPROM i dati ambientali maggiorati di un valore fisso in modo da creare la soglia di allarme adattata all'ambiente in cui la scheda andrà a lavorare.

Per pilotare il cicalino uso un transistor, così come per alternare l'alimentazione al sensore di CO, che deve essere di 1V4 per 90 secondi e di 5V per 60 secondi. Prima del transistor che regola la tensione del sensore del CO ho messo un filtro RC per "ammorbidire" il segnale PWM.

Lo schema è in allegato, se mi dite le eventuali inesattezze mi fareste una cortesia. Una volta corretti gli eventuali bug, mi realizzo la schedina (ho già il suocero che ne ha prenotata una  smiley-wink , poi se qualcuno è interessato posso anche rilasciare il sorgente dello sketch che la pilota. Grazie a tutti.


* sens_gas.png (23.38 KB, 1286x806 - viewed 216 times.)
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il jumper JP1 mi sembra impostato male, ma vorrei capire come intendi farlo funzionare.
Sulla base di Q1 metterei una pull-down di 22K, tanto per stabilizzare il TR.
Il C2 usalo ceramico che è non polarizzato, più piccolo e comodo da usare.
Il C1 lo metterei da 47 o anche 100µF, devi tener conto dei picchi di assorbimento, un po' di serbatotio non fa mai male.
I sensori sono certo che li hai "schemati" come da datasheet, quindi niente da dire....
Sull'ISP invece non sono d'accordo, a parte che la pull-down di BUTTON secondo me non ti fa fare la programmazione o comunque potrebbe crearti problemi, sei sicuro che "sparare" sequenze di bit a pilotare il VReg facciano bene al sensore?
Come ti dissi in altra occasione, MISO, MOSI e SCK dovrebbero essere liberi da carichi pilotati e da pull-down; se capisco cosa devi fare con quel JP "program" forse si potrebbe adottare la soluzione che ho usato io con successo, un doppio jumper (visto che uno dei tre segnali non aveva problemi) o anche un dip-switch che è anche più elegante...
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il jumper JP1 mi sembra impostato male, ma vorrei capire come intendi farlo funzionare.
Hai ragione. PROGR deve stare nel mezzo, l'ho invertito con GND.
Funziona così: lo stato del pin PROGR viene letto ad ogni pressione del tasto S1. Normalmente PROGR è ponticellato a GND così che sul pin leggo uno stato LOW ed ignoro il pin. Se lo ponticello ad HIGH, nel momento in cui premo S1 e leggo HIGH su PROGR, entro nella modalità di taratura: il circuito si mette in riscaldamento dei sensori e dopo 5 minuti legge i valori medi, memorizzandoli nella EEPROM. E' un modo per evitare di dover flashare il micro con i valori medi dell'ambiente in cui il dispositivo andrà a lavorare.

Quote
Sulla base di Q1 metterei una pull-down di 22K, tanto per stabilizzare il TR.
OK.

Quote
Il C2 usalo ceramico che è non polarizzato, più piccolo e comodo da usare.
Fa lo stesso? Di solo come decoupling uso sempre un elettrolitico.

Quote
Il C1 lo metterei da 47 o anche 100µF, devi tener conto dei picchi di assorbimento, un po' di serbatotio non fa mai male.
Inizialmente era da 100uF ma mi pareva esagerato così l'avevo messo da 10  smiley-sweat

Quote
I sensori sono certo che li hai "schemati" come da datasheet, quindi niente da dire....
No, aspetta... sul datasheet non mi pareva si parlasse di schermatura. I sensori sono questi:
http://www.watterott.com/en/Carbon-Monoxide-Sensor-MQ-7
http://www.watterott.com/en/Methane-CNG-Gas-Sensor-MQ-4
Hanno già un involucro protettivo. Inoltre sono montati su questa breakout board:
http://www.watterott.com/en/Gas-Sensor-Breakout-Board
per isolarli dalla breadboard/PCB sottostante.

Quote
Sull'ISP invece non sono d'accordo, a parte che la pull-down di BUTTON secondo me non ti fa fare la programmazione o comunque potrebbe crearti problemi, sei sicuro che "sparare" sequenze di bit a pilotare il VReg facciano bene al sensore?
Come ti dissi in altra occasione, MISO, MOSI e SCK dovrebbero essere liberi da carichi pilotati e da pull-down; se capisco cosa devi fare con quel JP "program" forse si potrebbe adottare la soluzione che ho usato io con successo, un doppio jumper (visto che uno dei tre segnali non aveva problemi) o anche un dip-switch che è anche più elegante...
Sul fatto che riesca a programmarli posso dirti che ci riesco. Sul fatto di sparare 0/1 sul pin collegato al transitor di pilotaggio.... non ci avevo pensato   smiley-roll-blue
Il jumper PROGR è ciò che ti ho illustrato più sopra. Uhm... E se usassi un tri-state buffer per collegare i pin al micro durante il normale funzionamento, così da isolare l'elettronica di pilotaggio dal micro durante la programmazione?
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jumper: ok, solo che io metterei una R anche sul +5V, in tal modo quando programmi
C2: sì, fa lo stesso, anzi la norma dei disaccoppiatori è sempre il ceramico o poliestere; forse anche i sensori lo gradiscono, ma probabilmente è già on-board
Sensori: ho scritto "schemati" NON schermati, intendendo dire che hai applicato lo schema del datasheet smiley-lol.
Riguardo il "riscaldamento" tu parli al plurale ma lo schema dice che il B1 di U2 va a GND.
La soluzione del tri-state mi sembra eccessiva, una volta che avrai fatto il lavoro mica vai da tuo suocero 12 volte al giorno a riprogrammare, mettere tre jumper (il dip-switch NON va bene, ho sbagliato prima...) significa fare le cose per bene e cambiare facilmente da programmazione a funzionamento, facendo in modo che la modalità programmazione coincida per il progr con la pull-up, ripeto che le pull-down possono dare problemi, io li ho avuti.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2294
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lodevole lavoro Leo..
Se non ne avessi comprati un paio a meno di 5 eur, poco tempo fa, ti seguirei a ruota  smiley-grin

Io aggiungerei un button di test dell'allarme: è del tutto inutile ai fini del sensore il sè, ma per l'utente poter provare a sentire l'allarme è di conforto  smiley-razz
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jumper: ok, solo che io metterei una R anche sul +5V, in tal modo quando programmi
OK.

Quote
C2: sì, fa lo stesso, anzi la norma dei disaccoppiatori è sempre il ceramico o poliestere; forse anche i sensori lo gradiscono, ma probabilmente è già on-board
Uhm... dal datasheet non mi pare. Si parla solo della R di carico.

Quote
Sensori: ho scritto "schemati" NON schermati, intendendo dire che hai applicato lo schema del datasheet smiley-lol.
Sorry  smiley-sweat

Quote
Riguardo il "riscaldamento" tu parli al plurale ma lo schema dice che il B1 di U2 va a GND.
Parlo al plurale riferendomi ai 2 sensori.
I collegamenti vanno: H1 e H2 a Vcc e partitore/pin analogico. A1 e B1 è la linea di alimentazione.

Quote
La soluzione del tri-state mi sembra eccessiva, una volta che avrai fatto il lavoro mica vai da tuo suocero 12 volte al giorno a riprogrammare, mettere tre jumper (il dip-switch NON va bene, ho sbagliato prima...) significa fare le cose per bene e cambiare facilmente da programmazione a funzionamento, facendo in modo che la modalità programmazione coincida per il progr con la pull-up, ripeto che le pull-down possono dare problemi, io li ho avuti.
OK. Rivedrò questa parte.

Grazie per i consigli  smiley-wink
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lodevole lavoro Leo..
Grazie tante, fa piacere ogni tanto sentirsi "coccolati"  smiley-lol

Quote
Io aggiungerei un button di test dell'allarme: è del tutto inutile ai fini del sensore il sè, ma per l'utente poter provare a sentire l'allarme è di conforto  smiley-razz
All'avvio il sistema esegue un'attivazione di tutte le uscite per qualche decina di millisecondi, ivi compresi led vari e cicalino.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa Leo, vogliamo approfondire questa cosa dei sensori? Non sono convinto di aver ben capito.
Sono collegati in maniera differente, dallo schema si evince (correggimi se sbaglio) che mentre U2 è sempre alimentato, U1 lo è SOLO se il pin 7 dell'84 va in HIGH, anche se con un breve ritardo dovuto a C3. Ho creduto di capire che questo circuito servisse per attivare il sensore SOLO quando serve.
Avendo tu scritto in un passaggio "il circuito si mette in riscaldamento dei sensori" ho pensato ad un errore, visto che tu puoi controllare solo uno dei due, quanto ad alimentazione, non so se sono stato chiaro.
Un C da 0,1µF cer/pol per ogni sensore, sull'alimentazione, io lo prevederei, se non ti complica la vita.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora, chiarisco.
Il sensore di metano, MQ-7, è sempre collegato a Vcc. Il riscaldamento di cui parlavo, preciso perché sono stato ambiguo, si riferisce al solo sensore MQ-4, quello del monossido. Per "riscaldamento" non intendo dire di collegarlo all'alimentazione ma di far passare dal transistor la massima tensione possibile. Questo perché l'MQ-4 è un sensore particolare perché deve lavorare per 90 secondi a 1V4 e per 60 a 5V, ciclicamente. Sempre. Difatti nello sketch devo sempre far l'inversione trascorsi i tempi prestabilit. Ecco perché uso il transistor pilotato in PWM. Di mio ho aggiunto il filtro RC per togliere un po' di cresta al segnale, in modo che al sensore arrivi una tensione quanto più stabile possibile quando riceve il voltaggio inferiore (quando cioè l'uscita PWM non è settata a 255 ma a 80).

I sensori, chiudo, son sicuro che sono collegati bene. I collegamenti li ho ripresi anche dal sito di Sparkfun dove alcuni lettori hanno specificato come usare l'MQ-4, che è il più complicato della famiglia MQ-x.

Tornando ai C, sei sicuro che possano servire? A parte che hanno il C da 100uF subito a monte, ma i sensori sono passivissimi: si tratta di un fiamento di ossido di alluminio, nulla di più. Non penso risentano delle oscillazioni dell'alimentazione.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I C da 100nF non servono per dare stabilità alla tensione bensì per prevenire autooscillazioni e bloccare i disturbi che potrebbero falsare i valori in uscita dai sensori. Immagino non servano altrimenti li avrebbero previswti sullo schedino com'è possibile anche che non li abbiano messi dando per scontato che chi li usa sappia che sono componenti standard.

Sui sensori NON stavo mettendo in dubbio il collegamento/funzionamento, l'ho chiarito dal primo post che ero certo che avevi preso uno schema applicativo, tu hai usato il plurale ed io osservavo che sono alimentati in modo differente, tutto qui, ora mi è chiaro a cosa serve quel circuito, ma prima che ne potevo sapere?  smiley-roll-sweat
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sui sensori NON stavo mettendo in dubbio il collegamento/funzionamento, l'ho chiarito dal primo post che ero certo che avevi preso uno schema applicativo, tu hai usato il plurale ed io osservavo che sono alimentati in modo differente, tutto qui, ora mi è chiaro a cosa serve quel circuito, ma prima che ne potevo sapere?  smiley-roll-sweat
Hai ragione, ho spiegato a grandi linee come operavano ma non ero sceso nei dettagli.
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bene, ho cercato di seguire i tuoi consigli:

1) messo un C ceramico da 100 nF anche sulle alimentazioni dei sensori;
2) invertita la logica del pulsantino S1 e del jumper 1 collegato al pin PROGR: adesso sono normalmente pullati alto, e vengono messi a massa con R di pull-down.
3) messo un jumper anche all'ingresso del transistor Q2 in modo da isolarlo in caso di riprogrammazione ISP. Anche in questo caso ho messo una R di pull-up
4) messa R di 22K tra B e E del transistor Q1
5) messo C da 100 uF sull'ingresso dell'alimentazione

Relativamente ai punti 2 e 3, per programmare tramite ISP basta spostare il jumperino 2: gli altri sono già normalmente pullati alti.


* sens_gas.png (23.54 KB, 1206x756 - viewed 76 times.)
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Direi che è perfetto così smiley-lol
Fai solo una prova, perché non so che effetti può avere sul filtro, metti una R da 22K anche tra base di Q2 del e GND, per lo stesso motivo di Q1.
Riguardo le R di pull-up sui jumper in posizione "ISP": nel caso di PROG se non ricordo male ti serve per la sua operatività, nel caso di V_REG, se non ti serve, non è necessario usarla, è sufficiente che il pin sia "libero", quindi potresti non metterla; il fatto che gli altri due pin MISO e SCK siano in pull-up non ha alcuna importanza rispetto a questo.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok. Aggiungerò anche la R sulla base di Q2. Sei un "tesssoro"  smiley-yell
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 521
Posts: 12322
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok. Aggiungerò anche la R sulla base di Q2. Sei un "tesssoro"  smiley-yell
sssssssìììì, nel senso che te lo sto facendo ssssspendere a botte di R aggiunte  smiley-confuse
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Pages: [1] 2 3 4   Go Up
Jump to: