Pages: 1 [2]   Go Down
Author Topic: [solved]AnalogRead di una sonda influenza anche l'altra  (Read 1434 times)
0 Members and 1 Guest are viewing this topic.
Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7178
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Parma
Offline Offline
Edison Member
*
Karma: 21
Posts: 2412
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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 smiley
Logged

Pages: 1 [2]   Go Up
Jump to: