Ciao a tutti, ho collegato il sensore di CO2 come in questa immagine AirQualityMQ135 \ Learning \ Wiring ed ho usato quello sketch per provare il funzionamento. Credo che ci sia qualche problema di lettura perchè mi restituisce valori pari a 9 - 10, ma a che cosa si riferiscono quei valori? Di certo non sono i litri nell'aria o la percentuale. Chi mi sa spiegare o aiutare?
Da ciò che vedo quel sensore funziona come un potenziometro, quindi ti restituisce un valore proporzionale alla concentrazione che misuri.
E' normale che la misura sia x±1, significa che è stabile; dovresti provare ad andare in un luogo dove la CO2 è alta (p.es. di sera sotto un albero, se ben ricordo...) e vedere se cambia; non so se il monossido di carbonio CO possa avere influenza su questo sensore, altrimenti ti basta metterlo vicino al tubo di scarico dell'auto, ecc. A quel punto vedi altri valori.
Secondo me devi trovare il datasheet del sensore e trovare il fattore di conversione, di solito è una formuletta che devi applicare al valore che leggi, via software, per ottenere il valore corretto.
Ciao
Faccio ancora uso del vostro immenso sapere. Ho fatto questo sketch che legge la C02, temperatura e luminosità. Il valore che mi resituisce il pin 4 analogico, che è associato alla luminosità, mi da sempre il valore 4. Se però carico lo stesso sketch solo per la luminosità mi dai i valori corretti. Come mai? Dove sbaglio nella compilazione?
int pinLUM = 4; // Sensore luminosità pin analog 4
int val = 0; // variable to store the value coming
// from the sensor
int pin = 5; // analog pin temp, variato pin in 5 da 0
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables to make a better precision
int maxi = -100,mini = 100; // to start max/min temperature
int i;
int sensorValue; //nuova aggiunta
void setup()
{
Serial.begin(9600); // start serial communication
}
void loop()
{
for(i = 0;i<=7;i++){ // gets 8 samples of temperature
samples = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
_ tempc = tempc + samples*;_
_ delay(6000);_
_}_ tempc = tempc/8.0; // better precision tempf = (tempc * 9)/ 5 + 32; // converts to fahrenheit if(tempc > maxi) {maxi = tempc;} // set max temperature if(tempc < mini) {mini = tempc;} // set min temperature Serial.print(tempc,DEC); Serial.print(" Celsius, "); Serial.print(tempf,DEC); Serial.print(" fahrenheit -> "); Serial.print(maxi,DEC); Serial.print(" Max, "); Serial.print(mini,DEC); Serial.print(" Min"); tempc = 0;
_ sensorValue = analogRead(0); // NUOVA AGGIUNTA read analog input pin 0*_ * delay(6000); // prossima lettura tra 1 minuto* * Serial.print(" - Valore CO2 -> ");* * Serial.print(sensorValue, DEC); // prints the value read*
* val = analogRead(pinLUM); // Lettura dati sensore luminosità*
* Serial.print(" - Luminosità -> "); * * Serial.println(pinLUM);* delay(1000); // delay before loop } Non è pulito come uno dei vostri, ma come primo lavoro, non posso lamentarmi