Forum: Mikrocontroller und Digitale Elektronik 1W und DS18S20


von Christian B. (chris001)


Angehängte Dateien:

Lesenswert?

Hallo Leute!

Ich weiß, es gibt 1000 Anleitungen und Beiträge zu diesem Thema. Aber 
ich weiß vor lauter Input nicht mehr wo mir der Kopf steht, deshalb 
finde ich den Fehler nicht.

Ich möchte ganz einfach einen DS18S20 auslesen und die Temperatur auf 
einem Display ausgeben. Ich bekomme im Display leider immer nur die 
Ausgabe "FF".

Der Bascomcode s. Anhang.

Danke schon mal!

von RS (Gast)


Lesenswert?

Hallo chris001,

Im Roboter-Netz Forum findest du sicherlich Listings und natürlich auch 
Abhandlungen zu deinem Problem.

mfg

RS

von Frank S. (_frank_s_)


Lesenswert?

Hallo Christian,

ohne lange zu probieren ist mir folgendes aufgefallen :

Waitus 200                                                  ' dem DS1820 
etwas Zeit zum Messen geben

Laut Datenblatt sollten da 750ms Zeit sein.

MfG Frank_S

von Cyblord -. (cyblord)


Lesenswert?

Von zuviel Copy&Paste ohne Verständnis wird man halt irgendwann wirr.

von Christian B. (chris001)


Lesenswert?

Hallo Frank!

Hab die Zeiten eben mal auf 800 gesetzt.
Leider immer noch keine Funktion.
Ich weiß nicht was ich da falsch machen.

Hab eben noch n Programm probiert wo ich leider nur noch die .hex Datei 
von hab. Das funktioniert. Hier werden sogar mehrere Sensoren Adresse 
ausgelesen und dann die Temperaturen angezeigt.

Das brauch ich ja hier nicht einmal. Ich möchte nur einen einzigen 
Sensor auslesen.

Mfg

Christian

von Frank S. (_frank_s_)


Lesenswert?

Hallo Christian,

ich habe gerade keinen Aufbau da, aber in meinen funktionierenden Quelle 
wird nur 1x 1wreset ausgeführt, nimm mal vorsichtig das 2. weg.
Wenn das auch nicht funktioniert mussich mal schnellwas aufbauen ...


MfG Frank_S

von Christian B. (chris001)


Lesenswert?

Hallo Frank!

Macht leider keinen Unterschied. Aber so wie ich das kenne muss man doch 
jedes mal wenn man ne neue Funktion auf dem Bus ausführt den vorher 
reseten.

Wenn es für dich kein zu großer Aufwand ist, eine Testschaltung 
aufzubauen, wäre das toll von dir.

Mfg

Christian

von Stefan (Gast)


Lesenswert?

HAst Du einen Pullup-Widerstand (4,7k)?

Setz mal Stackwerte:

$hwstack = 32        ' default use 32 for the hardware stack

$swstack = 10         'default use 10 for the SW stack

$framesize = 40          'default use 40 for the frame space

von Frank S. (_frank_s_)


Lesenswert?

Hallo Christian,

die gute Nachricht zuerst, dein Quelltext funktioniert mit den 
Stackwerten.
Wie hast du den DS18S20 angeschlossen ?

Vdd an +
GND an -
DQ an C.5 und über 4,7k Widerstand an Vdd ?

MfG Frank_S

von Nico K. (nkp)


Angehängte Dateien:

Lesenswert?

Hallo,

im Anhang befinden sich die entsprechenden Codes die ich 
verwende/verwendet habe um die Sensoren auszulesen.... beim ID auslesen 
hab ich einfach Spannungsversorgung per Krokoklemmen und den Sensor an 
den uC-Pin (hat geklappt :D) ... und beim auslesen der Temperaturen 
hängen aktuell die 7 Sensoren an einem Netzwerk (Stern/Reihe gemischt um 
Umkreis von 20m mit ISDN-Kabel (war noch da :D) ... verwende aber 
aufgrund der doch recht hohen Kapazität durch die vielen Kabel einen 2k 
Pull-Up...

Viel Spaß und Erfolg!

von Christian B. (chris001)


Lesenswert?

Hallo!

Also, wenn der Quelltext funktioniert, ist das ja schon mal schön.

Ich habe Pin 1 an GND, Pin 2 an c5, Pin 3 an +5V und ein Widerstand 4,7k 
zwischen Pin 2 c5 und +5V. Hab auch schon ohne Widerstand versucht oder 
mal mit 10k.

Ich werd mal noch schnell die Angaben von Stefan in den Kopf des 
Quelltexts einfügen.

Mfg

Christian

von Christian B. (chris001)


Lesenswert?

Hallo *.*!

Hab jetzt mal alles auf nem anderen Klemmbrett mit anderen Kabeln 
aufgebaut. Außerdem hab ich mal nen anderen Code in die "do loop" 
Schleife eingefügt.

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 , 1
 Shift Ar(1) , Right , 1
 Lcd Ar(1)
Loop

End

Leider ohne Erfolg.

Die Ausgabe im Display :

Zeile 1 FFFF
Zeile 2 127

Schulterzucken.

Mfg

Christian

von Stefan (Gast)


Lesenswert?

Wichtig ist, dass die Taktzahl tatsächlich stimt. Versuche es sonst 
einmal mit den internen 8 MHz

von Sascha W. (sascha-w)


Lesenswert?

Christian Betzen schrieb:
> Hallo *.*!
>
> Hab jetzt mal alles auf nem anderen Klemmbrett mit anderen Kabeln
> aufgebaut. Außerdem hab ich mal nen anderen Code in die "do loop"
> Schleife eingefügt.
>
> Do
>  1wreset
>  1wwrite &HCC
>  1wwrite &H44
>  1wreset
>  1wwrite &HCC
>  1wwrite &HBE
>  Ar(1) = 1wread(2)
>
>  Waitms 500

> Leider ohne Erfolg.
die Pause muss zwischen "ConvertC -0x44" und "ReadScratchpad -0xBE"
Vor der Ausgabe ist das Nutzlos. UND es sind immer noch weniger als 
750ms!

Sascha

von Christian B. (chris001)


Lesenswert?

Hallo *.*!

Also, ich habe mir eben mal schnell zwei neue DS18S20 bestellt. Weil ich 
mir nicht mehr ganz sicher war, ob nicht zwischenzeitlich die Dinger 
abgeraucht sind.

Ich hätte es mir sparen können. Die Lösung für das Problem ist die 
richtige Taktfrequenz!

Jetzt muss ich das nur noch alles in mein eigentliches Programm 
einfügen.

Danke an Alle, die sich um das Problem gekümmert haben.

Mfg

Christian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.