Hi,
wollte mal wissen ob du nun schon weiter gekommen bist weil ich sitze genau vor diesem Problem...
mfg
schally
Hallo an Alle!
Ich habe vor mit einem DS18S20 und einem PIC16F628A eine Temperaturabhängige Steuerung zu entwickeln. Ich hab mir dazu beim Conrad eine DS18S20 ausgesucht. Das Programm dazu möchte ich in Assembler verfassen. Der DQ Pin wird mit einem 4k7 Widerstand gegen +5V gezogen. Leider ist jetzt die ganze Sache mit dem Temperatur messen aufwändiger als ich sie mir vorgestellt hatte. Aber das ist ja immer so!
I hätte dazu jetzt ein paar Fragen, und zwar:
Erstens:
Ich hab mich heute intensiv mit dem Datenblatt auseinandergesetzt und bin zu folgendem Entschluss gekommen: Als erstes muss der PIC einen 480µs langen Resetimpuls (0V) schicken, danach ist die DQ Leitung wieder auf +5V. Anschließend antwortet der DS18S20 mit einem 60-240µs andauernden Precense Puls (0V). Danach ist die DQ Leitung wieder auf +5V und der DS18S20 ist aktiv. Anschließend muss man den Befehl READ-ROM [33h] zu dem DS18S20 schicken. Jeder Impuls muss min. 60µs andauern. Danach sendet der DS18S20 einen 64-Bit Code in welchem der 8-Bit Family Code, der 48-Bit Seriennummer und die 8 CRC-Bits stecken. Jetzt ist der DS18S20 bereit für Funktion Kommandos.
Jetzt schicke ich den Befehl CONVERT T [44h] zu dem DS18S20. Jeder Impuls muss wieder 60µs anliegen. Anschließend wertet der DS18S20 die Temp. aus und speichert sie im Scratchpad (Byte 0 u. 1). Das kann bis zu 750ms dauern. Anschließend muss der PIC den Befehl READ-SCRATCHPAD [BEh] zum DS18S20 schicken. Jetzt sendet der DS18S20 die Daten Binär, beginnend mit dem LSB bis zum MSB, zum PIC. Jeder Impuls liegt wieder 60µs an und zwischen den Impulsen ist eine Pause von 1µs zur Entprellung. Danach muss man sie auf dem PIC speichern und man hatt die aktuelle Temp. im Byte 0 u. 1 des Scratchpads stehen. Danach kann man sie weiterverarbeiten.
Meine Frage jetzt:
STIMMT DAS SO WIE ICH DAS VERSTANDEN HABE?
Zweitens:
Wie schicke ich mit einem PIC zum Beispiel den CONVERT T [44h] Befehl? Muss ich nur den Binärcode [01000100] zum DS18S20 schicken, wobei jedes Bit wieder 60µs anliegen soll und zwischen den Bits 1µs Pause sein soll? Oder wie genau funktioniert das?
Ich Danke euch schon jetzt für eure Mühe und Hilfe!
MFG Peter Holzer
Hi,
wollte mal wissen ob du nun schon weiter gekommen bist weil ich sitze genau vor diesem Problem...
mfg
schally
Hi,
Ja ich habe das Problem schon gelöst!
Es funktioniert genauso, wie ich es beschrieben habe!
Mfg Peter
hi,
hast du vvl noch den Code?
mfg
schally
Hi,
Könnte ich dir den Code per e-Mail schicken?
Wäre bequemer für mich.
Mfg Peter
Hi
habe dir meine Email Adresse per PN geschickt.
mfg
schally
Ich habe soeben den ersten DS18S20 an einem Atmega8 in Betrieb genommen und es funktionierte unter Zuhilfenahme der BASCOM-Hilfe im RN-Wissen auf Anhieb. Temperaturanzeige in 0,5 grad-Schritten, alles ok.
Um nun die Genauigkeit zu erhöhen will ich die Bytes 7 und 8 nutzen. Leider fand ich dazu bisher kein BASCOM-Code, eine normale Formel würde mir jedoch auch reichen. Hat da jemand eine Quelle? VG Micha
Jetzt laufen auch Mehrere an einem Bus. Problemlos, dank den BASCOM-Codeschnipseln hier im RN-Wissen. Das Problem mit der höheren Genauigkeit mittel Byte 7 und Byte (hab die Bytes, wie in den Codeschnipseln von 1 gezählt) konnte ich durch Verendung von Variablenvielfchen des Formel aus dem Datenblatt und entsprechender Variablendimensionierung in Bascom lösen. VG Micha
Hi,
kannst du hier etwas von Deinem Bascom-Code reinstellen, damit man sieht was Du gemacht hast?
Hallo!
Sch... Rechtschreibreform!Das Problem mit der höheren Genauigkeit mittel Byte 7 und Byte (hab die Bytes, wie in den Codeschnipseln von 1 gezählt) konnte ich durch Verendung von Variablenvielfchen des Formel aus dem Datenblatt und entsprechender Variablendimensionierung in Bascom lösen. VG Micha
MfG
Rone
Lesezeichen