Ds18b20 cambiare risoluzione

Buon giorno.
Mi sono imbattuto in un problema inizialmente banale, ma che non riesco a risolvere, chiedo aiuto...
Sto utilizzando una sonda di temperatura DS18B20 con un codice che mi restituisce il valore della temepratura letta.
Funziona tutto, ma la risoluzione è di 0,5 °C; ho cambiato sonda (avevo quella incapsulata) con un DS18B20 aperto, in contenitore TO22 e la risoluzione è di 0,1°C.
Ho letto un po' in giro, e si dice che normalmente la risoluzione della sonda è 0,1; quindi vuol dire che alla sonda incapsulata è stata cambiata la risoluzione.
Non uso la libreria DallasTemperature nel mio progetto, ma solo la OneWire, solo che non riesco a cambiare la configurazione.
Scrivo questo:

byte addr_2[8];          //   b3 b2 b1
int t_precision = 2;    //    1    1   0       precisione 11 bit=0,125
  ds.select(addr_2);    
  ds.write(0x4E);
  // azzero il registro degli allarmi
  ds.write(0);
  ds.write(0);
  ds.write(t_precision << 5);
  // salvo in  EEPROM
  ds.write(0x48);

Ma continua a scrivermi la temperatura come se ci fosse precisione 0,5
Dove sbaglio?
Qualche consiglio??
Grazie.

Di default l'ADC della sonda è impostato a 12bit quindi se non fai niente dovresti apprezzare variazioni di grado di 0.0625°C (che non rappresenta la precisione.)

A prescindere dalla risoluzione dell'ADC però tieni conto che il sensore ha un'accuratezza di +- 0.5°C quindi se hai bisogno di letture così puntuali dovresti prevedere la possibilità di calibrazione.

Inoltre, stando a quel che dice il datasheet, il byte di configurazione per impostare 11bit di risoluzione dovrebbe essere 0b01011111 mentre tu scrivi 0b01000000

Beh leggendo bene il datasheet dice che da b0 a b4 e b7 non vengono affetti da scrittura; questo dovrebbe significare che anche se li scrivi non modifichi il loro contenuto.
Sull'acuratezza non discuto, ma sulla risoluzione quella la posso variare, e in teoria settando il DS in modalità 11 bit dovrebbe restituirmi variazioni di 0,1°C.....invece mi continua a dare variazioni di 0,5°C.
Come posso risolvere?

L'ho letto un po' superficialmente a dire il vero. Se è così allora dovrebbe andare.
Hai provato a fare un po' di reverse engeenering di qualche libreria funzionante?

Cotestatnt, non sono bravo a fare reverse engeenering, ho aperto la libreria Dallas e li ho visto che c'è una funzione che setta i bit per la risoluzione...
Ho provato di farlo ma non ci sono riuscito.
Allora ho aggirato l'ostacolo, ho aperto un esempio della libreria e ho settato la risoluzione che volevo; visto che poi lo salva in EEPROM, ho poi rimesso la sonda con la nuova configurazione nel mio rpogetto e funziona....
Però non ho capito come farlo fare senza uso della libreria...

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.