-         

Ergebnis 1 bis 8 von 8

Thema: Temperaturregelung mit DS1820

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    44
    Beiträge
    128

    Temperaturregelung mit DS1820

    Anzeige

    Hallo zusammen,

    ich beschäftige mich gerade mit 1-wire Bausteinen. Genauer gesagt mit dem DS1820 zur Temperaturmessung.
    Im Web habe ich eine passenden Code gefunden mit dem ich experimentieren kann.
    Code:
    $regfile = "m32def.dat"
    $crystal = 7372800
    
    ' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen
    Ddrd = &HFF
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.7
    Config Lcd = 16 * 2
    
    ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von Bascom durch Software realisiert
    Config 1wire = Portc.0
    
    Dim Ar(2) As Byte
    
    Cls
    
    Do
     1wreset
     1wwrite &HCC
     1wwrite &H44
     1wreset
     1wwrite &HCC
     1wwrite &HBE
     Ar(1) = 1wread(2)
    
     Waitms 500
     Locate 1 , 1
     Lcd Hex(ar(2)) ; Hex(ar(1))
     Locate 2 , 5
     Shift Ar(1) , Right , 1
     Lcd Ar(1)
    Loop
    
    End
    Der hier beschriebende Code läuft mit einem DS1820 an einem Port.
    Ich möchte nun einen zweiten an Port Portc.1 anschließen.

    Wie muss ich diesen im Programm einbauen?

    Schöne Grüße
    Daniel

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2006
    Ort
    Nidda
    Alter
    44
    Beiträge
    180
    Hallo Düsentrieb,

    du kannst, soviel ich weis, über Bascom nur einen Port als 1wire definieren

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.11.2006
    Ort
    K-Town
    Alter
    39
    Beiträge
    178
    es ist ja ein BUS ! also kannst an einen PIN mehrere 1Wire Bausteine dranhängen... fertig!

    um nun den richtig anzusprechen mußst du bevor du im Programm beginnst natürlich seine "Adresse" (bei 1Wire Bausteinen Seriennummer!) ausglesen werden.

    dann gibts verschiedene Befehle --> siehe Datenblatt DS1820 (z.B. skip ROM; readROM oder auch MatchRom!!)

    damit sprichst du dann explizit den Baustein an den du auch abfragen möchtest.

    um die Adressen übrigens auszulesen welche beim einschalten der Schaltung am BUS hängen verwendest du 1wsearchfirst bzw. 1wsearchnext!

    Zapo.

    siehe hier:
    http://www.pirnaer.de/bascom_fuer_my...ur_ds1820.html
    die Einen sagen so, die anderen sagen so....!

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    44
    Beiträge
    128
    das Auslesen der Adresse wollte ich mir gerne sparen da ich nur zwei Fühler anschließen möchte.
    Gehrt es nicht auch mit 2 Port's?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Ja, man kann auch nen zusätzlichen Pin als 2. 1Wire definieren. Siehe Handbuch.
    Das mit der Seriennummer ist allerdings sauberer...

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von stefan_Z
    Das mit der Seriennummer ist allerdings sauberer...
    Warum soll das "sauberer" sein?
    Es braucht weniger Ressourcen, das stimmt. Aber wenn er genügend davon hat und nur zwei Sensoren braucht, ist das vollkommen ok.
    Viele Leute haben Probleme mit Auslesen von mehreren Sensoren auf einem Pin.
    Config 1wire kannst du natürlich nur einmal angeben, aber wie Stefan gesagt hat, kannst du in jedem 1wire Befehl den Pin angeben, auf den er sich beziehen soll. Z.B.
    1wread(8 , Pinb , 2).

    Die Wartezeit musst du eigentlich nach dem Start der Konvertierung machen, direkt danach auslesen geht nicht.
    Allerdings kannst du das auch etwas eleganter machen, ohne extra Wartezeit. Wenn du das Ganze in einem größeren Programm machst und sowieso nur einmal jede Sekunde konvertierst, machst du die beiden Befehle anders herum, also erst auslesen, dann Konvertierung starten und nach einer Sekunde kommst du dann wieder an die Stelle, wo ausgelesen wird. Klaro?

    Gruß

    Rolf

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.10.2007
    Alter
    44
    Beiträge
    128
    oh super, dann muss ich mich da noch mal einlesen.

    Mal ne andere Frage zu gleichen Thema.
    Ich habe irgentwo mal gesehen, dass ein DS1820 Temperaturfühler über nur zwei Leiitungen betrieben wurde.
    GND und + waren auf Masse gelegt. Der Messausgang ging direkt auf einen Port.
    Geht sowas? Wenn ja, gibt es dafür auch ein Beispiel in Bascom?
    Recoursen auf dem Cip habe ich genügend. Mit den Leitungsverbindunegn hapert es allerdings

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Schau im Datenblatt.. da braucht man glaubich nen "Strong-Pullup" oder sowas und der DS ernährt sich dann von den parasitären Strömen der Busleitung...

Berechtigungen

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