mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LM75 Störung


Autor: AVRBastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie genau liest du die temperature aus
poste mal deinen code

dekodierst du die 2 werte richtig ?

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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]);

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ortner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.