-
        

Ergebnis 1 bis 4 von 4

Thema: Mehrere Temperatursensoren am 1wire Bus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.03.2006
    Ort
    München
    Beiträge
    32

    Mehrere Temperatursensoren am 1wire Bus

    Anzeige

    Wie kann ich mehrere Temperatursensoren am 1wire Bus betreiben?
    Ich hab zwar die ID ausgelesen aber ich finde nirgends eine Beschreibung, wie ich die verschiedenen Sensoren adressieren kann.
    Weiss jemand Hilfe.
    Danke

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    13.01.2004
    Ort
    Bad Schwartau
    Alter
    38
    Beiträge
    51
    Um welchen Sensor geht es denn?
    Ich habe mal den DS18S20 programmiert. Da steht im Datenblatt eigentlich alles über das Protokoll und wann man was senden kann drin.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    29
    Beiträge
    373
    Hallo,
    Schau doch einfach einmal unter Suche DS18S20 da müsstest du ein
    Beispiel finden.
    mfg franzl

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    10.10.2005
    Ort
    Nähe Biberach a.d. Riss
    Alter
    47
    Beiträge
    44
    Du musst erst von allen Sensoren die Adresse wissen (vorher auslesen)
    Wenn Du die dann hast, kannst Du jeden Sensor gezielt ansprechen.
    Hab das so gelöst:
    (Der Code mit den Anführungsstrichen ist für eine genauere Messung)
    Code:
    ''           
    '--------------------------------------------------------------
    '  Datei: City_el_Temperaturmessung_2_DS1822.BAS
    '  Demo: 3-Draht Temperaturmessung mit dem DS-18S22, mit 9-Bit Auflösung
    '  Port D ist fürs LCD-Display
    '  An PortC.6 "hängen" 2 "1-Wire" i-Buttons
    '  Lcd-Display 1x16 an PortC
    '--------------------------------------------------------------
    
    $crystal = 8867238
    Config 1wire = Portc.6
    
    Const Ds1822 = &H22
    Const Skiprom = &HCC                                        ' überspringe ROM Kommandos
    Const Read_rom = &H33                                       ' Lese ROM
    Const Convertt = &H44                                       ' Start Temperaturmessung
    Const Match_rom = &H55                                      'Suche einzelnen Sensor
    Const Read_ram = &HBE                                       ' Lese Scratchpad RAM
    Const Write_ram = &H4E                                      ' Schreibe Scratchpad RAM
    Const Copy_ram = &H48                                       ' Kopiere Scratchpad RAM
    Const Aufloesung = &H5F                                     ' Auflösung 11 Bit
    Const Th = 00                                               ' Alarmschwelle High
    Const Tl = 00                                               ' Alarmschwelle Low
    
    'Dim Scratch(2) As Byte                                      ' Sratchpad RAM Kopie
    Dim Lsb As Byte
    Dim Msb As Byte
    
    Dim I As Byte                                               ' Index für Schleifenzähler
    Dim Temp As Word                                            ' Temperaturwert 1. Sensor
    Dim Temp1 As Integer
    Dim Stemp_1 As Single
    
    Dim Stemp_2 As Single
    
    Deflcdchar 1 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32        ' LCD Zeichen für °C
    Cls
    Cursor Off
    
    '*******************************************************************************
    '### Alle 1-Wire Devices initialisieren ###
    
    1wreset
    1wwrite Skiprom                                             'überspringe Adressierung
    1wwrite Write_ram                                           'Scratchpad zum schreiben vorbereiten
    1wwrite Th                                                  'Alarmschwelle Max.Temp
    1wwrite Tl                                                  'Alarmschwelle Min.Temp
    1wwrite Aufloesung                                          'Konfigurationsbyte ins Scratchpad schreiben...
    1wwrite Copy_ram                                            '...und im EEProm sichern
    
    '*******************************************************************************
    'Beginn 1.Sensor
    
    Do
       1wreset                                                  '1-Wire Bus reseten
       1wwrite Skiprom                                          'Adressierung überspringen
       1wwrite Convertt                                         'Temperaturmessung bei allen Sensoren einleiten
    
       1wreset
       1wwrite Match_rom                                        'Gezielten Sensor anwählen....
       1wwrite 34                                               'Werte stammen aus Sensor,Dezimal
       1wwrite 211
       1wwrite 182
       1wwrite 22
       1wwrite 0
       1wwrite 0
       1wwrite 0
       1wwrite 234
    
       1wwrite Read_ram                                         '....und auslesen (Scratch Pad)
    
       'Scratch(1) = 1wread()
       'Scratch(2) = 1wread()
       Lsb = 1wread()
       Msb = 1wread()
    
    
       'Temp = Scratch(2)                                        'MSB holen
       'Shift Temp , Left , 8                                    'Platz für LSB machen
       'Temp = Temp + Scratch(1)                                 'zu Word Format zusammenfügen
       'Temp1 = Temp                                             'Integer Format
       'Stemp = Temp1 / 16
    
       Temp = Msb                                               'MSB holen
       Shift Temp , Left , 8                                    'Platz für LSB machen
       Temp = Temp + Lsb                                        'zu Word Format zusammenfügen
       Temp1 = Temp                                             'Integer Format
       Stemp_1 = Temp1 / 16
    
    
       Locate 1 , 1
       Lcd "T1:";
       Lcd Fusing(stemp_1 , "##.#");
       Lcd Chr(1)
    
    
    
    '###############################################################################
    'Beginn 2ter Sensor
    
       1wreset                                                  'Reset i-Button
       1wwrite Match_rom
       1wwrite &H22
       1wwrite &H2F
       1wwrite &HC6
       1wwrite &H16
       1wwrite &H00
       1wwrite &H00
       1wwrite &H00
       1wwrite &H88
       1wwrite Read_ram                                         'lese Scratch Pad
    
    
       Lsb = 1wread()
       Msb = 1wread()
    
    
       'Temp = Scratch(2)                                        'MSB holen
       'Shift Temp , Left , 8                                    'Platz für LSB machen
       'Temp = Temp + Scratch(1)                                 'zu Word Format zusammenfügen
       'Temp1 = Temp                                             'Integer Format
       'Stemp = Temp1 / 16
    
       Temp = Msb                                               'MSB holen
       Shift Temp , Left , 8                                    'Platz für LSB machen
       Temp = Temp + Lsb                                        'zu Word Format zusammenfügen
       Temp1 = Temp                                             'Integer Format
       Stemp_2 = Temp1 / 16
    
       'Scratch(1) = 1wread()                                    'LSB und MSB holen
       'Scratch(2) = 1wread()
    
       'Temp = Scratch(2)                                        'MSB holen
       'Shift Temp , Left , 8                                    'Platz für LSB machen
       'Temp = Temp + Scratch(1)                                 'zu Word Format zusammenfügen
       'Temp1 = Temp                                             'Integer Format
      ' Stemp_a = Temp1 / 16
    
       Locate 2 , 1
       Lcd "T2:";
       Lcd Fusing(stemp_2 , "##.#");
       Lcd Chr(1)
    
    
    Loop

Berechtigungen

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