- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Problem mit DS1820 und Anzeige der temperatur

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.12.2006
    Beiträge
    109

    Problem mit DS1820 und Anzeige der temperatur

    Anzeige

    E-Bike
    Einen schönen Tag euch allen!

    Da ich mich erst seit kurzer Zeit mit Microcontrollern befasse habe ich hier
    im Forum gesucht und einen Code gefunden mit dem man mit dem DS1820 eine Temp. messen und auf dem Display darstellen kann.
    Jedoch wird keine Kommastelle auf dem Display angezeit.

    ich verwende das Boar myavr. Hier der Code

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Config 1wire = Portb.0
    
    Config Lcd = 40 * 2
    
    Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
    Config Lcdbus = 4
    Config Lcdmode = Port
    
    Dim ___lcdno As Bit
    Dim T1 As Integer
    Dim T2 As Integer
    Dim I As Byte
    Dim Id1(8) As Byte
    Dim Id2(8) As Byte
    Dim Ar1(2) As Byte
    Dim Ar2(2) As Byte
    
    
     ___lcdno = 0
      Initlcd
      Cursor Off
      Cls
    
     ___lcdno = 1
     Initlcd
     Cursor Off
     Cls
    
    
    
    
    Id1(1) = 1wsearchfirst()
    Id2(1) = 1wsearchnext()
    
    
    Do
    1wreset                            'reset
    1wwrite &H55                       'Match Rom command
    1wwrite Id1(1) , 8                 'Id von Sensor 1
    1wwrite &H44                       'Convert T
    
    Waitms 300                         'warten bis convert T fertig ist
    1wreset                            'reset
    1wwrite &H55                       'match rom command
    1wwrite Id1(1) , 8                 'id von sensor 1
    1wwrite &HBE                       'scratchpad lesen
    Ar1(1) = 1wread(1)                 'erstes byte auslesen, da steht Temp drin
    Ar1(2) = 1wread(1)                 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen
    
    
    Waitms 500
    1wreset                            'reset
    1wwrite &H55                       'Match Rom command
    1wwrite Id2(1) , 8                 'Id von Sensor 2
    1wwrite &H44                       'Convert T
    
    Waitms 300                         'warten bis convert T fertig ist
    1wreset                            'reset
    1wwrite &H55                       'match rom command
    1wwrite Id2(1) , 8                 'id von sensor 2
    1wwrite &HBE                       'scratchpad lesen
    Ar2(1) = 1wread(1)                 'erstes byte auslesen, da steht Temp drin
    Ar2(2) = 1wread(1)                 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen
    
    T1 = Ar1(1) / 2
    T2 = Ar2(1) / 2
    
    
    
    
    
    
     ___lcdno = 0
    
    
      Upperline
    
        If Ar1(2) = 0 Then             'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg
           Lcd "Temp. 1:" ; " " ; T1
    
         Else
          Lcd "Temp. 1:" ; "-" ; T1
    
        End If
    
      Lowerline
    
            If Ar2(2) = 0 Then         'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg
           Lcd "Temp. 2:" ; " " ; T2
    
         Else
          Lcd "Temp. 2:" ; "-" ; T2
    
        End If
    
     ___lcdno = 1
    
     ' Upperline
     '  Lcd "ID 1:" ; Id1(1) ; Id1(2) ; Id1(3) ; Id1(4) ; Id1(5) ; Id1(6) ; Id1(7) ; Id1(8)
    
     ' Lowerline
     '  Lcd "ID 2:" ; Id2(1) ; Id2(2) ; Id2(3) ; Id2(4) ; Id2(5) ; Id2(6) ; Id2(7) ; Id2(8)
    
    Waitms 500
    
    Loop
    Was mache ich falsch und was muss ich ändern, dass auch Kommastellen angezeigt werden. Am besten wäre die hier schon ein paar mal geschielderte 0,1 C Genauigkeit.

    Danke für die Hilfe
    Martin

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    05.11.2006
    Ort
    Werne
    Alter
    36
    Beiträge
    18
    Hi,
    hab mir den code jetzt nur kurz angeguckt (bin in der schule ) und wenn ich das richtig sehe liegt es daran das du T1 und T2 als integer deklariert hast. Integerzahlen sind aber nur Ganzzahlen (-32768 bis +3276. Der Rest wird abgeschnitten. Müsstest diese also anders deklarieren.

    Tretsch

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    www.qslnet.de/member/dg1xpz/elektronik/avr

    hoffe der link geht , schaue dir da mal das ds1820 Bascom prog an
    und schreibe es für deinen maga8 um ,sollte ohne probleme auf diese
    laufen und berichte ob es funktioniert.

    gruß mike

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.12.2006
    Beiträge
    109

    DS1820

    Danke!!!!!!!!!

    Ich habs mit der Hilfe hinbekommen.

    Einen schönen Tag euch allen

Berechtigungen

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

12V Akku bauen