Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

DS18S20 ohne I2C to 1Wire Converter Kategorie: Sonstige Hardware (von AndreasK - 26.02.2009 19:15)
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
Hallo,

ich benutze das Programm von Ulli zum Auslesen eines DS18S20 ohne I2C to 1Wire Converter.
Leider sind die Anzeigewerte zu hoch ( bei Zimmertemperatur werden 149,5 Grad angezeigt).
Hier der Original-Quelltext:

'----------------------------------------------------------------------------------
'----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO -----
'----------------------------------------------------------------------------------
'Projektname:       DS18S20.cprj
'Benötigte Libs´s:  IntFunc_lib.cc
'Routinen:          DS18S20.cbas
'Autor:             Ulli Sommer
'Datum:             01.04.2008
'Funktion:          Auslesen eines Temperatursensors DS18S20
'Neue Funktionen:   Neue Befehle für One Wire nach Dallas Standart
'Notitz:            ID & Temperatur wird über das Ausgabefenster angezeigt
'----------------------------------------------------------------------------------

#define OneWirePin 38

Dim text(40) As Char
Dim ret,i As Integer
Dim temp As Integer
Dim rom_code(8) As Byte
Dim scratch_pad(9) As Byte

Sub main()

    LCD_Init()
    LCD_ClearLCD()
    LCD_CursorOff()

    ret = OneWire_Reset(OneWirePin)

    If ret = 0 Then
       text= "kein Device gefunden"
       Msg_WriteText(text)
       Goto Ende
    End If

    Do While True

    OneWire_Write(0x33) 'read ROM
    For i = 0 To 7
        rom_code(i) = OneWire_Read()
        'Msg_WriteHex(rom_code(i))
    Next
    'Msg_WriteChar(13)


    OneWire_Reset(OneWirePin)
    OneWire_Write(0xcc)   'skip ROM
    OneWire_Write(0x44)   'start temperature measure

    AbsDelay(2000)

    OneWire_Reset(OneWirePin)
    OneWire_Write(0xcc)   'skip ROM
    OneWire_Write(0xbe)   'read scratch_pad

    For i = 0 To 8
        scratch_pad(i)= OneWire_Read()
        'Msg_WriteHex(scratch_pad(i))
    Next
    Msg_WriteChar(13)

    text = "Temp: "
    'Msg_WriteText(text)

    temp= scratch_pad(1) * 256 + scratch_pad(0)
    'Msg_WriteFloat(temp * 0.5)
    'Msg_WriteChar(67)
    'Msg_WriteChar(13)

    LCD_Locate(1,1)
    LCD_WriteFloat(temp*0.5,1)

    End While

    Lab Ende

End Sub

Was ist falsch ?

Grü�e aus Kiel

Andreas Kunze


    Antwort schreiben


Antworten:

Re: DS18S20 ohne I2C to 1Wire Converter (von Andreas - 26.02.2009 19:46)
    Re: DS18S20 ohne I2C to 1Wire Converter (von AndreasK - 27.02.2009 19:03)