- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 37 von 37

Thema: 4 Stück DS1820 auslesen und anzeigen mit BASCOM

  1. #31
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.08.2004
    Beiträge
    101
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Habe es auf meinem anderen Rechner drauf und den habe ich vor 5 minuten aus gemacht.

    Wenn ich es morgen schaffe, dann hänge ich es hier an.
    (Muß morgen wieder arbeiten und dazu noch länger...)

    N8
    Harman Kardon HTPC
    Bild hier  

  2. #32
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.08.2004
    Beiträge
    101
    Hallo,

    jetzt bin ich endlich wieder da...

    Hier also mein Code für 5 Sensoren:

    Code:
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.4 , Db7 = Portd.3 , E = Portb.7 , Rs = Portb.6
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    Cursor Off
    Cls
    
    Config 1wire = Portc.5
    
    Dim Timer As Word
    Timer = 55800
    Config Timer1 = Timer , Prescale = 1024
    Enable Timer1
    On Timer1 Sekundentakt
    Enable Interrupts
    Timer1 = Timer
    Dim X As Byte : X = 1
    
    Dim Tempsensor1(8) As Byte
    Dim Tempsensor2(8) As Byte
    Dim Tempsensor3(8) As Byte
    Dim Tempsensor4(8) As Byte
    Dim Tempsensor5(8) As Byte
    
    Dim Ar1(9) As Byte
    Dim Ar2(9) As Byte
    Dim Ar3(9) As Byte
    Dim Ar4(9) As Byte
    Dim Ar5(9) As Byte
    
    Dim Temp1 As Single
    Dim Temp2 As Single
    Dim Temp3 As Single
    Dim Temp4 As Single
    Dim Temp5 As Single
    
    Dim Tmp1 As Byte
    Dim Tmp2 As Byte
    Dim Tmp3 As Byte
    Dim Tmp4 As Byte
    Dim Tmp5 As Byte
    
    Dim T1 As Integer
    Dim T2 As Integer
    Dim T3 As Integer
    Dim T4 As Integer
    Dim T5 As Integer
    Dim T6 As Integer
    Dim T7 As Integer
    Dim T8 As Integer
    Dim T9 As Integer
    Dim T10 As Integer
    
    Tempsensor1(1) = 1wsearchfirst()
    Tempsensor2(1) = 1wsearchnext()
    Tempsensor3(1) = 1wsearchnext()
    Tempsensor4(1) = 1wsearchnext()
    Tempsensor5(1) = 1wsearchnext()
    
    Do
       Locate 1 , 1 : Lcd X                           'Debug :-)
       Locate 1 , 4 : Lcd Fusing(temp1 , "##.#")
       Locate 1 , 10 : Lcd Fusing(temp2 , "##.#")
       Locate 2 , 1 : Lcd Fusing(temp3 , "##.#")
       Locate 2 , 7 : Lcd Fusing(temp4 , "##.#")
       Locate 2 , 13 : Lcd Fusing(temp5 , "##.#")
       Wait 1                                         'Test
       Cls                                            'Test
    Loop
    
    Sekundentakt:
       Timer1 = Timer
       Incr X
       If X = 2 Then
     'Waitms 500
     1wreset
     1wwrite &H55
     1wwrite Tempsensor1(1) , 8
     1wwrite &H44
       End If
    
       If X = 3 Then
     'Waitms 300
     1wreset
     1wwrite &H55
     1wwrite Tempsensor1(1) , 8
     1wwrite &HBE
     Ar1(1) = 1wread(9)
     1wreset
           Tmp1 = Ar1(1) And 1
           If Tmp1 = 1 Then Decr Ar1(1)
           T1 = Makeint(ar1(1) , Ar1(2))
           T1 = T1 * 50
           T1 = T1 - 25
           T2 = Ar1(8) - Ar1(7)
           T2 = T2 * 100
           T2 = T2 / Ar1(8)
           T1 = T1 + T2
           T1 = T1 / 10
           Temp1 = T1 / 10
       End If
    
       If X = 4 Then
     'Waitms 500
     1wreset
     1wwrite &H55
     1wwrite Tempsensor2(1) , 8
     1wwrite &H44
       End If
    
       If X = 5 Then
     'Waitms 300
     1wreset
     1wwrite &H55
     1wwrite Tempsensor2(1) , 8
     1wwrite &HBE
     Ar2(1) = 1wread(9)
     1wreset
           Tmp2 = Ar2(1) And 1
           If Tmp2 = 1 Then Decr Ar2(1)
           T3 = Makeint(ar2(1) , Ar2(2))
           T3 = T3 * 50
           T3 = T3 - 25
           T4 = Ar2(8) - Ar2(7)
           T4 = T4 * 100
           T4 = T4 / Ar2(8)
           T3 = T3 + T4
           T3 = T3 / 10
           Temp2 = T3 / 10
       End If
    
       If X = 6 Then
     'Waitms 500
     1wreset
     1wwrite &H55
     1wwrite Tempsensor3(1) , 8
     1wwrite &H44
       End If
    
       If X = 7 Then
     'Waitms 300
     1wreset
     1wwrite &H55
     1wwrite Tempsensor3(1) , 8
     1wwrite &HBE
     Ar3(1) = 1wread(9)
     1wreset
           Tmp3 = Ar3(1) And 1
           If Tmp3 = 1 Then Decr Ar3(1)
           T5 = Makeint(ar3(1) , Ar3(2))
           T5 = T5 * 50
           T5 = T5 - 25
           T6 = Ar3(8) - Ar3(7)
           T6 = T6 * 100
           T6 = T6 / Ar3(8)
           T5 = T5 + T6
           T5 = T5 / 10
           Temp3 = T5 / 10
       End If
    
       If X = 8 Then
     'Waitms 500
     1wreset
     1wwrite &H55
     1wwrite Tempsensor4(1) , 8
     1wwrite &H44
       End If
    
       If X = 9 Then
     'Waitms 300
     1wreset
     1wwrite &H55
     1wwrite Tempsensor4(1) , 8
     1wwrite &HBE
     Ar4(1) = 1wread(9)
     1wreset
           Tmp4 = Ar4(1) And 1
           If Tmp4 = 1 Then Decr Ar4(1)
           T7 = Makeint(ar4(1) , Ar4(2))
           T7 = T7 * 50
           T7 = T7 - 25
           T8 = Ar4(8) - Ar4(7)
           T8 = T8 * 100
           T8 = T8 / Ar4(8)
           T7 = T7 + T8
           T7 = T7 / 10
           Temp4 = T7 / 10
       End If
    
       If X = 10 Then
     'Waitms 500
     1wreset
     1wwrite &H55
     1wwrite Tempsensor5(1) , 8
     1wwrite &H44
    End If
    
       If X = 11 Then
     'Waitms 300
     1wreset
     1wwrite &H55
     1wwrite Tempsensor5(1) , 8
     1wwrite &HBE
     Ar5(1) = 1wread(9)
     1wreset
           Tmp5 = Ar5(1) And 1
           If Tmp5 = 1 Then Decr Ar5(1)
           T9 = Makeint(ar5(1) , Ar5(2))
           T9 = T9 * 50
           T9 = T9 - 25
           T10 = Ar5(8) - Ar5(7)
           T10 = T10 * 100
           T10 = T10 / Ar5(8)
           T9 = T9 + T10
           T9 = T9 / 10
           Temp5 = T9 / 10
     X = 1
       End If
    
    Return
    Harman Kardon HTPC
    Bild hier  

  3. #33
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.09.2007
    Beiträge
    101
    Danke!
    Gruß
    Hans

  4. #34
    Hallo Papsi ,

    bei mir wird nur jeweils -0.2 angezeigt. Ich habe ds1820 und ds18b20 getestet immer dasselbe.

    wenn er die kennung nicht auslesen sollte muss doch wenigsten ein default wert angezeigt werden aber nicht so ein unrunder
    Wert.

    Hat da jemand ne Lösung?

    Gruss
    Stefan

  5. #35
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Ja. Da kommt gar nix an. Also keine Daten von den Sensoren. Die 0.2 sind Rundungsfehler. Die Pullups sind in der Schaltung vorhanden? Der richtige Port und Pin ist gewählt?
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  6. #36
    Danke,

    hab die Pullups vergessen

  7. #37
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Woher ich das wohl wusste Ein Pullup reicht übrigens pro 1-Wire Bus.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

LiFePO4 Speicher Test