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 | ||
| ||
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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum