[RISOLTO]MLX90614 e Arduino NANO 3.0 lettura temperatura sbagliata

Buongiorno a tutti, ringrazio anticipatamente chi può darmi una mano
Non riesco a far leggere la temperatura al sensore in oggetto, avevo iniziato usando Arduino DUE ma non supporta i protocolli di repeat start necessari, sono passato al Nano 3.0 ma anche con questo, usando lo sketch di test adafruit riesco solo a far leggere il valore massimo (1300°)
altri sketch trovati qui sul forum non li compila
Grazie mille a tutti

Edit: Il problema era che il sensore è a 3V (ver.BAA) e quindi si è reso necessario un traslatore di livello (nel mio caso lo sparkfun del primo link del gentilissimo gpb01)

Buonasera,
nonostante tu sia un vecchio utente del forum, non riesco a trovare il tuo post di presentazione ... :confused: :confused: :confused:

... per cui, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO che negli anni è piuttosto cambiato ... Grazie mille :slight_smile:

Guglielmo

Scusa, ho ottemperato a ciò che era richiesto, ho già provato a cercare nel forum altri post con problemi simili ma non sono riuscito a risolvere il mio problema

Leggo che ne esistono a 3.3V e a 5V ... hai verificato ?

Hai già visto QUESTO e seguito attentamente il tutorial di Adafruit ?

Guglielmo

Si, già guardato praticamente tutto quello che sono riuscito a trovare, ho la versione 3.3V

scoprire:
... ho la versione 3.3V

Quindi hai preso le dovute precauzioni per connettere i pin I2C ? Come li hai connessi ?

Guglielmo

come spiegato nel tutorial di adafruit

Che va benissimo per la versione a 5V, un po' meno bene per quella a 3.3V ...

Se avessi letto attentamemnte tutto il primo link che ti ho messo avresti notato :

The thermometer uses 2 Pins, one for SDA and the second for SCL, in addition to power and ground. Some device variants require 3V power and some require 5V - be carefull. The 3V devices have zener diodes on the inputs allowing them to be 5V tolerant, however it would be prudent to insert current limiting resistors on these inputs (not too high a value as they slow the bus down).

Tu non solo non hai messo le resistenze limitatrici come consigliato, ma, se vedo bene, il filo rosso li hai collegato al quarto buco che è il +5V e non al +3.3V ... con le conseguenze del caso ... ::slight_smile:

Guglielmo

L’alimentazione ai pin 3 e 4 del sensore (VDD e VSS) la fornisco tramite alimentatore esterno perché arduino NANO non ha l’uscita a 3V, è a 3V anche l’alimentazione dei PIN 1 e 2 (SCL e SDA) con le resistenze da 4.7Kohm tra la linea alimentata e i pin.
Ti ringrazio per la pazienza.

scoprire:
… è a 3V anche l’alimentazione dei PIN 1 e 2 (SCL e SDA) con le resistenze da 4.7Kohm tra la linea alimentata e i pin

… e anche questo protrebbe essere un problema dato che sei veramente al limite per il valore HIGH.

Se guardi il datasheet del ATmega328P ti accorgi che, alimentando la MCU a 5V hai :

VIL : Input Low Voltage, except XTAL1 and RESET pins : Min. -0.5V, Max. , Max. 0.3xVCC
VIH : Input High Voltage, except XTAL1 and RESET pins : Min. 0.6 x VCC , Max. VCC + 0.5

che da:

VIL (ovvero LOW) : Min. -0.5 V, Max. 0.3 x 5 = 1.5V
VIH (ovvero HIGH) : Min. 0.6 x 5 = 3V, Max 5 + 0.5 = 5.5V

Come vedi, sei al limite del VIH minimo e quindi … a rischio che non ci sia alcuna lettura !

Guglielmo

Quindi se ho capito bene dovrei alimentare i pin SCL e SCA a 5V?

scoprire:
Quindi se ho capito bene dovrei alimentare i pin SCL e SCA a 5V?

Per fare una cosa fatta BENE dovresti usare dei traslatori di livello … ::slight_smile:

Guglielmo

Grazie mille provvederò e farò sapere.

Come level converter guarda anche QUESTO che è dato espressamente per I2C :wink:

Guglielmo