Ich füge noch hinzu das ich einen Atmega88 auf 8mhz benutze mit einem angeschlossenen Display.
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:
Ich habe schon viele Codes ausprobiert. Dies ist der Aktuelle:Code:DS18S20+ ----------------- | | |________________| | | | | | | /--|4,7k|----| | 5v DQ GND DQ geht an Portd.3
Vielleicht weis einer Rat. Ist wahrscheinlich nur ein Anfängerfehler.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
Danke schonmal
Ich füge noch hinzu das ich einen Atmega88 auf 8mhz benutze mit einem angeschlossenen Display.
Kann es sein das das '+' bei Ds18S20+ für Parasite steht?
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.
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?
Hab mal Reg_no(1) = 1wsearchfirst() eingebaut und es mir ausgeben lassen. Kommt aber nur 00000000 raus. Ist das Bauteil evtl. defekt?
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?
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));
Lesezeichen