Forum: Mikrocontroller und Digitale Elektronik Lm75 gibt konstant -0.5 grad zurück


von Rene J. (rene_j)


Angehängte Dateien:

Lesenswert?

Hallo an alle,
ich habe das myavr mk2 board und einen lm75 temp-sensor.
nach sehr vielem lesen, habe ich die schaltung soweit realisiert. jedoch 
wird auf dem display konstant -0.5 grad angezeigt.
obwohl ich das lm75-beispiel von codevision kaum verändert habe, denke 
ich das der fehler im quellcode liegt.

vielleicht könnt ihr mir weiter helfen.

ich danke im voraus für eure antworten.

viele grüße

von Oliver J. (skriptkiddy)


Lesenswert?

Im Datenblatt steht, das -0.5 °C folgendermaßen codiert ist:

1 1111 1111 = 1FFh

Also alles Einsen. Da haut mit der Kommunikation etwas nicht hin.

Gruß Skriptkiddy

von Rene J. (rene_j)


Lesenswert?

ja stimmt. kann es sein, dass die addressierung irgendwie falsch ist? 
a0,a1,a2 habe ich auf gnd gelegt. das sollte doch eigentlich 
funktionieren, solange ich nur einen lm75 verbaut habe?
einen fehler in der lm75-lib von codevision, sollte man ja eigentlich 
ausschließen können?

von Oliver J. (skriptkiddy)


Lesenswert?

Ich kenne Codivision nicht. Aber ich würde mal Folgendes testen:

Start+Adresse+R und gucken ob der Slave ein ACK gibt. Und dann ein Stop.

Wenn der Slave ACKt, dann hast die richtige Adresse. Man könnte auch in 
einer Schleife alle möglichen Adressen abklappern und schauen, ob ein 
ACK kommt.

Ein Logikanalysator würde sicher auch helfen. Damit könnte man mal 
schauen, was auf dem Bus los ist.

Gruß Skriptkiddy

von Martin (Gast)


Lesenswert?

Rene J. schrieb:
> einen fehler in der lm75-lib von codevision, sollte man ja eigentlich
> ausschließen können?
Weiß man's? Ohne Code ist das schwer zu sagen.
Hast du die Pull-up Widerstände am Bus dran?

von Rene J. (rene_j)


Lesenswert?

die pull-up widerstände(10 kohm) habe ich parallel zu sda und scl 
gelegt. das sollte eigentlich stimmen. v+ liegt am board auf high, gnd 
auf low, sollte auch stimmen. a0, a1, a2 liegen liegen ebenfalls auf 
gnd.
o.s. habe ich nicht benutzt. für eine einfache messung benötigt man den 
pin nicht, oder habe ich etwas falsch verstanden?

von Stefan W. (wswbln)


Lesenswert?

10K ist recht hoch, speziell wenn die Leitungen länger sind (wie lang 
sind die bei Deiner Anwendung?).

Was hast Du an Messtechnik? Scope? Logic-Analyzer?

von Rene J. (rene_j)


Lesenswert?

Ich habe mir die Schaltung auf einem Experimentierboard aufgebaut. Die 
Leitungen sind also nur wenige cm lang/kurz. Ich habe erst vor kurzem 
angefangen, mich mit Elektronik zu beschäftigen. Deshalb habe ich leider 
noch keine Messtechnik oder der gleichen.
Ich habe mir diese temperatur-Addon von myAvr mal angeschaut. Dort 
werden auch 10K verwendet.

Ich komme einfach nicht weiter. Vielleicht hat noch jemand eine Idee.

Aber danke erstmal, für die bisherigen Antworten.

Viele Grüße

von Falk B. (falk)


Lesenswert?

@  Rene J. (rene_j)

>angefangen, mich mit Elektronik zu beschäftigen. Deshalb habe ich leider
>noch keine Messtechnik oder der gleichen.

Aber ein Multimeter ist da notwendige Minimum! Ohne geht es nicht.

>Ich habe mir diese temperatur-Addon von myAvr mal angeschaut. Dort
>werden auch 10K verwendet.

Passt schon.

>Ich komme einfach nicht weiter. Vielleicht hat noch jemand eine Idee.

Ja, jetzt musst du Fehlersuche lernen. Da du keine sonderliche 
Messtechnik hast, musst du improvisieren.

Nimm zwei LEDs mit je 1kOhm Vorwiderstand und schalte sie jeweils 
parallel zu deinen beiden Pull-Ups an SDA und SCL. Damit siehtst du den 
Zustand der Leitung.

LED aus -> HIGH
LED ein -> LOW

Dann machst du in dein Programm nach jedem elementaren Schritt eine 
große Pause rein, _delay_ms(1000) ist hier ausnahmsweise mal sehr 
sinnvoll. Damit kannst du das Signalspiel auf dem I2C Bus sehen. Dann 
musst du prüfen, was bei deinen Zugriffen rauskommt.

Erster Punkt. Antwortet der LM75 auf den Lesezugriff?

MFG
Falk

von Rene J. (rene_j)


Lesenswert?

hi,
ich habe mir noch schnell ein multimeter besorgt. Das ganze arbeitet mit 
4,5v. Die beiden LEDs habe ich auch parallel geschalten. Wenn ich die 
LED am SCL weg lasse, wird mir eine Temperatur von 0 Grad angezeigt. Die 
beiden LED blinken, also sendet der lm75 nur impuls-weise?
ich weiß jetzt nicht, wie ich das zu deuten habe, bzw wie ich daraus 
eine lösung ableiten kann.

von Falk B. (falk)


Lesenswert?

@  Rene J. (rene_j)

>beiden LED blinken, also sendet der lm75 nur impuls-weise?

Du musst dich wohl oder übel mit der Funktion des I2C-Buses 
vertraut machen. Ja, das dauert einige Tage. Anders geht es nicht. Oder 
du kaufst dir ein iPhone, das muss man nur einschalten.

MFG
Falk

von Rene J. (rene_j)


Lesenswert?

Gut, das werde ich machen. Ich wollte ja nun auch keine fertige lösung 
präsentiert bekommen, deshalb darf es auch etwas länger dauern. Dabei 
lernt man am meisten.
Das mit dem iPhone lasse ich mal, daher es nicht ganz zu meiner 
Problematik passt.

Vielen Dank, für eure Antworen.

mfg

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.