- Akku Tests und Balkonkraftwerk Speicher         
Seite 4 von 9 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 88

Thema: mehrere DS18S20 an einem 1 wire Bus

  1. #31
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Anzeige

    E-Bike
    da fällt mir auf, das da keine Zeiten drinn sind...

  2. #32
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    sorry Rofo88,
    habe deine Antwort irgendwie übersehen! ABER es war / ist die Lösung!

    @Eisbaeeer
    also wenn ich die Zeit auf 800ms erhöhe, dann ließt er immer beide Sensoren gleich aus also beide haben die gleiche Temperatur

    Tobias

  3. #33
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    So, nun noch mal zu den Kommastellen 0,5°C bzw 0,1°C - kann mir noch mal einer zeigen wie man das umrechnet bzw wo das hier im Forum steht?

    hier noch mal mein Code, der nun mit 2 Sensoren funktioniert

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 9600
    
    Config 1wire = Portb.0
    
    
    
    
    Dim T1 As single
    Dim T2 As Single
    Dim I As Byte
    Dim Id1(8) As Byte
    Dim Id2(8) As Byte
    Dim Ar1(2) As Byte
    Dim Ar2(2) As Byte
    
    
    
    
    
    Id1(1) = 1wsearchfirst()
    Id2(1) = 1wsearchnext()
    
    
    Do
    Print " "
    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
    
    
    
    
    
    
        If Ar1(2) = 0 Then                                      'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg
           Print "Temperatur 1:  " ; T1 ; "°C"
    
         Else
          Print "Temperatur 1: " "-" ; T1 ; "°C"
    
        End If
    
    
            If Ar2(2) = 0 Then                                  'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg
           Print "Temperatur 2:  " ; T2 ; "°C"
    
         Else
          Print "Temperatur 2: " "-" ; T2 ; "°C"
        End If
    
    
    Waitms 500
    
    Loop

  4. #34
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67

    DS1820 mit 0,1 Grad Auflösung

    Zitat Zitat von TobiasBlome
    @Eisbaeeer
    also wenn ich die Zeit auf 800ms erhöhe, dann ließt er immer beide Sensoren gleich aus also beide haben die gleiche Temperatur

    Tobias
    Dann stimmt noch was im Zeitlichen Ablauf nicht. Ich kann dir, wenn ich wieder zuhause bin, mein Script hier Posten. Wichtig ist das Timing. Das muss genau wie im Datenblatt ablaufen.
    Wie hast du die Sensoren angeschlossen?
    Als Parasite oder mit 3 Adern?
    4,7K Pullupwiederstände?

    Hier noch der Link für die 0,1 Grad Auflösung:

    https://www.roboternetz.de/phpBB2/viewtopic.php?t=8555

    Viele Grüße Eisbaeeer

  5. #35
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Also ich habe 2 Sensoren paralell - 3 Adern mit 4,7k Widerstand

    die 0,1Gradlösung ist für nur einen Sensor...aber da muss er ja auch irgendwo umrechnen ich guck mir das mal an.

    Tobias

  6. #36
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Also der erste Unterschied ist schon mal, dass ich nur die ersten beiden Bytes auslese und nicht 9!

    ich glaube das ist diese Rechnung

    If Crc = 0 Then ' if is OK, calculate for
    Tmp = Bd(1) And 1 ' 0.1C precision
    If Tmp = 1 Then Decr Bd(1)
    T = Makeint(bd(1) , Bd(2))
    T = T / 2
    Temp = Bd( - Bd(7)
    Temp = Temp / Bd(
    Temp = T + Temp
    Temp = Temp - 0.25
    End If

  7. #37
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    toll diese Smilys

    Code:
    If Crc = 0 Then                                          ' if is OK, calculate for 
          Tmp = Bd(1) And 1                                     ' 0.1C precision 
          If Tmp = 1 Then Decr Bd(1) 
          T = Makeint(bd(1) , Bd(2)) 
          T = T / 2 
          Temp = Bd(8) - Bd(7) 
          Temp = Temp / Bd(8) 
          Temp = T + Temp 
          Temp = Temp - 0.25 
       End If

  8. #38
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Zitat Zitat von TobiasBlome
    toll diese Smilys
    Du kommst der Sache näher. Ich empfehle dir dringend, das Datenblatt zu studieren. Es ist z.B. möglich, an alle Sensoren den Befehl zu schicken, eine Temperaturmessung durchzuführen. Anschließend kannst du dann einen nach dem anderen auslesen. Damit sparst du dir schon mal 750ms pro Sensor.
    Weiterhin ist ein "parasite" Modus möglich. 2 Drähte reichen aus. Und einiges mehr.

    Grüße Eisbaeeer

  9. #39
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    klingt gut - aber erst mal langsam an die Messung, und dann die Optimierung

    Also ich habe 2 Sensoren und die kann ich mit 0,5°C Genauigkeit auslesen - aber das mit der Umrechnung auf 0,1°C macht mir echt zu schaffen
    kann mir da vielleicht jemand unter die Arme greifen?

    Tobias

  10. #40
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    so, also ich hbe jetzt mal das zusammen kopierte programm von der 1. Seite benutzt. Leider bekomme ich keine Werte...
    Ich bekomme erst einen Wert sobald ich eine Temperaturänderung habe. Also einmal gegenpusten und schon wird die Temperatur angezeigt. Warum ist das so?
    ich habe nur einen anderen µC statt mega 32 einen mega 8 und statt 16MHz 4 MHz oder bringe ich ihn damit durcheinander?

    Tobias
    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 9600
    
    Config 1wire = Portb.0
    Dim T As Integer
    Dim T1 As Integer
    Dim T2 As Integer
    Dim T3 As Integer
    Dim T4 As String * 10
    Dim T5 As String * 10
    Dim T6 As Single
    Dim T7 As Single
    Dim Id1(8) As Byte
    Dim Id2(8) As Byte
    Dim Ar1(9) As Byte
    Dim Ar2(9) As Byte
    Dim I As Byte , Tmp As Byte , Tmp2 As Byte
    Dim Crc As Byte
    
    Declare Sub Crcit
    Declare Sub Crcit2
    
    Id1(1) = 1wsearchfirst()
    Id2(1) = 1wsearchnext()
    
    
    Do
    Print " "
    1wreset
    1wwrite &H55
    1wwrite Id1(1) , 8
    1wwrite &H44
    
    Waitms 300
    1wreset
    1wwrite &H55
    1wwrite Id1(1) , 8
    1wwrite &HBE
    Ar1(1) = 1wread(9)
    1wreset
    Crcit
    If Crc = 0 Then
          Tmp = Ar1(1) And 1
          If Tmp = 1 Then Decr Ar1(1)
          T = Makeint(ar1(1) , Ar1(2))
          T = T * 50
          T = T - 25
          T1 = Ar1(8) - Ar1(7)
          T1 = T1 * 100
          T1 = T1 / Ar1(8)
          T = T + T1
          T = T / 10
          T6 = T / 10
          T4 = Fusing(t6 , "#.#")
    
    End If
    
    Waitms 500
    1wreset
    1wwrite &H55
    1wwrite Id2(1) , 8
    1wwrite &H44
    
    Waitms 300
    1wreset
    1wwrite &H55
    1wwrite Id2(1) , 8
    1wwrite &HBE
    Ar2(1) = 1wread(9)
    1wreset
    Crcit2
    If Crc = 0 Then
          Tmp2 = Ar2(1) And 1
          If Tmp2 = 1 Then Decr Ar2(1)
          T2 = Makeint(ar2(1) , Ar2(2))
          T2 = T2 * 50
          T2 = T2 - 25
          T3 = Ar2(8) - Ar2(7)
          T3 = T3 * 100
          T3 = T3 / Ar2(8)
          T2 = T2 + T3
          T2 = T2 / 10
          T7 = T2 / 10
          T5 = Fusing(t7 , "#.#")
    
    End If
    
    
    
    Print "Temperatur T4: " ; T4 ; "°C"
    Print "Temperatur T5: " ; T5 ; "°C"
    
    Waitms 500
    
    Loop
    
    Sub Crcit
    
       Crc = 0
       For I = 1 To 9
          Tmp = Crc Xor Ar1(i)
          Crc = Lookup(tmp , Crc8)
       Next
    End Sub
    
    Sub Crcit2
    
       Crc = 0
       For I = 1 To 9
          Tmp2 = Crc Xor Ar2(i)
          Crc = Lookup(tmp2 , Crc8)
       Next
    End Sub
    '//////////////////////////////////////////////////////////////////////////////
    
    
    Crc8:
    Data 0 , 94 , 188 , 226 , 97 , 63 , 221 , 131 , 194 , 156
    Data 126 , 32 , 163 , 253 , 31 , 65 , 157 , 195 , 33 , 127
    Data 252 , 162 , 64 , 30 , 95 , 1 , 227 , 189 , 62 , 96
    Data 130 , 220 , 35 , 125 , 159 , 193 , 66 , 28 , 254 , 160
    Data 225 , 191 , 93 , 3 , 128 , 222 , 60 , 98 , 190 , 224
    Data 2 , 92 , 223 , 129 , 99 , 61 , 124 , 34 , 192 , 158
    Data 29 , 67 , 161 , 255 , 70 , 24 , 250 , 164 , 39 , 121
    Data 155 , 197 , 132 , 218 , 56 , 102 , 229 , 187 , 89 , 7
    Data 219 , 133 , 103 , 57 , 186 , 228 , 6 , 88 , 25 , 71
    Data 165 , 251 , 120 , 38 , 196 , 154 , 101 , 59 , 217 , 135
    Data 4 , 90 , 184 , 230 , 167 , 249 , 27 , 69 , 198 , 152
    Data 122 , 36 , 248 , 166 , 68 , 26 , 153 , 199 , 37 , 123
    Data 58 , 100 , 134 , 216 , 91 , 5 , 231 , 185 , 140 , 210
    Data 48 , 110 , 237 , 179 , 81 , 15 , 78 , 16 , 242 , 172
    Data 47 , 113 , 147 , 205 , 17 , 79 , 173 , 243 , 112 , 46
    Data 204 , 146 , 211 , 141 , 111 , 49 , 178 , 236 , 14 , 80
    Data 175 , 241 , 19 , 77 , 206 , 144 , 114 , 44 , 109 , 51
    Data 209 , 143 , 12 , 82 , 176 , 238 , 50 , 108 , 142 , 208
    Data 83 , 13 , 239 , 177 , 240 , 174 , 76 , 18 , 145 , 207
    Data 45 , 115 , 202 , 148 , 118 , 40 , 171 , 245 , 23 , 73
    Data 8 , 86 , 180 , 234 , 105 , 55 , 213 , 139 , 87 , 9
    Data 235 , 181 , 54 , 104 , 138 , 212 , 149 , 203 , 41 , 119
    Data 244 , 170 , 72 , 22 , 233 , 183 , 85 , 11 , 136 , 214
    Data 52 , 106 , 43 , 117 , 151 , 201 , 74 , 20 , 246 , 168
    Data 116 , 42 , 200 , 150 , 21 , 75 , 169 , 21 , 75 , 169

Seite 4 von 9 ErsteErste ... 23456 ... LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress