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

Re: DS18S20 ohne I2C to 1Wire Converter Kategorie: Sonstige Hardware (von AndreasK - 27.02.2009 19:03)
Als Antwort auf Re: DS18S20 ohne I2C to 1Wire Converter von Andreas - 26.02.2009 19:46
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
Danke für den Tip, Andreas !
Jetzt läuft die Ausgabe richtig.

Grü�e

(auch) Andreas


> Hallo,
> es scheint mir so, als ob du keinen DS18S20 hast, sondern einen DS18B20.
> Wenn es so ist, solltest du
>     LCD_WriteFloat(temp*0.5,1)
> in
>     LCD_WriteFloat(temp*0.06255,1)
> ändern
>
> GruÃ? Andreas
>
> > 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: