chiarimento sensore temperatura su bus i2c

buongiorno ragazzi,
ho bisogno di un chiarimento sul sensore di temperatura con bus i2c, mi spiego:
io ho il sensore di temperatura TMP275(allego datasheet) seguo tutti i collegamenti metto pure le pull-up e tutto funziona perfettamente.
mi viene l’idea di togliere le resistenze in modo da verificare che il sensore mi vada a registrare una temperatura strana(così vedo se funziona).
però il sensore mi registra ancora la temperatura giusta (ho un termometro nella stanza).

è possibile che questo sensore funzioni senza pull-up oppure è difettato?

ho provato a toglierlo e lo sketch è giusto mi da temperatura zero.

posto sketch

#include <SPI.h>
#include <Wire.h>

void setup(){
  
  Serial.begin(9600);
  Wire.begin();

    
  
}

void loop(){


  
  int celsius = getTemperature();
  
        
  Serial.print("Celsius: ");
  Serial.println(celsius);

  float fahrenheit = (1.8 * celsius) + 32;
  Serial.print("Fahrenheit: ");
  Serial.println(fahrenheit);

  delay(1000); //just here to slow down the output. You can remove this
}

float getTemperature(){

  
  Wire.requestFrom(0x48,2); 

 
  byte MSB = Wire.read();
  byte LSB = Wire.read();

  //it's a 12bit int, using two's compliment for negative
  int TemperatureSum = ((MSB << 8) | LSB) >> 4; 

  float celsius = TemperatureSum*0.0625;
  return celsius;
}

voi cose ne pensate?

buona giornata

tmp275.pdf (847 KB)

Le resistenze sul bus I2C sono OBBLIGATORIE e quindi NON ha senso fare prove senza di esse ...
... non sai che disturbi sono presenti per cui un periodo può funzionare, un altro no, in modo del tutto casuale.

Guglielmo

@vivaArdu, domanda sciocca, ma nel tuo codice a che caspita servono tutte quelle righe vuote ? Devi presentare un tema che deve occupare più pagine ? :confused:

float getTemperature(){
  // ??   
  // ??   
  Wire.requestFrom(0x48,2);

ok. allora provvederò con le resistenze...

tutte le righe vuote è perchè avevo del codice che per questo post non serviva. (andavo a salvare la temperatura su file) non mi sono ricordato di toglierle :slight_smile:

grazie. buona giornata

mi riaggancio a questo post, trattandosi ancora di bus i2c.
io ho collegato due dispositivi su bus i2c come in immagine allegata.
il circuito va bene oppure devo prendere altri accorgimenti?

(mi sono ispirato ad una immagine trovata in rete).

buona giornata

Si, ma per favore ... imparate a disegnare schemi, non ad usare quella porcheria di Fritzing ...

Scaricatevi Eagle (... la versione che vi basta è totalmente gratuita) ed imparate ad usare un prodotto serio !!!

Guglielmo

Io faccio un paio di appunti:

  1. Al modulo TinyRTC basta che colleghi una sola volta Vcc e GND, su un lato o sull'altro. I segnali vengono poi "ripetuti" dal PCB sull'altro lato, nel caso volessi collegare più dispositivi in cascata, come in realtà stai facendo.

  2. Le resistenze di pull-up potrebbero essere già integrate su alcuni sensori. Ora non ricordo se lo sono o meno sul TinyRTC, ma questo è un motivo per cui quelle esterne potrebbero non essere necessarie, se non addirittura nocive.

  3. Le breadbord "lunghe" come quella del disegno non sempre hanno tutta la fila di pin Vcc/GND collegata insieme. Sulle mie, ad esempio, sono spezzate a metà scheda. Tienilo a mente, se qualcosa non funziona :).

Come ha detto il buon Guglielmo, rimuovere i resistori di pull up non è stata una buona idea, ma se usi anche la scheda RTC Tiny puoi farlo poiché essa già contiene dei resistori di pull up da 3.3k.

buongiorno ragazzi,
grazie per le vostre risposte:

gpb01: non sapevo dell'esistenza di eagle, provo a dargli un'occhiata.

SukkoPera:

1_ proverò a vedere per l'rtc collegandolo solo da una parte.

2_ si le resistenze le ho già sull'rtc ma non le ho per il sensore di temperatura.

3_ no problem per la bredboard ho capito cosa intendi anche io ho la breadboard spezzata in due.

cyberhs:

sì sull'rtc ho i resistori ma sul sensore non li ho, posso quindi togliere le resistenze anche se il sensore ne è sprovvisto?

Le resistenze di pull-up bastano una volta sola, non servono per ogni sensore. Anzi, come detto sopra averne più di una potrebbe essere controproducente.

vivaArdu:
2_ si le resistenze le ho già sull'rtc ma non le ho per il sensore di temperatura.

Ti consiglio di dedicare 10 minuti allo studio di come funziona un bus I2C ... QUI :wink:

Guglielmo

grazie ragazzi per le risposte.

sukkopera: si quello lo avevo intuito anche io :stuck_out_tongue: che troppo storpia :slight_smile:

gbp01: grazie per il link molto utile :slight_smile:

mi sono fatto un po' di problemi per il fatto che il mio modulo rtc ha già saldate le resistenze e non posso toglierle se non le dissaldo (lo farei anche ma penso di creare solo disguidi) invece il mio sensore di temperatura non è provvisto di nulla.

grazie a tutti buona giornata.