in soli 5 minuti vi spiegheremo come realizzare un progetto utilizzando il sensore di monossido di carbonio.
è un sensore molto economico, facile da reperire anche on-ine.
vi forniamo i datasheet al link: https://www.sparkfun.com/datasheets/S...
Link per l'acquisto:
il sensore è dotato di una elevata sensibilità e di un tempo di risposta molto rapido. è in grado di rilevare principalmente la presenza di monossido di carbonio nell' aria (CO2) in concentrazioni comprese tra 20 e 2000 ppm. Se la quantità di ppm aumenta, aumenta anche la tensione in output del sensore.
è dotato di quattro pin:
• l'alimentazione da 1.4 a 5 volt
• il pin GND
• un pin chiamato AO, un uscita analogica del sensore che invierà tutti i dati campionati dal sensore se collegata ad una porta analogica di arduino
• un pin chiamato DO, un uscita digitale del sensore che inviera un segnale alto (1) ad arduino se la quantità di ppm supera una certa soglia, 0 se non la supera
inoltre sono integrati:
• un trimmer con il quale è possibile andare a settare la soglia per la quale il pin DO emetterà un segnale alto o basso.
• un led che indica che il sensore è alimentato e connesso correttamente
• un led che indica che il sensore sta campionando dati superiori alla soglia stabilita
in media l'aria "pulita" contiene all'incirca 400ppm di CO2, ma ne siamo sicuri? andiamo a verificarlo!
prima di tutto colleghiamo il sensore alla breadboard. successivamente lo alimentiamo con i 5V di arduino e connettiamo il pin GND al ground di arduino (i relativi pin sono scritti sopra alla shield del sensore). infine colleghiamo AO alla porta analogica A1 di arduino.
riguardo il software, innanzitutto definiamo una macro (nominiamo il pin) #define mq7 A1. successivamente inizializziamo una variabile floating point (float ovvero numero con la virgola) data=0 con la quale acquisiremo i dati, e due variabili int: ppm per contenere il dato convertito da millivolt a ppm e maxx per contenere il valore massimo ricevuto in ingresso.
nel void setup scriviamo serial.Begin(9600) per inizializzare il monitor seriale che ci servirà per vedere tutti i dati acquisiti, e pinMode(mq7) input per dire ad arduino che dal pin A1 andremo a RICEVERE dei dati. nel void loop come prima cosa andiamo a salvare il dato campionato in data tramite data=analogRead(mq7).
svolgiamo la conversione da millivolt a ppm (è una conversione un po' grossolana però funziona!) tramite un map(data,0,1023,300,2000): data è il valore da rimappare; 0 e 1023 è come vogliamo rimappare, quindi in questa funzione stiamo rimappando il range 300-2000 alla dimensione di un byte 0-1023. abbiamo scelto come soglia minima 300 perchè è difficile campionare valori inferiori. successivamente andiamo a controllare se il valore di ppm è maggiore di quello di maxx, se lo è, maxx prende quel valore. infine andiamo a mostrare su monitor seriale tramite delle serial.Print e una serial.Println finale in modo da andare a capo al termine, il valore di ppm ottenuto.
Questo sensore può tornarvi utile per costruire sistemi antincendio e antifumo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#define MQ7 A1 float data=0; int ppm=0; int maxx=0; void setup(){ Serial.begin(9600); pinMode(MQ7,INPUT); } void loop(){ data = analogRead(MQ7); ppm = map(0,1023,300,2000); if(ppm>maxx){maxx = ppm;} Serial.print("PPM: "); Serial.println(ppm); Serial.print("VALORE MASSIMO LETTO: "); Serial.println(maxx); Serial.println(""); } |
Commenti
Posta un commento