buongiorno ragazzi,
tra le mie prove mi sono imbattuto nel sensore di temperatura tmp275.
guardo le sketch, vedo in giro chi l'ha provato e dicono di guardare il tmp102, guardo un po' di cose e inizio con il collegamento.
collego sdata al pin analogico 4
scl (clock) al pin analogico 5
ao,a1,a2 al gnd (indirizzo 0x48)
il gnd con il gnd
il v++ ai 3 v
il problema è che quando collego l'alimentazione al sensore, questo mi ruba tutta l'alimentazione ad arduino e lo spegne.
cosa può essere? collego sbagliato qualcosa?
problemi software non penso, non ho ancora iniziato a programmare, perchè non riesco ad alimentare il sensore.
metto sketch
#include <Wire.h> // Includo la libreria Wire.h
byte ValoreSignificativo; // Creo una costante byte per il valore MSB
byte ValoreNonSignificativo; // Creo una costante byte per il valore LSB
int Valore; // Creo un intero
byte NByte; // Creo una costante per contenere 2 Byte
float A = 0.0625; // Creo variabile per contenere valori a virgola mobile.
void setup()
{
Serial.begin(9600); // Inizializzo al baud 9600
Wire.begin(); // Inizializzo Wire
}
void loop()
{
NByte = Wire.requestFrom(0x48, 2); // Salvo 2 Byte dall’indirizzo 72 del Sensore nella variabile NByte
if (NByte == 2) // Se i Byte prelevati sono uguali a 2 esegui....
{
ValoreSignificativo = Wire.read(); // Salvo il valore MSB sulla variabile
ValoreNonSignificativo = Wire.read(); // Salvo il valore LSB sulla varabile
Valore = ((ValoreSignificativo) << 4); // Shifto i valori a sinistra
Valore |= (ValoreNonSignificativo >> 4); // Shifto i valori a destra, ritorna il valore dell'or effettuato bit a bit sui valori ritornati dalle 2 espressioni.
if(Valore >= 2048) // Se il valore è maggiore o uguale di 2048 allora ho un numero negativo
{
Serial.print("-"); // Scrivo sulla seriale il simbolo Negativo
Serial.println((4096 - Valore)*A); // Scrivo sulla seriale la temperatura negativa
}
else if (Valore <= 2048) // Altrimenti se il Valore è minore o uguale di 2048 ho un numero positivo
{
Serial.print("+"); // Scrivo sulla seriale il simbolo positivo
Serial.println(Valore*A); // Scrivo sulla seriale la temperatura positiva
}
else // Altrimenti se il sensore non è connesso
{
Serial.println("Sensore non connesso"); // Scrivo sulla seriale “Sensore non Connesso”
}
}
delay(200); // Aspetto 200 ms prima del nuovo ciclo
}
Come sempre omettete di dire la cosa più importante ... la board su cui state lavorando ... diamo per scontato che sia un Arduino/Genuino UNO ... :
Con riferimento al datasheet, il pin 1 (SDA) del IC deve andare al pin A4 di Arduino, il pin 2 (SCL) ad A5 di Arduino, il pin 4 al GND ed il pin 8 al +Vcc.
Quindi, per assegnargli l'indirizzo 0x48 colleghi i pin 5, 6 e 7 del IC a GND.
Ora, riverifica i collegamenti ed i pin del IC (... mi raccomando attenzione al riferimento del pin 1) perché, così come detto, DEVE funzionare senza problemi ... altrimenti è guasto.
Per fare le prove, collega SOLO detto IC e no altri accessori/sensori/ecc. , così sei sicuro della prova.
Ovviamente ... hai messo le pull-up sul bus I2C vero ?
si scusa gpb01 la mia dimenticanza, uso arduino uno.
io sto già provando il sensore da solo.
le resistenze di pull-up le metto sul pin 1 del sensore e sul pin 2 quindi sui sdata e scl (sono da 1k) ma niente si spegne ancora, ho provato a metterle da 10 k (magari sono queste il problema) non si spegne ma non parte manco il codice.
Quindi, per assegnargli l'indirizzo 0x48 colleghi i pin 5, 6 e 7 del IC a GND
si collego ao,ai,a2(pin 5,6,7) a gnd
Brunello ho visto che posso alimentare anche a 5 ma avevo visto, mi pare, che dove avevo guardato alimentava a 3v. proverò le varie combinazioni.
Se si spegne l' arduino quando colleghi il sensore allore hai sbagliato i collegamneti oppure il sensore é rotto.
Posta una foto del circuito che hai fatto per capire se lo hai collegato giusto.
Ciao Uwe
volevo chiedere se le resistenze andavano bene così o dovevo aumentare qualcosa o posizionarle in un altro modo?
vi allego la foto ( non odiatemi è tutto volatile), sto usando jumper volatili ma sono sicuro che non danno corto (non ci sono le resistenze perchè le avevo tolte), il problema a questo punto, secondo me , risiede nella saldatura alla basetta... proverò a guardare dei possibili corti.
grazie
per favore riuscite a rispondere alle domande sulle resistenze così se trovo i corti so che non c'è più nulla di "errato".
P.S. gpb01 però sul datasheet se non erro c'è scritto di alimentare a 5v, dimmi se sbaglio oppure dove sbaglio...(secondo te come dovrei connetterlo ad arduino?)
buongiorno ragazzi,
grazie gpb01 per le informazioni... le saldature mi parevano anche a me non molto buone ma ho fatto lo stesso un tentivo vedrò il da farsi oggi... ok alimenterò a 5 v.
grazie ragazzi e buona giornata 8)
ho controllato i vari pin e non dovrebbe esserci niente di "sbagliato" ho riguardato bene i miei collegamenti e mi sembra che sbagliavo ad inserire un jumper.... riguardato tutto ora se connetto il sensore ad arduino finalmente non me lo spegne più, però mi sa che ho bruciato il sensore perchè se non metto le pull up non mi fa vedere niente il codice se ferma nel Wire.requestFrom(0x48,2); e se metto le pull up mi fa edere a video temperature di come quando il sensore è spento, ovvvero di quando non collego i scl e sda ad arduino.
proverò con un nuovo sensore...
uwefed, per quanto riguarda il pin uno io guardo dove c'è la riga sul sensore e il pin 1 dovrebbe essere quello dove c'è scritto R1(dove c'è quel buco)...
però osservando la scheda noto che ci sono tre resistori io nella mia bread board ne metto solo due, sui pin sda(1) e scl(2) devo mettere delle resistenze anche sul v+ o GND secondo voi?
buona giornata a tutti...
PS grazie guglielmo per il consiglio ne terrò presente 8)
vivaArdu:
... se non metto le pull up non mi fa vedere niente il codice si ferma ...
... se non metti le resistenze NON hai più segnali visto che NON c'è nessuno che da il livello HIGH ... e come se non avessi il bus !!!
vivaArdu:
però osservando la scheda noto che ci sono tre resistori io nella mia bread board ne metto solo due, sui pin sda(1) e scl(2) devo mettere delle resistenze anche sul v+ o GND secondo voi?
Ma hai letto bene il datasheet ? ? ?
Pagina 5/20, all'inizio :
The TMP275 requires no external components for operation except for pull-up resistors on SCL, SDA, and ALERT, although a 0.1µF bypass capacitor is recommended, as shown in Figure 1.
... e NON mi sembra che tu usi il segnale di ALERT quindi ... :
Si, ma se guardiamo la foto che hai postato, sembra che tu abbia invertito i collegamenti.
Hai considerato come pin 1, quello in alto a sinistra, ma a me pare ( vedendo la stampigliatura sul chip ) che il pin 1 sia in realta' quello in basso a destra, dove c'e' appunto scritto 1 sul CS
e che quel pallino rosso sia del tutto fuori posizione
.... una volta !! Mo' senza lentino nemmeno piu' riesco a leggere le sigle dei chip
e' che quel chip non ha il classico punto sul pin1, ma e' la riga stampigliata.
nella foto che ha postato @uwe, se fai visualizza immagine, si vede anche bene
@Brunello hai ragionissima io ero cascato nel punto del datasheet come gpb01 quindi ho ricontrollato tutti i collegamenti ora va tutto ok solo che ho il problema che ho scritto un po' di post fa,sembra che io abbia "bruciato" il sensore perchè con le pull-up mi da valori come se non fosse attaccato ai pin analogici (provo a riprenderlo e rifare tutto)....
@gpb01: si mi ero risposto da solo dopo 10 miniti che avevo messo il post che la resistenza era dell'alert :)...
ho però da fare ancora una domanda: mi sembra che sull'immagine della scheda postata da Uwe le resistenze siano di 1,8K o mi sbaglio?(tu mi avevi indicato valori di 4,7K) poi vedo la presenza anche di un condensatore servirebbe anche a me?