-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: temp auslesen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97

    temp auslesen

    Anzeige

    Hallo

    Ich hab ein kleines Problem mit einem DS 1631 der am ic2 hängt
    mit meinem Code gibt er mir immer 25 aus egal ob der temperaturfühler erwärmt oder abgekühlt wird warum?
    Code:
    $regfile = "m16def.dat"
    $framesize = 60
    $swstack = 60
    $hwstack = 60
    $crystal = 8000000
    $baud = 4800
    
    Declare Sub Showtemperatur()
    
    Const Lm75slavewrite = &H90
    Const Lm75slaveread = &H91
    Dim Lm75high As Byte
    Dim Lm75low As Byte
    Dim Temperatur As Integer
    Dim Nachkommastelle As String * 2
    
    Config Scl = Portc.0
    Config Sda = Portc.1
         I2cinit
    Start:
         Showtemperatur
         Wait 2
         Goto Start
    
    
     Sub Showtemperatur()
       I2cstart
       I2cwbyte Lm75slaveread
       I2crbyte Lm75high , Ack
       I2crbyte Lm75low , Nack
       I2cstop
    
       If Lm75high > 127 Then
          Temperatur = Lm75high And 127
          Temperatur = Not Temperatur
          Incr Temperatur
       Else
          Temperatur = Lm75high
       End If
    
       Lm75low = Lm75low And 128
       If Lm75low > 0 Then
           Nachkommastelle = ",5"
       Else
          Nachkommastelle = ""
       End If
    
    Print Temperatur ; Nachkommastelle
    End Sub
    KANN MIR JEMAND HELFEN?

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    06.12.2005
    Ort
    Hamburg
    Alter
    28
    Beiträge
    86
    Also erstmal vermute ich das du den Chip auch richtig adressiert hast und SDA und SCL mit Pullups versehen hast. Übringens habe ich das selbe Problem mit einem fast Identischen Code (auch immer 25) und da ich es hoffentlich richtig angeschlossen habe muss es wohl am Codel iegen.
    edit: ich benutze einen 1,8k pullupkann es daran liegen ?

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Probier es auch mal mit "ERR=" Abfrage
    http://www.roboternetz.de/wissen/ind..._f.C3.BCr_LM75
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    Erstmals Danke für eure hilfe

    Pullup´s sind dran nur bin ich drauf gekommen das der Code hinten und vorne nicht stimmt!

    Früher ist in dieser Schaltung ne C-Controll gehangen und jetzt über enen Adapter ein Mega 16 der Fühler war schon in Betrieb hat auch funktioniert.
    Jetzt hab ich den C Cod mal umgeschrieben in Bascom Tut sich aber gar nichts.
    Datenblatt vom DS1631: http://www.datasheetcatalog.com/data...6/DS1631.shtml

    der alte Code:
    http://www.csslabs.de/ccontrol/lib/b...S1631_READ.htm

    (Libery):
    http://www.fdos.de/ccforum/codelib/b...31_GENERIC.htm

    neue Code:
    Code:
          $regfile = "m16def.dat"
    $framesize = 60
    $swstack = 60
    $hwstack = 60
    $crystal = 8000000
    $baud = 4800
    
    Config Scl = Portc.0
    Config Sda = Portc.1
    
    Dim Ds1631 As Byte
    Dim Ds1631r As Byte
    Ds1631 = 158
    Ds1631r = 159
    Const Addr = 159
    Const Convert = &H51
    Const Read_temp = &HAA
    Const Conf = &HAC
    Const Rese = &H54
    
    Declare Sub Ds1631reset
    Declare Sub Ds1631set_status
    Declare Sub Ds1631convert
    Declare Sub Ds1631wait_rady
    Declare Sub Ds1631get_temp
    Declare Sub Ds1631get_status
    Dim A As Integer
    
    Dim Dat As Byte
    Dim Temp As Byte
    Dim Tempold As Byte
    A = 1
    
    
    Do
    Ds1631reset
    Waitms 10
    Ds1631set_status
    Waitms 10
    Ds1631convert
    Waitms 10
    Ds1631wait_rady
    Wait 1
    Ds1631get_temp
    
    Print Temp ; "  "
    Print Tempold
    Print " gh " ; A
    Print
    Print
    A = A + 1
    Tempold = Temp
    Wait 1
    Loop
    
    
    
    
    
    Sub Ds1631reset
    I2cstart
    I2cwbyte Ds1631
    I2cwbyte Rese
    I2cstop
    End Sub
    
    Sub Ds1631set_status
    I2cstart
    I2cwbyte Addr
    I2cwbyte Conf
    I2cwbyte Dat
    I2cstop
    End Sub
    
    Sub Ds1631convert
    I2cstart
    I2cwbyte Ds1631
    I2cwbyte Convert
    I2cstop
    End Sub
    
    Sub Ds1631get_status(data As Byte)
    I2cstart
    I2cwbyte Ds1631
    I2cwbyte Conf
    I2cstop
    I2cstart
    I2cwbyte Ds1631r
    I2crbyte Dat , Nack
    I2cstop
    End Sub
    
    
    
    Sub Ds1631wait_rady
    
    End Sub
    
    Sub Ds1631get_temp(temp As Word ; Dat As Byte)
    
    I2cstart
    I2cwbyte Ds1631
    I2cwbyte Read_temp
    I2cstop
    I2cstart
    I2cwbyte Ds1631r
    I2crbyte Dat
    Temp = Dat * 256
    Print "1    " ; Dat
    I2crbyte Dat
    Temp = Temp + Dat
    Print "2    " ; Dat
    I2cstop
    End Sub

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    06.12.2005
    Ort
    Hamburg
    Alter
    28
    Beiträge
    86
    Zitat Zitat von PicNick
    Probier es auch mal mit "ERR=" Abfrage
    http://www.roboternetz.de/wissen/ind..._f.C3.BCr_LM75
    ich habe es mal mit diesem Code versucht und bekomme immer nur 9999 also error

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    darum sag ich ja der "neue" funkt nicht

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    immer nur 9999 also error
    Aha, also auf die I2C Adresse kommt kein "ACK". d.h. der Rest des Code ist mal piepegal.

    Das ist irgendwas (Hardware-) I2C-mäßiges
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    06.12.2005
    Ort
    Hamburg
    Alter
    28
    Beiträge
    86
    Also woran könnte das den liegen eigentlich sind das ja nur zwei verbindungen mit widerständen. kann es an der adressieriung liegen? für die im bsp. benutzte müssten doch alle adressleitungen auf masse oder?

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    A0-A2 sollte Masse sein (f.addr &H90)
    sind auch masse µC und Masse DS16.. verbunden ?
    Hat der DS16.. Saft ? (+5V)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    Ja der hat seine eigene 5V versorgung gleiche wie controller

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •