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