Go Down

Topic: [solved]AnalogRead di una sonda influenza anche l'altra (Read 1 time) previous topic - next topic

PaoloP

Astro a detto che gli ingressi lasciati flottanti misurano lo stesso valore di quello precedente.
Non è che sul secondo pin il sensore è mal collegato e quindi l'analogread legge lo stesso valore?

flz47655


Comunque ragazzi mi sono accorto che il problema si risolve mettendo un delay tra i due cicli for. Il bello che deve esser anche un delay abbastanza "lungo". Se metto un valore di 5 millisecondi, nonostante i cicli le letture continuano ad essere falsate. Se metto delay più lunghi, dell'ordine dei 500 millisecondi tutto funziona alla grande. Come mai?


L'ADC è uno solo a cui sono collegati tramite un multiplexer tutti i pin analogici, il valore analogico viene copiato in un condensatore di sample and hold che necessita di tempo per caricarsi e scaricarsi in base alla corrente che circola. Se hai un'alta impedenza la corrente che circola è poca e quindi ci vuole più tempo per caricare/scaricare il condensatore.

Ciao

hermit274

ok...ho capito. Per risolvere ho dovuto fare necessariamente in questo modo altrimenti l'analogread mi dava valori falsati e anche di parecchio!

Code: [Select]
for(int i=0; i<4; i++){
      misurazione_acqua = analogRead(lettura_acqua);
      delay(10);
      }
     
      for(int j=0; j<4; j++){
      misurazione_sonda = analogRead(lettura_sonda);
      delay(10);
      }
      Serial.print("T-camera: ");
      Serial.print(misurazione_sonda);
      Serial.print("  ");
      Serial.print("T-acqua: ");
      Serial.println((map(misurazione_acqua, 0, 1023, 0, 255)));

mettendo un unico delay tra i due cicli sembrava avessi risolto il problema ma in realtà non era così, mi dava ancora letture falsate.
Spero di essere stato d'aiuto per qualcuno :)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy