Forum: Mikrocontroller und Digitale Elektronik LM75 Störung


von AVRBastler (Gast)


Lesenswert?

Hallo Leute,

ich habe gestern einen LM75 Temperatursensor an einen AT90S8517 gehängt.
Leider kann ich die Temperatur nicht korrekt auslesen. Der LM75 gibt mir 
jedesmal einen komplett anderen Wert zurück.

Die Anderen Register im LM75 (z.B. das Tos) kann ich aber Problemlos 
lesen und schreiben.

Hat jemand schon Erfahrungen mit diesem Phänomen gemacht?

von john (Gast)


Lesenswert?

wie genau liest du die temperature aus
poste mal deinen code

dekodierst du die 2 werte richtig ?

von john (Gast)


Lesenswert?

angenommen data[0] ist erstes byte und data[1] ist zweites byte

unsigned char sign;
if(data[0]>127){
 data[0]=0xff-data[0];
 data[0]++;
 sign = 1;
}
if((data[1]&0x80)) data[1] = 5; else data[1] = 0;
usart_sendint((unsigned int) data[0]);
usart_sendint((unsigned int)data[1]);

von Mike (Gast)


Lesenswert?

bist du dir sicher, dass das ein Software Problem ist? Ich habe mal den 
AD7416 von Analog Devices verwendet und da konnte ihc die Temperatur 
auch nicht korrekt auslesen (die Werte wariierten sehr stark: ca 
5-10°C). als ich dnn im Datenblatt geschaut hab, hab ich gesehen, dass 
mn unbedinnkt einen 10µF elko und ein 100nF Keramikkondensator o. ä. von 
Vcc auf GND der Versorgungsspanung des Sensors schalten muss. Als ich 
dass dann so gemacht habe hat es super funktioniert und die Temperatur 
war richtig.

mfG,
Mike

von Ortner (Gast)


Lesenswert?

Habe änliche Probleme,

ich kann die Temperatur auslesen, allerdings die variiert zu stark.
Wenn ich den LM75 mit der Hand erwärme geht die Temperatur sofort nach
oben und schwankt. Hier eine Auszug aus dem Terminal im Abstand von
einer Senkunde:

Man Sieht dass er von einer Sekunde auf die andere um 4 °C und mehr
springt. Was könnte das sein?



Temp:___19
Temp_0,5:___255

Temp:___19
Temp_0,5:___247

Temp:___23
Temp_0,5:___255

Temp:___23
Temp_0,5:___255

Temp:___25
Temp_0,5:___251

Temp:___25

2c_start();
i2c_WR_byte((address<<1)|0x01);//send address to rd modus

 value_0=i2c_RD_byteAck();
 value_1=i2c_RD_byteNak();
 i2c_stop();

 sprintf(s, "\r\nTemp:___%d", value_0); uart_printstr( &s[0]);
 sprintf(s, "\r\nTemp_0,5:___%d\r\n", value_1); uart_printstr(
&s[0]);

Danke im Voraus!

Andreas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.