-
        

Ergebnis 1 bis 7 von 7

Thema: DS18B20 utopische Temperaturen....

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    DS18B20 utopische Temperaturen....

    Anzeige

    Hallo !
    Weil ich in Sachen 1-Wire in "C" nicht so gut bin , habe ich mal ein paar Beispiele aus den Foren gesucht, auch eines aus unserer Bascom Ecke hier... Wenn ich nicht wüsste das die DS18x20 intakt sind (Test mit Arduino) würde ich sagen sie sind Schrott, Temperaturen um -600, -88 oder so um +500...680 Grad sind die Anzeigen. Es kann doch nicht jedes Beispiel Irrsinnig sein.

    Ich arbeite mit dem STK500 +Atmega644 , das Steckbord mit Sensor + PullUp 4,7k (o.3,3k) ist mit ca 10cm Drahtverbindern am Stk500 verbunden.

    Nach einem anderen Bascom Beispiel aus dem Buch von K.Cühnel DS1920.bas, wird mir angezeigt:
    þDer Temperaturwert ist 1360 Counts.
    Die gemessene Temperatur ist 680 Grad Celsius
    Die exakt gemessene Temperatur ist 680.00 Grad Celsius

    Wo und wie kann ich nach den Fallstricken suchen ? Hat wer noch ein funktionierendes Bsp in Bascom...oder C, mir raucht es nur noch im Kopfe...

    Gruss und Dank

    Gerhard
    Anhang noch verwendetes Beispiel, ist aus diesem Forum
    Es liefert NUR -88.0 Grad C

    Code:
    '##############################################################
    'BeispielDS18S20.bas
    '
    'Ein  Programm für die Universalplatine RN-AVR UNIVERSAL
    '
    'Das Programm zeigt wie man den 3 poligen Temperatursensor
    'DS18S20 ausliest. Nach dem Aufruf wird die Temperatur alle 5 Sekunden
    'ausgegen. Es können auch mehrere Sensoren auf einer Leitung
    'angesprochen werden.
    '
    ' (c) 2013 Frank
    'Bezug für Board und Sensor und DVD: www.robotikhardware.de
    'Weitere Beispiele auf der Robotikhardware DVD oder
    'im www.Roboternetz.de und rn-wissen.de
    '######################################################################
    'Portbelegung bzw. Modulverbindung
    'PD3  Sensor Daten DS18S20      (nicht vergessen ein 4,7k Widerstand von PD3 nach +3,3V)
    'GND  Sensor GND
    '3V   Sensor 3V
    
    Declare Sub Ds1820_seriennummer()
    Declare Sub Ds1820_alleseriennummern()
    Declare Sub Ds1820_temperatur_ausgeben()
    Declare Sub Ds1820_sensor_temperatur()
    
    
    $regfile = "m644def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 64
    $crystal = 16000000                                         'QuarzFrequenzuenz
    $baud = 9600
    Baud = 9600
    
    Config Pind.6 = Output                                      'LED
    Led1 Alias Portd.6
    Led1 = 0                                                    'ein
    Config 1wire = Portb.0
    Dim Sensordaten(9) As Byte
    Dim Sensornummer(8) As Byte
    
    Wait 2
    Print "Beispielprogramm fuer RN-Avr Universal um Temperatur mit DS18S20 auszulesen"
    Print "Serienummer notieren!"
    Print "Einzelabruf:"
    Ds1820_seriennummer
    Print
    Print
    Print "Temperatur ausgeben:"
    Do
      Ds1820_temperatur_ausgeben                                'Diese Funktion wenn nur ein Sensor am Bus
      'Ds1820_sensor_temperatur                                  'Diese Funktion wenn man mehrere an gleicher
                                                                'Leitung hat und einen davon ansprechen möchte
      Wait 2
    Loop
    
    
    ' ************ Hilfsfunktionen zur Kommunikation mit dem temperatursensor DS18S20 (c) Robotikhardware.de *********
    '  (nähere Infos im Datenblatt des Sensors auf der www.Robotikhardeware.de DVD)
    ' Hilfreich auch der RN-Wissen Artikel unter http://www.rn-wissen.de/index.php/Bascom_und_1-Wire
    ' ************  **************  ************  ************** ************  ************** ************  **********
    
    'Gibt die Seriennummer über RS232 aus
    'diese ist in jedem Sensor eindeutig vorhanden
    'sie wird nur benötigt wenn mehrere Sensoren an einer Leitung hängen
    Sub Ds1820_seriennummer()
    Local I As Integer
    Local Crc As Byte
       1wreset
       1wwrite &H33                                             ' ROM-Befehl zum lesen der SerienNr
       Sensornummer(1) = 1wread(8)                              ' 8 Bytes lesen
       Crc = Crc8(sensornummer(1) , 7)
       If Crc <> Sensornummer(8) Then Print "Daten fehlerhaft gelesen (CRC-Fehler)!"
       For I = 1 To 8
         Print Hex(sensornummer(i));                            ' Ausgeben
         Print " ";
       Next
       Print
    End Sub
    
    
    
    'Diese Funktion gibt Temperaturbereich +85 bis -55 mit Vorzeichen auf ein halbes Grad genau aus
    'Diese Funktion ist nur geeignet, wenn nur ein Sensor am Bus liegt
    'Auf Fließkommazahlen wird verzichtet
    Sub Ds1820_temperatur_ausgeben()
    Local Temp As Integer
    Local S As String * 5
    Local Crc As Byte
       1wreset                                                  ' Initialisierung
       1wwrite &HCC                                             ' SKIP ROM
       1wwrite &H44                                             ' CONVERT T / Temperaturmessung starten
       Waitms 500                                               ' warten
       1wreset                                                  ' Initialisierung
       1wwrite &HCC                                             ' SKIP ROM
       1wwrite &HBE                                             ' READ SCRATCHPAD
       Sensordaten(1) = 1wread(9)                               ' Daten lesen
       Temp = Sensordaten(1)
      If Sensordaten(2) > 0 Then                                'Minus Temperatur
        Temp = 256 - Temp
        Temp = Temp * 10
        Temp = Temp / 2
        Temp = 0 - Temp                                         'Vorzeichen -
      Else
         Temp = Temp * 10
         Temp = Temp / 2
       End If
    
       S = Str(temp)
    
       Print Format(s , "0.0") ; "  Grad in C"
       Crc = Crc8(sensordaten(1) , 8)
       If Crc <> Sensordaten(9) Then Print "Daten fehlerhaft gelesen (CRC-Fehler)!"
    End Sub
    Geändert von oderlachs (30.05.2014 um 10:02 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Zitat Zitat von oderlachs Beitrag anzeigen
    Wo und wie kann ich nach den Fallstricken suchen ?
    Ein DS18B20 kann für 9- bis 12-Bit Thermometerauflösung konfiguriert werden. Default ist 12-Bit und braucht dann für eine Conversion 750ms. Im Beispielprogramm ist nur eine Wartezeit von 500ms angegeben.

    500ms kann auch für einen DS18S20 knapp werden. Im DB ist da auch die Rede von max 750ms Konversionszeit. Nur der DS1820 kommt wohl mit bis zu 200ms aus.

    Ob das 12-Bit Ergebnis vom DS18B20 auch noch im Beispielprogramm für eine Anzeige anders bearbeitet werden muß als ein 9-Bit Ergebnis hab ich jetzt nicht überprüft.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Searcher,
    für den Hinweis... es klappt auch mit 750ms nicht ändern sich zwar die Temp-Werte aber dennoch utopische Angaben... Ich werde mal das ganze total neu angehen. Die Beispiele alle löschen...dann mich Stück für Stück vortasten. Am besten in C weil in Bascom bin ich nicht soo firm...

    Gruss
    Gerhard
    Intakt ist der Sensor, das ergibt ein Arduino-Testprgramm:
    Klicke auf die Grafik für eine größere Ansicht

Name:	ds18b20.jpg
Hits:	10
Größe:	53,9 KB
ID:	28310
    Geändert von oderlachs (31.05.2014 um 16:20 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Oderlachs,
    dein Programm ist auch ok, nur ist es für einen DS1820 bzw. DS18S20.
    Du hast aber einen DS18B20 angeschlossen. Schau dir mal im DB die Bedeutung der Bits an.
    Bei denen musst du die empfangenen ersten beiden bytes in eine Integer bringen und dann durch 16 teilen.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke for_ro !

    Ich bin leider in Bascom etwas schwach auf der Brust in solchen Dingen, mache eigendlich "nur" C...Hatte Bascom gewählt weil ich einige Beispiele fand, die mir dann doch nicht weiterhalfen.... Trotzdem habe ich doch dabei was gelernt in Sachen DS18x20 usw..

    Gruss Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hatte Bascom gewählt weil ich einige Beispiele fand, die mir dann doch nicht weiterhalfen....
    http://bascom-forum.de/showthread.php?4332-DS18S20-und-DCF77-zusammen-funktionieren-zusammen-nicht-richtig&p=36236&viewfull=1#post36236

    Musst nur die Ausgabe anpassen.

    Gruß, Michael

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Michael !
    Ich werde mir das vornehmen und daraus lernen und denke auch es zu begreifen. Hatte mir das Datenblatt nochmals genauer angesehen, aber durch mein schlechtes English komme ich nicht vollständig hinter alles was mir dort angegeben wird.
    Auch habe ich selber noch nicht 1-Wire Sachen programmiert...es ist also mein Erstlingswerk was ich zur Zeit mache.

    Gruss und Dank(!!)

    Gerhard

    ...und es geht !!!!
    Klicke auf die Grafik für eine größere Ansicht

Name:	ds18b20_anzeige_ok.jpg
Hits:	6
Größe:	31,6 KB
ID:	28311
    Geändert von oderlachs (31.05.2014 um 17:02 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Modellbauservo o.Ä. für Temperaturen >= 90°C
    Von Starchild im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 16.03.2013, 08:13
  2. EEprom bei tiefen Temperaturen
    Von Thegon im Forum Elektronik
    Antworten: 21
    Letzter Beitrag: 14.10.2012, 20:31
  3. 4 temperaturen am adc einlesen
    Von emmi im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 5
    Letzter Beitrag: 16.01.2006, 15:00
  4. DS18B20
    Von x-ryder im Forum Sensoren / Sensorik
    Antworten: 1
    Letzter Beitrag: 14.05.2005, 23:52
  5. DS18B20
    Von MAxK im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 25.04.2005, 14:37

Berechtigungen

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