Voor zover ik weet is het enige verschil in i2c aansturing tussen een lm75 en een lm76 de adressering. De lm75 heeft drie adresbits en de lm76 heeft er maar twee. Toch gaat er iets mis bij het uitlezen van de temperatuur. Ik heb een programma in at89c4051 waarmee ik de lm75 kan lezen en de temperatuur verspringt met halve graden als ik er met mijn vingers aanzit of met een bus freezer erop spuit.
Wanneer ik hetzelfde probeer met de lm76 dat wordt het device herkend, er komt een ACK na het adresbyte maar vervolgens lees ik twee keer een 0 als temperatuur waarde. Ik heb meerdere ic's geprobeerd omdat ik dacht dat er sprake was van een defect. Ik gebruik exact dezelfde routine met dat verschil dat het adresbyte voor de andere sensor wordt ingeprogrammeerd.
Heeft iemand anders dit al eens meegemaakt?

hallo,

Ik ben namelijk bezig met hetzelfde probleem aan het uitdokteren, want ik moet voor een eindwerk ook iets maken met deze IC, ik heb het basis schema gebruikt dat ze geven mij maxim of bijn national semiconductors en ik lees ook alleen maar nulletjes uit.

Ik zie dat deze discussie al redelijk oud is, mss heb je er al een oplossing voor gevonden. Zou het dan mogelijk zijn om deze door te sturen?

MVG

Ik heb dit probleem opgelost door het ic minder vaak te pollen. De lm75 heeft er geen probleem mee als je het veelvuldig uitleest, de lm76 blijkbaar wel.

succes,
Hennie

dus gewoon pauzes in de software bijbrengen?

Ok we zullen dit dan eens testen.

Hartelijk dank

hallo hennep,

zou het mogelijk zijn de software door te sturen die je gebruikt hebt om die LM76 te programmeren? ik heb namelijk nog altijd het probleem dat ik niks kan uitlezen.

grtz

De inleverdatum van je school opdracht is zeker inzicht ?

'LM76
Dim Lm76temp As Word At &H070C
Dim Lm76high As Byte At &H070D Overlay
Dim Lm76low As Byte At &H070C Overlay
Dim Lm76temp2 As Long
Dim Lm76buf(2) As Byte

Declare Sub Lm76_test

Call Lm76_test

' Routine to test the LM76
'
Sub Lm76_test
I2csend &H90 , 0
I2creceive &H90 , Lm76buf(1) , 0 , 2
Print Bin(lm76buf(1))
Print Bin(lm76buf(2))
Lm76high = Lm76buf(1)
Lm76low = Lm76buf(2)
Shift Lm76temp , Right , 3
Lm76temp2 = Lm76temp
Lm76temp2 = Lm76temp2 * 625
Lm76temp2 = Lm76temp2 / 100
Print "Temperature = " ; Lm76temp2
End Sub

Roland,
Ik had ook al gelezen in zijn eerste bericht dat het een schoolopdracht betrof en bewust geen code geplaatst. Hopelijke weet jij waar je mee bezig bent.

Neire,
Krijg je wel respons van de lm76?
Heb je op de scoop een ACK gezien na het versturen van het adres byte.

Deze code is Bascom voor AVR, dat past zo niet in een 8051.
Het is meer bedoelt om Neire een idee te geven van de communicatie met de LM76

Alvast bedankt roland, ik zal deze code wat proberen uit te pluizen.

Aan hennep. Neen ik krijg een NACK, maar met de LM75 krijg ik een ACK, en kan ik de code perfect uitlezen. Weet jij mss waar ik naar moet zoeken?

MVG

realiseer je je dat je de lm76 op een ander adres moet aanspreken? Als je geen ACK ontvangt dan is het adres verkeerd

[Bericht gewijzigd door hennep op ]

adres van de LM76 en LM75 zijn volgens de datasheets die ik in mijn bereik heb %1001000en dan R/W bit.

De hoogste zeven bits van het adres van de lm76 = 10010XX van de lm75 = 1001XXX
De X is afhankelijk van de adrespennen op de chip.
Wanneer je die allemaal aan de massa hebt gelegd dan hebben beide chips hetzelfde adres. Wanneer dan nog steeds het adres niet wordt herkend dan zou ik toch nog maar eens het soldeerwerk inspecteren.

stil doesn't work :s kheb al 2 nieuwe printjes gemaakt enz. heb dan eens een lmprintje gemaakt en dit werkt perfect. moet je voor deze ic een speciale initialisatie doen mss? of is deze niet compatibel met de BS2P?

groetjes