-         

Ergebnis 1 bis 8 von 8

Thema: DS 18S20+ wo ist der Fehler?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53

    DS 18S20+ wo ist der Fehler?

    Anzeige

    Hallo,
    heute bekam ich meine DS18S20+ Bauteile von CSD. Ich habe mich auch gleich schlau gemacht wie ich eins richtig anschliesse und ansteuere. Leider bekomme ich als Ausgabe immer nur 255. Hier ist meine Schaltung:

    Code:
                    DS18S20+
                  -----------------
                  |                |
                  |________________|
                  |           |    |
                  |           |    |
                 /--|4,7k|----|     |
              5v              DQ    GND
    
    DQ geht an Portd.3
    Ich habe schon viele Codes ausprobiert. Dies ist der Aktuelle:

    Code:
    Config 1wire = Portd.3  
    ........
    
     Do
    Wait 1
    1wreset
    1wwrite &HCC
    Waitms 200
    1wreset
    1wwrite &H33
    Tar(1) = 1wread()
    1wreset
    Locate 2 , 10
    Temperatur = Tar(1)
    If Temperatur > 127 Then
    Lcd "-"
    Temperatur = 256 - Temperatur
    Else
    Lcd ""
    End If
    Lcd Temperatur;
    Lcd " C"
    Wait 1
    Loop Until Taster = 0
    Vielleicht weis einer Rat. Ist wahrscheinlich nur ein Anfängerfehler.
    Danke schonmal

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53
    Ich füge noch hinzu das ich einen Atmega88 auf 8mhz benutze mit einem angeschlossenen Display.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53
    Kann es sein das das '+' bei Ds18S20+ für Parasite steht?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Die DS18S20 mit denen ich bis jetzt zu tun hatte konnten immer beide Spannungsversorgungen nutzen.

    Was steht denn auf dem Gehäuse? Dallas schreibt glaube ich immer ein P hinter den Typ für Parasite.

    Deinen Wartezeit ist mit 200ms etwas kurz.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53
    Auf der Rückseite steht:

    Dallas
    DS1820
    (dann irgendeine Nummer)
    +440AE



    Um noch ins Detail zu gehen:
    ich habe den Pullup einfach zwischen DQ und Vdd Pin gelötet.
    Vdd geht dann an die 5V.DQ an den Pin und GND...
    Hab auch mal den kompletten Array voll gemacht kam aber für jeden Eintrag 255 raus. Muss ich evtl. noch nen search einbauen oder ein verify für den 1wire?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53
    Hab mal Reg_no(1) = 1wsearchfirst() eingebaut und es mir ausgeben lassen. Kommt aber nur 00000000 raus. Ist das Bauteil evtl. defekt?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53
    Es hat sich jetzt doch was herausgestellt:
    Der eine Temperatursensor war defekt. 2 andere hatten wir zunächst erstmal verpolt (was hoffentlich nicht schlimm ist) dann richtig herum eingebaut. Nun erhalten wir etwas was wie eine Id aussieht. Ein Problem bleibt haben wir nun noch. Der Temperatursensor zeigt immer das gleiche an und zwar 16. Auch wenn wir den Sensor erhitzen ändert sich nichts. Zudem bekommen wir mit einen anderen Sensor einen anderen Wert heraus. Haben die Sensoren einen Schlag weg? Oder fehlt etwas in der Messung?

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    12.03.2008
    Beiträge
    53
    Problem gelöst! Es lag an der Zeit. 750 ms haben es behoben. Hier der korrekte Code.


    Code:
    1wreset                                                     'reset the device
    1wwrite &HCC                                                'SKIP ROM command
    1wwrite &H44                                                'CONVERT T
    Waitms 750                                                  'read ROM command
    
    1wreset                                                     'reset the device
    1wwrite &HCC                                                'read ROM command
    1wwrite &HBE 'read ROM command
    'For I = 1 To 2
    Ar(1) = 1wread()                                            'place into array
    Ar(2) = 1wread()
    
    Shift Ar(1) , Right , 1
    
    Locate 1 , 1
    
    
    Lcd Ar(1) ; "." ; Hex(ar(1));
    
    Locate 2 , 1
    'Temperatur = Ar(1)
    
    Lcd Ar(2) ; "." ; Hex(ar(2));

Berechtigungen

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